通信报文
CAN 通信报文类型包含数据帧、远程帧、错误帧、过载帧、间隔帧这五种类型。
数据/远程帧 |
描述 |
|---|---|
SOF |
帧起始,一位长度,用于同步总线上节点的单个显性位。 |
ID-A |
标识符 A,11 位长度,对应标准格式中的 11 位标识符 (ID10~ ID0),或扩展格式中 29 位标识符的前 11 位 (ID28~ ID18)。 |
ID-B |
标识符 B,18 位长度,扩展格式中 29 位标识符的剩余 18 位 (ID17 ~ ID0)。 |
RTR |
远程发送请求位,1 位长度,显示当前报文是数据帧 (显性 0)还是远程帧 (隐性 1)。当某个数据帧和一个远程帧有相同标识符时,数据帧始终优先于远程帧仲裁。 |
SRR |
代替远程发送请求位,1 位长度,在扩展格式中以替代标准格式相同位置的 RTR 位。 |
IDE |
标识符扩展位,1 位长度,显示当前报文是标准格式 (显性 0)还是扩展格式 (隐性 1)。当某标准帧和扩展帧有相同基标识符时,标准帧将始终优先于扩展帧仲裁。 |
RES |
保留位,始终是显性位。 |
R1 |
保留位,始终是显性位。 |
R0 |
保留位,始终是显性位。 |
ESI |
错误状态指示器,通常显性发送为主。如果 CANFD 帧发送节点变为被动错误,则该位将被隐性发送,指示发送方节点存在重要的通信问题。 |
DLC |
数据长度代码, 4 位长度,包含 0 ~ 15 中任一数值。 |
数据字节 |
表示数据帧的数据负载量,该字节数量应与 DLC 的值匹配。首先发送低位数据字节,各数据字节优先发送最高有效位。 |
CRC |
对于 CAN 2.0,CRC 采用 15 位。 对于 CANFD,当传输数据为 16 字节或更少时,采用 17 位 CRC。当传输数据超过 16 字节时,采用 21 位 CRC。 |
CRC 分界符 |
分界符,1 位长度隐性位。 |
ACK 槽 |
应答槽,1 位长度,用于接收节点,表示是否已成功接收数据帧或远程帧。发送节点将在应答槽中发送一个隐性位,若接收到的帧无错误,则接收节点用一个显性位以示应答。 |
ACK 分界符 |
分界符,1 位长度隐性位。 |
EOF |
帧结束,7 位长度隐性位,标志着数据帧或远程帧的结束。 |
