Edit online

通信报文

3 Mar 2025
Read time: 2 minute(s)

CANFD 通信报文类型包含数据帧、远程帧、错误帧、过载帧、间隔帧这五种类型。



1. CANFD 通信报文帧格式解析
1. CANFD 帧位定义

数据/远程帧

描述

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 位。

RRS

远程请求替换位,CANFD 取消了对远程帧的支持,用 RRS 位替换了 RTR 位,始终是显性位。

IDE

标识符扩展位,1 位长度,显示当前报文是标准格式(显性 0)还是扩展格式(隐性 1)。当某标准帧和扩展帧有相同基标识符时,标准帧将始终优先于扩展帧仲裁。

EDL

扩展数据长度位,始终是隐性位。Bosch 的 CANFD 规范(非 ISO )使用名称 EDL,而 CANFD ISO 规范使用名称 FDF 。两个名字都是同义词。

FDF

灵活数据速率格式,始终是隐性位,意义同 EDL 位。标准 ISO 帧采用 FDF 对该位进行描述。

RES

保留位,始终是显性位。

R1

保留位,始终是显性位。

R0

保留位,始终是显性位。

BRS

位速率切换,这个额外的位允许 CANFD 帧以两种不同的速率发送。如果 BRS 位为显性被发送,则后续所有位发送速率不变。如果 BRS 位为隐性,则在此位后帧格式将使用较高的位速率,直到并包括 CRC 分界符。

ESI

错误状态指示器,通常显性发送为主。如果 CANFD 帧发送节点变为被动错误,则该位将被隐性发送,指示发送方节点存在重要的通信问题。

DLC

数据长度代码, 4 位长度,包含 0 ~ 15 中任一数值。

Stuff count

填充计数由以下两个元素组成:
  • 格雷码计算(前 3 位):CRC 区域之前的填充位进行格雷码计算得到的值。
  • 奇偶校验(最后 1 位):通过格雷码计算后的值的奇偶校验(偶校验)。
对于 CANFD ISO 帧,填充计数作为 CRC 字段的一部分传输。对于 CANFD 非 ISO 帧,填充计数不是帧的一部分。此外,CRC 校验器对非 ISO 和 ISO 帧有不同的初始化。因此 ISO 和非 ISO 帧是不兼容的。

数据字节

表示数据帧的数据负载量,该字节数量应与 DLC 的值匹配。首先发送低位数据字节,各数据字节优先发送最高有效位。

CRC

对于 CAN 2.0,CRC 采用 15 位。

对于 CANFD,当传输数据为 16 字节或更少时,采用 17 位 CRC。当传输数据超过 16 字节时,采用 21 位 CRC。

CRC 分界符

分界符,1 位长度隐性位。

ACK 槽

应答槽,1 位长度,用于接收节点,表示是否已成功接收数据帧或远程帧。发送节点将在应答槽中发送一个隐性位,若接收到的帧无错误,则接收节点用一个显性位以示应答。

ACK 分界符

分界符,1 位长度隐性位。

EOF

帧结束,7 位长度隐性位,标志着数据帧或远程帧的结束。



2. 错误帧


3. 过载帧


4. 间隔帧