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位的位置,因此在标准帧与扩展帧冲突时,通过标准帧优先于扩展帧这一途径解决。

IDE 位(扩展格式)
IDE 的全称是“识别符扩展位(Identifier Extension Bit)”
IDE 位属于:
     扩展格式的仲裁场 , 为“隐性”
     标准格式的控制场 ,为“显性” 

控制场(标准格式以及扩展格式)
    控制场由 6 个位组成。标准格式的控制场格式和扩展格式的不同。标准格式里的帧包括数据长度代码、IDE 位(为显性位,见上文) 、及保留位 r0。扩展格式里的帧包括数据长度代码和两个保留位:r1 和 r0。其保留位必须发送为显性,但是接收器认可“显性”和“隐性”位的组合。

https://blog.csdn.net/anew_moon/article/details/85621123

猜你喜欢

转载自www.cnblogs.com/zidingliu/p/12192502.html