CAN_帧
2015-05-08
CAN帧
15.2.1 CAN的基本概念
(1)报文(Messages)
总线上传输的信息即为报文,它们以若干个不同的固定格式发送,但长度受限。当总线空闲时,总线上任何单元均可发送新报文。
(2)信息路由(Information Routing)
在CAN系统中,CAN不对单元分配站地址,报文的寻址内容由报文的标识符指定。标识符不指出报文的目的地,但是这个数据的特定含义使得总线上所有单元可以通过报文滤波来判断该数据是否与它们相符合。
(3)位速率(Bit Rate)
即总线的传输速率。在一个给定的CAN系统中,位速率是唯一的,也是固定的。
(4)优先权(Priorities)
在总线访问期间,标识符定义一个静态的报文优先权。
5)远程数据请求(Remote Data Request)
当总线上某单元需要请求另一单元发送数据时,可通过发送远程帧实现远程数据请求。
(6)多主机(Multimaster)
总线空闲时,总线上任何单元都可以开始向总线上传送报文,但只有最高优先权报文的单元可获得总线访问权。
(7)仲裁(Arbitration)
总线空闲时,若同时有两个或两个以上单元开始发送报文,总线访问冲突运用逐位仲裁规则,借助标识符ID解决。
(8)错误标定和恢复时间(Error Signaling and Recovery Time)
任何检测到错误的单元会标志出已被损坏的报文。此报文会失效并将自动重传。如果不再出现错误,则从检测到错误到下一报文的传送开始为止,恢复时间最多为31位的时间。
(9)故障界定(Fault Confinement)
CAN单元能够把永久故障和短暂的干扰区别开来。
(10)连接(Connection)
CAN通信链路是一条可连接多单元的总线。理论上,总线上单元数目是无限制的,实际上,单元数受限于延迟时间和总线的电气负载能力。
(11)单通道(Single Channel)
CAN总线由单一通道组成,借助数据重同步实现信息传输。(12)总线数据表示(Bus Values)
CAN总线上有两种互补逻辑数值:显性(Dominant)电平和隐性(Recessive)电平。若显性位与隐性位同时发送,总线上数值将是显性。
(13)应答(Acknowledgment)
所有接收器对接收到的报文进行一致性检查。对于一致的报文,接收器给予应答;对于不一致的报文,接收器做出标志。
15.2.2 CAN总线的位数值表示与通信距离
CAN总线上用显性(Dominant)和隐性(Recessive)两个互补的逻辑值表示0和1。当在总线上出现同时发送显性位和隐性位时,总线上数值将出现显性。
15.2.3 报文传输和帧结构
报文传输由以下4个不同的帧类型表示和控制:
数据帧:数据帧将数据从发送器传输到接收器。
远程帧:总线单元发出远程帧,请求发送具有同一标识符的数据帧。
错误帧:任何单元检测到总线错误就发出错误帧。
过载帧:过载帧用于在先行和后续数据帧(或远程帧)之间提供一附加的延时。
数据帧和远程帧可以使用标准帧及扩展帧两种格式。它们用一个帧间空间与前面的帧分隔。
(1)数据帧
数据帧由7个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC 场、应答场、帧结尾。数据帧组成如下图。
(2)远程帧
远程帧也有标准格式和扩展格式,而且都由6 个不同的位场组成:帧起始、仲裁场、控制场、CRC 场、应答场、帧结尾。远程帧的组成如下图。
(3)出错帧
错误帧由两个不同的场组成。第一个场是由不同站提供的错误标志(ERROR FLAG)的叠加;第二个场是错误界定符。出错帧的组成如下图。
(4)过载帧
过载帧包括两个位场:过载标志和过载界定符。过载帧的组成如下图。
15.2.4 错误处理
1)错误检测( 5种不同的错误类型)
位错误:单元在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相同,则在位时间里检测到一个位错误。
填充错误:如果在使用位填充法进行编码的信息中,出现了6个连续相同的电平时,将检测到一个填充错误。
CRC错误:CRC序列包括发送器的CRC计算结果。如果计算结果与接收到的CRC序列的结果不相符,则检测到一个CRC错误。
形式错误:当一个固定的位场含有1个或多个非法位,则检测到一个形式错误。
应答错误:只要在应答间隙期间所监视的位不为显性,则发送器会检测到一个应答错误。
2)错误标定
检测到错误条件的站通过发送错误标志指示错误。对于“错误主动”的节点,错误信息为“主动错误标志”,对于“错误被动”的节点,错误信息为“被动错误标志”。
15.2.5 故障界定
至于故障界定,单元的状态可能为下列三种之一:错误主动、错误被动、总线关闭。
错误主动的单元可以正常地参与总线通信并在检测到错误时发出主动错误标志。
错误被动的单元不允许发送主动错误标志。错误被动的单元参与总线通信,在错误被检测到时只发送被动错误标志。而且,发送以后,错误被动单元将在初始化下一个发送之前处于等待状态。
总线关闭的单元不允许在总线上有任何的影响。
15.2.6 位定时与同步
位定时与同步定义CAN总线的通信速率,相关名词有:
标称位速率(Nominal Bit Rate):一理想的发送器在没有重新同步的情况下每秒发送的位数量。
标称位时间(Nominal Bit Time):1/标称位速率。标称位时间可分成几个不重叠的片段,分别是:同步段(SYNC_SEG)、传播段(PROG_SEG)、相位
缓冲段1(PHASE_SEG1)、相位缓冲段2(PHASE_SEG2)。
同步段(SYNC_SEG):用于同步总线上不同的节点,这一段内要有一个跳变沿。
传播段(PROG_SEG):用于补偿网络内的物理延时时间。它是总线上输入比较器延时和输出驱动器延时总和的2倍。
相位缓冲段1(PHASE_SEG1)、相位缓冲段2(PHASE_SEG2):用于补偿边沿阶段的误差。这两个段可以通过重新同步加长或缩短。
采样点(Sample Point):读总线电平并解释各位的值的一个时间点。采样点位于相位缓冲段1之后。
信息处理时间(Information Processing Time):信息处理时间是以一个采样点作为起始的时间段。采样点用于计算后续位的位电平。
时间份额(Time Quanta):时间份额是派生于振荡器周期的固定时间单元。存在一个可编程的预比例因子,将整体数值范围为1-32的整数,以最小时间份额为起点,时间份额的长度为:
时间份额=m * 最小时间份额,其中,m为预比例因子
时间段长度(Length of Segments):同步段为1个时间份额,传播段的长度可设置成1、2…8个时间份额,相位缓冲段1的长度可设置成1、2…8个时间份额,相位缓冲段2的长度为相位缓冲段1和信息处理时间之间的最大值,信息处理时间少于或等于2个时间份额。
一个位时间总的时间份额值可以设置在8~25的范围。