问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

CAN总线协议:数据帧

创作时间:
作者:
@小白创作中心

CAN总线协议:数据帧

引用
CSDN
1.
https://blog.csdn.net/wojiaxiaohuang2014/article/details/136877953

CAN总线协议提供了5种帧格式来传输数据:数据帧、遥控帧、错误帧、过载帧和帧间隔。其中数据帧和遥控帧有标准格式和扩展格式两种,标准格式有11位标识符(ID),扩展格式有29位标识符(ID)。

数据帧

数据帧由7段组成:

  1. 帧起始:表示数据帧开始的段。
  2. 仲裁段:表示该帧优先级的段。
  3. 控制段:表示数据的字节数及保留位的段。
  4. 数据段:数据的内容,一帧可发送0~8个字节的数据。
  5. CRC段:检查帧的传输错误的段。
  6. ACK段:表示确认正常接收的段。
  7. 帧结束:表示数据帧结束的段。

1. 帧起始

帧起始很简单,标准格式和扩展格式都是由一个位的显性电平0来表示帧起始。

2. 仲裁段

仲裁段表示帧优先级,仲裁段结构如下图所示:

标准格式和扩展格式的仲裁段不同,从上图可以看出,标准格式的ID为11位,发送顺序是从ID10到ID0,最高7位ID10~ID4不能全为隐性(1),也就是禁止 0X1111111XXXXX这样的ID。扩展格式的ID为29位,基本ID从ID28到ID18,扩展ID由ID17到ID0,基本ID与标准格式一样,禁止最高7位都为隐性。

3. 控制段

控制段由6个位构成,表示数据段的字节数,标准格式和扩展格式的控制段略有不同,如下图所示:

上图中r1和r0为保留位,保留位必须以显性电平发送。DLC为数据长度,高位在前,DLC段有效值范围为0~8。

4. 数据段

数据段也就是帧的有效数据,标准格式和扩展格式相同,可以包含0~8个字节的数据,从最高位(MSB)开始发送,结构如下图所示:

注意,上图中数据段的064为bit,对应到字节就是08字节。

5. CRC段

CRC段保存CRC校准值,用于检查帧传输错误,标准格式和扩展格式相同,CRC段结构如下图所示:

可以看出,CRC段由15位的CRC值与1位的CRC界定符组成。CRC值的计算范围包括:帧起始、仲裁段、控制段、数据段,接收方以同样的算法进行计算,然后用计算得到的CRC值与此CRC段进行比较,如果不一致的话就会报错。

6. ACK段

ACK段用来确认接收是否正常,标准格式和扩展格式相同,ACK段结构如图66.1.3.6所示:

可以看出,ACK段由ACK槽(ACK Slot)和ACK界定符两部分组成。

发送单元的ACK,发送2个隐性位,而接收到正确消息的单元在ACK槽(ACK Slot)发送显性位,通知发送单元正常接收结束,这个过程叫发送ACK/返回ACK。

发送ACK的是所有接收单元中接收到正常消息的单元,所谓正常消息是指不含填充错误、格式错误、CRC错误的消息,这些接收单元既不处于总线关闭态,也不处于休眠态的所有接收单元中。

7. 帧结束

最后就是帧结束段,标准格式和扩展格式相同,帧结束段结构如下图所示:

可以看出,帧结束段很简单,由7位隐性位构成。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号