当前位置:   article > 正文

CAN总线技术 | 数据链路层02 - 帧结构_can通讯中什么是帧结构

can通讯中什么是帧结构

一、前言


一个标准的数据帧由以下组成:

  1. 帧开始
  2. 仲裁段
  3. 控制段
  4. 数据段
  5. CRC段(校验)
  6. ACK段
  7. 帧结束
    以上的元素,缺一不可,否则没法通过CAN控制器的校验,应用程序无法获取CAN报文。

二、帧开始


帧起始由1个显性位(逻辑0)组成,用于CAN总线上各个CAN节点的同步。在CAN总线空闲时,总线是隐性(1)。由于CAN总线是电平逻辑是"线与原理",所以当其中一个CAN节点发送帧起始(显性0),CAN总线会从隐形1变成显性0,各个节点进行同步
在这里插入图片描述

三、仲裁段


标准帧与拓展帧在这里有区别,CANID的过滤器与CANID的优先级都在仲裁段完成。在STM32的CAN控制与FDCAN控制上,发送CAN报文之前需要对RTR寄存器赋值,表示即将发送的CAN报文是标准帧还是远程帧。
实际工作上,分配CAN_ID时(或者Node_ID)时需要从仲裁段思考。哪些CAN节点的通讯优先级比较高,通讯优先级高的CAN节点配置较小的CAN_ID(或者Node_ID)。
在这里插入图片描述

四、控制段


标准帧与拓展帧在这里有区别,DLC规定了数据段的长度。在STM32的CAN控制与FDCAN控制器,发送CAN报文之前需要对DLC寄存器赋值,表示即将发送的CAN报文的数据段有多少个字节。
其中DLC段需要应用程序控制,决定数据段有多少个字节的数据。
在这里插入图片描述

五、数据段


数据段比较简单,最大8个字节(当DCL设置8时)。当DCL设置0时,数据段为0个字节。
应用程序的大部分工作都是处理数据段里的数据。
在这里插入图片描述

六、CRC段(校验)


校验的算法由CAN控制器完成,应用程序不用管它,了解一下即可。
在这里插入图片描述
校验的流程是发送端先计算CRC值,接收端接着也计算CRC值。如果接收端发现CRC值不对,接着就会产生CRC校验错误。
在这里插入图片描述

七、ACK段(应答段)


当没有CAN节点应答时,ACK段为隐性(1),当有CAN节点应答时,ACK段位显性(0)。
在这里插入图片描述

八、帧结束


帧结束由7个隐性位组成。
在这里插入图片描述

九、帧间隔ITM

1个隐性位(ACK界定符)+7个隐性位(帧结束)+3个隐性位(帧间隔ITM) = 11个隐性位。11个隐形位后,CAN总线进入空闲状态。
在这里插入图片描述

十、一个数据段长度为8的标准帧,总共多少个位呢?是108位吗?

答案是不止108位,因为还需要考虑位填充(连续5个相同位后,CAN控制器会填入一个相反的位)。
在这里插入图片描述
一般CAN示波器就能捕捉到位填充。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/88564
推荐阅读
相关标签
  

闽ICP备14008679号