发布时间:2023-04-04 11:00
CAN通信有五个帧,其中最重要的是数据帧!!!!
我们下面开始讨论数据帧
一。数据帧的格式(数据帧有七个段组成)
①,帧起始
表示数据帧开始的段
②,仲裁段
表示该帧优先级的段
③,控制段
表示数据的字节数及保留位的段
④,数据段(一个帧最多可以发送八个字节)
数据的内容,一帧可发送0~8个字节的数据
⑤,CRC段
检查帧的传输错误的段
⑥,ACK段
表示确认正常接收的段
⑦ ,帧结束
表示数据帧结束的段
二。数据帧的构成
三。数据帧解析
1.帧起始
标准帧和扩展帧都是由1个位的显性电平表示帧起始
2.仲裁段 (表示数据优先级的段)
标准帧和扩展帧格式在本段有所区别,区别如图所示
注意:
(1) ID:高位在前,低位在后
(2) 基本ID,禁止高7位都为隐性,即不能:ID=1111111XXXX
(3) RTR,远程请求位。0,数据帧;1, 远程帧
(4) SRR,替代远程请求位。设置为1(隐性电平)
(5) IDE,标识符选择位。0,标准标识符;1,扩展标识符
3.控制段(表示数据段的字节数)
由6个位构成,表示数据段的字节数。
标准帧和扩展帧的控制段稍有不同,如图所示,
注意:
(1) r0,r1:保留位。
必须以显现电平发送,但是接收可以是隐性电平
(2) DLC:数据长度码。
0~8,表示发送/接收的数据长度(字节)
(3) IDE,标识符选择位。
0,标准标识符
1,扩展标识符
4.数据段
该段可包含0~8个字节的数据,从最高位(MSB)开始输出。标准帧和扩展帧在这个段的格式完全一样
5.CRC段(该段用于检查帧传输错误)
(1)由15个位的CRC顺序和1个位的CRC界定符(用于分隔的位)组成
(2) 标准帧和扩展帧在这个段的格式也是相同的
(1)CRC的值计算范围包括:帧起始、仲裁段、控制段、数据段
(2)接收方以同样的算法计算 CRC 值并进行比较,不一致时会通报错误。
6.ACK段(此段用来确认是否正常接收)
(1)ACK段是由ACK槽(ACK Slot)和ACK界定符2个位组成
(2)标准帧和扩展帧在这个段的格式也是相同的
(3)ACK的各个段
发送单元ACK段:发送2个隐性位
接收单元ACK段:接收到正确消息的单元,在ACK槽发送显性位,通知发送单元,正常接收结束
称之为发送ACK/返回ACK
注意:发送 ACK 的是既不处于总线关闭态也不处于休眠态的所有接收单元中,
接收到正常消息的单元(发送单元不发送ACK)。
正常消息是指:不含填充错误、格式错误、CRC 错误的消息
7,帧结束。
(1)由7个位的隐性位组成。
(2)标准帧和扩展帧在这个段格式完全一样。