CAN总线知识总结(二)之数据帧及遥控

CAN总线传输的是CAN帧,CAN的通信帧分为五种类型的帧结构,分别为:(1)数据帧;(2)遥控帧;(3)错误帧;(4)过载帧;(5)帧间隔。

其中错误帧、过载帧、帧间隔都是由硬件完成的,没有办法用软件来控制。因此对于一般使用者来说,只需要掌握数据帧与遥控帧即可。数据帧和遥控帧的帧结构非常相似,故在一起学习。

根据标识符的长度,数据帧和遥控帧都可以分为标准帧(2.0 A)和扩展帧(2.0 B)。标准帧只有11位标识符(ID),而扩展帧具有29位标识符。数据帧的帧结构有7个段,包括帧起始仲裁段、控制段、数据段、CRC段、ACK段和帧结束,而遥控帧的帧结构仅缺少数据段

下面进行标准数据帧与扩展数据帧的对比:

通过比较发现:标准数据帧和扩展数据帧的仲裁段和控制段所包含的内容不同,需要注意。而且如果标准ID相同,由于远程发送请求位是显性的,而替代远程请求位是隐性的,所以标准数据帧的优先级高于扩展数据帧。

1.1 帧起始

帧起始(SOF, Start of Frame),显性(即逻辑0)表示报文的开始,并用于同步总线上的节点。它表示CAN_H和CAN_L上有电压差了,即有数据。

1.2 仲裁段

(1)标准数据帧的仲裁段包括标识符(ID,Identifier)和远程发送请求位 (RTR,Remote Transmission Request )。

标识符ID:标准CAN总线具有11位标识符,用于确定报文的优先级。高七位(ID10-ID4)不能全为隐性位1(显0隐1)。

当总线空闲(即隐性电平为1)时,总线上任何一个节点都可以向总线发送报文。若两个或两个以上的节点向总线发送报文时,就会出现总线访问冲突。CAN总线采用“非破坏性逐位仲裁机制”使具有优先权的报文优先发送,而低优先级的节点主动退出发送而主动处于单纯监听方式。此域的数值越小,优先级越高。

远程发送请求位RTR:RTR用来区分该帧是数据帧还是远程帧。当RTR为逻辑0时,代表该帧为数据帧;当RTR为逻辑1时,代表该帧为远程帧。同时,也保证了数据帧的优先级高于远程帧。当需要从另一个节点请求信息时,此位为隐性(即逻辑1)。所有节点都能接收这个请求,但帧ID确定被指定的节点。

(2)扩展数据帧的仲裁段,在基本标识符ID(ID28-ID18)和远程发送请求位RTR之间插入了替代远程请求位SRR,标识符扩展帧IDE,扩展标识符ID(ID17-ID0)三部分。

替代远程请求位SRR,SRR是一个隐性位1。它对应标准帧的远程发送请求位RTR位,在标准数据帧中RTR位是显性位0,即标准数据帧的优先级高于扩展数据帧。

标识符扩展位IDE,对于扩展帧,IDE属于仲裁段;对于标准帧,IDE属于控制段。此位为显性位0时,表示这是一个标准帧;此位为隐性位1时,表示这是扩展帧。

1.3 控制段

保留位r0,用于后期标准修订会使用,其保留位必须发送为显性,但是收发器认可“显性”和“隐性”位的任何组合。

DLC-4位数据长度代码,代表传输数据的字节数目,一帧CAN报文最多传输8字节用户数据

1.4 数据段

一帧CAN报文可以0-8字节数据,最多传输8字节用户数据。

1.5 CRC段

CRC段,Cyclic Redundancy Check,为循环冗余校验,其包括CRC校验序列和CRC界定符。

CRC校验序列是根据多项式运算生成的CRC值,其计算范围包括:帧起始、仲裁段、控制段和数据段。

CRC循环冗余校验的过程:

在CRC校验中,遵循原则是异或运算,即 相同为0;相异得1。

(1)展开多项式获得CRC除数。  如:x6+x4+x2+x+1,除数为1010111。

(2)在原始数据后加“0”,多项式的阶数是多少就加几个0。多项式:的阶数为6,所以应该在原数据后加6个“0”,即数据串为:1101011011 000000,除数为1010111。

(3)计算校验数据:将数据串第一个1与除数左对齐,重复操作,直到所有数据都处理过。

1101011011000000

1010111                         

0111100011000000

  1010111                        

  010111111000000 

    1010111        

    00010001000000

          1010111            

          00100110000

              1010111       

              001101100

                  1010111

                  0111011

所得到的数据结果即为CRC校和,将校验和加在数据项之后即为带有CRC校验的数据。

CRC界定符恒为隐性1。

1.6 ACK段

ACK,Acknowledgement,为应答,其包括应答位和应答位界定符。在接收器确认之前,ACK两位是隐性位。当接收器正确地接收到有效的报文,接收器会在应答位期间向发送节点发送一个显性位,表示应答。如果接收器发现这帧数据有错误,则不向发送节点发送ACK应答,发送节点会稍后重传这帧数据。

1.7 帧结束

EOF(End of Frame),是7位帧结束标志位,全部为隐性位。如果这七位出现显性位,则会引起填充错误。

IFS-7位帧间隔标志位,CAN控制器将接收到的帧正确地放入消息缓存区。

  • 15
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值