CAN总线之报文解析

发布于:2021-06-23 00:39:55

上一节中初步接触CAN总线,梳理了一些关于CAN总线的基础内容。本节将深入了解CAN总线的结构,包括报文的组成,内容和处理形式。
另外这一片文章,对CAN报文的结构解析的非常明确,可以先通过这篇文章了解一下,后面在对其进行总结。


看到一个关于CAN总线工作原理非常形象的一个比喻:
和其他总线一样,CAN总线的通信也是通过一种类似于“会议”的机制实现的,只不过会议的过程并不是由乙方(节点)主导,而是每一个会议参加人员都可以自由的提出会议议题(多主通信模式),二者对应关系如下:


CAN报文协议

CAN协议是通过以下5种类型的帧进行的:


    数据帧:用于发送单元想接收单元传送数据的帧遥控帧:用于接收到单元向具有相同ID的发送的单元请求数据的帧。错误帧:用于当检测出错误时想其他单元通知错误的帧过载帧:用于接收单元通知其他尚未做好准备的帧间隔帧:用于将数据帧和遥控帧与前面的帧分离开来的帧。

CAN协议支持两种报文格式,其唯一的不同是标识符长度不同,标准格式为11位,扩展格式为29位。数据帧和遥控帧包含这两种格式。
数据帧一般有7个段构成:
帧起始??表示数据帧开始的段
仲裁段??表示该帧优先级的段,由远程传输请求位(RTR)组成,RTR标明是数据帧还是请求帧,请求帧没有数据字节;
控制段??表示数据的字节数及保留位的段,包含标识符扩展位(IDE),指出是标准格式还是扩展格式。还包括一个保留位(用于将来扩展)。最后四个位用来指明数据场中的数据的长度(DLC)
数据段??数据的内容,一个帧可以发送0?8个字节的数据
CRC段??检查帧的传输错误的段、
ACK段??确认可以正常接收的段,包括应答位和应答分隔符。均为隐形电*(逻辑1)
帧结束??表示数据帧结束的段。
如下图,是数据帧的构成:


标准格式的数据段:识别符(ID)的长度 为11位,这些为按ID28到ID18的顺序发送,最低位是ID18, 7个最高位(ID28-ID22)不能全是隐形;
扩展格式的数据段:标识符长度为29位,是在标准标识符的基础上增加18位扩展符,可以分为11位的基本ID和18位的扩展ID,基本ID按ID28?ID18的顺序发送,基本ID定义扩展帧的基本优先权。
扩展ID包含18位,按照ID17?ID0顺序发送。
RTR位:在标准帧里识别符后面是RTR位,其在数据帧里必须全是显性,在请求帧里必须全是隐性
SRR位(扩展格式):替代远程请求位(substitute remote request bit),是一个隐性位,带替扩展格式中标准帧的RTR位的位置,因此在标准帧与扩展帧冲突时,通过标准帧优先于扩展帧这一途径解决。


CAN总线的工作原理(流程图):


参考:
https://wenku.baidu.com/view/ef57d00502020740be1e9b7f.html?sxts=1546419950698
https://wenku.baidu.com/view/7c6e8c3c50e2524de4187e53.html?rec_flag=default&sxts=1546419708212
https://www.cnblogs.com/spoorer/p/6649303.html

相关推荐

最新更新

猜你喜欢