【CAN总线通信之数据帧】

CAN总线以“帧(Frame)”形式进行通信。“数据帧(Data Frame)”,顾名思义,是用来传输数据的。CAN总线的数据帧有标准格式(Standard Format)和扩展格式(Extended Format)的区分,标准帧的格式如下图:

 

数据帧可以分为七段:

1)帧起始(Start Of Frame-SOF): 1bit,固定为显性位,即逻辑0,表示数据帧(或远程帧)的开始。帧起始只有在总线空闲期间节点才能够发送。

  作用:用于同步,总线空闲期间的任何隐性到显性的跳变都将引起节点进行硬同步

2)仲裁段(Arbitration Field):包括两部分:标识符位(Identifier field-ID)和远程发送请求位(Remote Transfer Request-RTR)。而扩展帧在标准帧的基础上,则多了SRR和IDE

  • 标识符位,是一个功能性的地址(Functional address),CAN接收器通过标识符来过滤数据帧。标准格式的数据帧的标识符(CAN-ID)长度为11位(11 bits),ID10~ID0,ID10为最高权重位(MSB),ID0为最低权重位(LSB),按照ID10~ID0的顺序进行传输。CAN协议还规定:前7位最高权重位(ID10~ID4)不能都为“隐性”信号。
  • 远程发送请求位,简称“RTR”,1 bit。虽然这个位的名字很长,但它的功能很简单,用于区分该帧是数据帧还是远程帧:“显性信号(0)”代表数据帧(Data Frame);“隐性信号(1)”代表远程帧(Remote Frame)。
  • RTR作用:在ID相同的情况下,保证数据帧优先级高于远程帧

      作用:仲裁场主要作用在于区分哪个节点更优先,让更优先的节点掌握发送权,其他节点在静默等待总线空闲再进行下一回合的仲裁。

 仲裁过程:在CAN总线中有一种回读机制,指节点在发送到总线报文的同时也对总线上当前的报文进行回读(为了判断自己发出的东西与总线上的东西是否一致);

 还有一种线与机制,指总线上接收到多节点报文时,显性位(逻辑0)能覆盖隐形位(逻辑1)

3)控制段(Control Field):包括6个位(6 bits),分别是扩展标识符位(Identifier Extension bit-IDE,1 bit);保留位0(Reseved bit0-r0,1 bit);数据长度编码位(Data Length Code-DLC,4 bits),如下图:

说明:数据帧和远程帧的控制段结构相同

IDE:扩展标识符,用来表示该帧是标准格式还是扩展格式

r/r1和r0:保留位,必须以显性,即逻辑0发送

DLC:代表数据场的数据长度(byte),对没有数据场的远程帧,DLC表示该远程帧对应的数据帧的数据场的字节数;DLC编码规则如下:(其中“d”表示显性信号;“r”表示隐性信号;)

 4) 数据段(Data Field):发数据场就是我们节点携带的数据,需要相互交互的数据信息,0-64位,具体数据长度由控制场DLC决定

 数据场里低字节先发(Byte0....Byte7)

            每个字节是高位先发(Bit7....Bit0)

            超过一个字节的数据可以把低有效位放在前(Intel格式),也可以把高有效位放在前(Motorola格式)

 5CRC场:CRC场包含CRC校验序列(CRC Sequence)和CRC界定符DEL(恒为隐形,即逻辑1),通过多项式生成CRC值,比较发送节点与接受节点CRC是否一致,来确保帧的有效性,计算范围包括发送节点【帧起始、仲裁场、控制场、数据场】是否与接收节点【帧起始、仲裁场、控制场、数据场】是否一致

6) 确认段(ACK Field):包括ACK槽(ACK SLOT)和界定符(Delimiter,DEL)两位,表示确认是否正常接收。

7) 帧结束(End of Frame-EOF):7位(7 bits),隐性信号,表示帧的结束。

说明:固定7个隐性位,即逻辑1构成 

帧间隔

说明:固定为3个隐形位,即逻辑1构成。

  当连续11位为隐性时,总线为空闲状态,节点可发送帧起始来让总线忙碌起来,接着就开始仲裁,又是一个忙碌的小总线

 扩展帧仲裁段多的SRR和IDE:   

<<SRR:在扩展帧中(数据帧或远程帧),SRR横为隐性,即逻辑1,扩展帧的SRR位刚好对上标准帧的RTR位。

SRR作用:在前11位ID相同的情况下,标准数据帧优先级高于扩展数据帧。

    IDE:在扩展帧中恒为隐性,即逻辑1; 在数据帧中IDE位于控制段,且横为显性,即逻辑0;刚好标准帧的IDE和扩展帧的IDE位置对应上

IDE作用:在前11位ID相同的情况下,标准远程帧优先级高于扩展远程帧。>>

扩展帧控制段与标准帧不同的是:

扩展帧有两个保留位r1 和r0,这两个保留位均需要发送显性信号;

CAN协议规定了好几种帧类型,但是对于我们应用来说,只有数据帧和远程帧可以通过软件编程来控制。(其他几种帧都是由CAN控制器硬件实现的,我们也管不了)。而数据帧和远程帧最大的区别在于:远程帧没有数据域。数据帧分为标准数据帧和扩展数据帧,它们之间最大的区别在于:仲裁场的不同。

CAN总线的升级版本:百度安全验证​​​​​​

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值