
【图解CAN总线】-4-详述CANFD和Classic CAN的Frame帧结构差异
目录1 Classic CAN标准帧结构1.1 SOF1.2 Arbitration field仲裁段1.3 Control field控制段1.4 Data field数据段1.5 CRC field1.6 ACK field1.7 EOF2 Classic CAN扩展帧结构2.1 与Classic CAN标准帧结构的差异2.1.1 Arbitration field差异2.1.2 Contro
目录
不管是Classic CAN Frame还是CANFD Frame,其帧结构都由以下7个段组成:
— SOF帧起始;
— arbitration field仲裁段;
— control field控制段;
— data field数据段;
— CRC field;
— ACK field;
— EOF.
1 Classic CAN标准帧结构
1.1 SOF
长度:1 Bit
默认显/隐性:显性
描述:
SOF(start of frame帧开始)应标记数据帧和远程帧的开始。只有当总线空闲时(总线空闲时是隐性电平),节点才发送 SOF。
1.2 Arbitration field仲裁段
长度:12 Bit。11位Base Identifier;1位RTR(remote transmission request远程发送请求);
默认显/隐性:不适用
描述:
在经典CAN标准帧(其中IDE位为显性)中,标识符位应表示为ID-28到ID-18。
1.3 Control field控制段
长度:6Bit。4位DLC(data length code 数据长度码);1位IDE(identifier extension flag标识符扩展标志),1位R0
默认显/隐性:不适用
描述:
在经典CAN标准帧中,RTR和IDE位作为显性发送。
R0位作为以后的扩展保留。接收方应接收隐/显性位作为保留位R0。在指定保留位的功能之前,发送方只能发送一个显性位。
1.4 Data field数据段
长度:由最多64 Bit组成。
默认显/隐性:不适用
描述:
数据的内容,一帧可发送0~8个字节的数据,MSB先发。
1.5 CRC field
长度:16 Bit。15位CRC sequence;1位CRC delimiter
默认显/隐性:不适用
描述:
1)CRC sequence
校验SOF、仲裁段、控制段、数据段,具体算法详见ISO 11898-1:2003。
2) CRC delimiter
CRC sequence后面应是由一个隐性位组成的CRC delimiter。
1.6 ACK field
长度:2 Bit。15位ACK slot;1位ACK delimiter
默认显/隐性:不适用
描述:
在ACK段中,发送方应发送两个隐性位。
1) ACK slot
所有收到匹配CRC sequence的节点都应在ACK slot内通过用显性位覆盖发送方的隐性位来发送ACK。
2) ACK delimiter
作为ACK字段的第二位的ACK delimiter应为隐性位。因此,ACK slot应被两个隐性位(CRC delimiter,ACK delimiter)包围。
1.7 EOF
长度:7 Bit。
默认显/隐性:隐性
描述:
每个数据帧和远程帧应由一个由七个隐性位组成的标志序列分隔,形成 EOF。
2 Classic CAN扩展帧结构
2.1 与Classic CAN标准帧结构的差异
2.1.1 Arbitration field差异
长度:31 Bit。29位Base Identifier;1位SRR(substitute remote request替代远程请求);1位IDE(identifier extension flag标识符扩展标志)
默认显/隐性:不适用
描述:
在经典CAN扩展帧中(其中IDE位为隐性),仲裁段应包括11位标准标识符(ID-28 到 ID-18)、18位标识符扩展(ID-17到ID-0),1位SRR 和1位IDE 位(两个位都是隐性)。
1)SRR位(仅限经典CAN扩展帧)
在经典CAN扩展帧中SRR位替代了经典CAN标准帧中的RTR位。发送方应仅发送隐性SRR位,但接收方应接受隐/显性SRR位。
2) IDE位
IDE位区分经典CAN标准帧(IDE位显性)和经典CAN扩展帧(IDE位隐性)。因此,需要解决经典CAN标准帧和经典CAN扩展帧的冲突,这两个帧具有相同的Base Identifier,使得经典CAN标准帧优先于经典CAN扩展帧。
2.1.2 Control field差异
长度:6Bit。4位DLC(data length code 数据长度码);1位R1;1位R0
默认显/隐性:不适用
描述:
在经典CAN扩展帧中,前两位R1和R0应保留以供将来扩展。接收方应接收所有组合中的隐性和显性位作为保留位。在指定保留位的功能之前,发送发送只能发送显性位。
3 CANFD标准帧结构
CANFD标准帧格式中的位发送顺序,最多16个数据字节:
CANFD标准帧格式中的位发送顺序,20到64个数据字节:
3.1 与Classic CAN标准帧结构的差异
3.1.1 Control field差异
长度:9 Bit。4位DLC(data length code 数据长度码);1位IDE;1位FDF;1位Res;1位BRS;1位ESI;
默认显/隐性:不适用
描述:
1)FDF Bit
该位区分经典CAN帧和CANFD帧。它在CANFD帧中是隐性的,在经典CAN帧中是显性的(FDF位对应于经典CAN标准帧中的R0位和经典CAN扩展帧中的R1位。)。
2)Res Bit
在CANFD帧中,它是为协议的未来扩展保留的。Res位应以显性方式传输。
当启用CANFD的接收器检测到Res位为隐性而不是预期的显性值时,应检测到协议异常事件(这是一个实现选项,详见ISO 11898-1:2015)。
3)BRS Bit
该位指示是否在FD帧内切换比特率。如果检测到该位为隐性,则比特率应从仲裁段的标准比特率切换到数据段的预配置数据比特率。单个网络中的所有CANFD帧中的BRS位不需要相同。经典CAN帧中不存在BRS位。
4)ESI Bit
该标志应由错误主动节点显性传输,并由错误被动节点隐性传输。经典CAN帧中中不存在ESI位。
5)DLC:
Frames |
Data length code |
Number of data bytes |
|||
DLC3 |
DLC2 |
DLC1 |
DLC0 |
||
Classical Frames and FD Frames |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
|
0 |
0 |
1 |
0 |
2 |
|
0 |
0 |
1 |
1 |
3 |
|
0 |
1 |
0 |
0 |
4 |
|
0 |
1 |
0 |
1 |
5 |
|
0 |
1 |
1 |
0 |
6 |
|
0 |
1 |
1 |
1 |
7 |
|
1 |
0 |
0 |
0 |
8 |
|
Classical Frames |
1 |
0 or 1 |
0 or 1 |
0 or 1 |
8 |
FD Frames |
1 |
0 |
0 |
1 |
12 |
1 |
0 |
1 |
0 |
16 |
|
1 |
0 |
1 |
1 |
20 |
|
1 |
1 |
0 |
0 |
24 |
|
1 |
1 |
0 |
1 |
32 |
|
1 |
1 |
1 |
0 |
48 |
|
1 |
1 |
1 |
1 |
64 |
3.1.2 CRC field差异
长度:22/ 26 Bit。4位Stuff count;17位(Byte Data Field <= 16)/21位(20 <= Byte Data Field <= 64)CRC sequence;1位CRC delimiter。
默认显/隐性:不适用
描述:
1) Stuff count
在 CANFD 帧中,Stuff count应位于CRC field的开头。它应由3位gray code中的stuff bit计数模8和奇偶校验位组成,如下表所示。
Stuff count |
Coding |
|||||||
Stuff bit count modulo 8 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Gray-coded with parity bit |
000 0 |
001 1 |
011 0 |
010 1 |
110 0 |
111 1 |
101 0 |
100 1 |
帧的发送器和接收器都应计算帧中第一个固定stuff bit之前的stuff bit数。发送方应在CRC field的开头,CRC sequence之前,发送它的stuff bit计数,编码为Stuff count。接收方应检查接收到的Stuff count是否与根据他们自己的stuff bit计数计算的值匹配。
2)CRC sequence
校验SOF、仲裁段、控制段、数据段,具体算法详见ISO 11898-1:2015。
3)CRC delimiter
CRC sequence后面应跟有CRC delimiter。在经典CAN帧中,CRC delimiter是一个隐性位。在CANFD帧中,CRC delimiter可能由一个或两个隐性位组成。发送方应仅发送一个隐性位作为CRC delimiter,但它应在开始acknowledge slot的从隐性到显性的边缘之前接受两个隐性位。接收方将在第一个CRC delimiter位之后发送其acknowledge bit。
注意:当CANFD帧到达CRC delimiter(的第一位)的采样点时,CAN实现从Data Field切换回Arbitration field。
3.1.3 ACK field差异
长度:2 Bit。15位ACK slot;1位ACK delimiter
默认显/隐性:不适用
描述:
在CANFD帧中,所有节点都应接受最多2位长的重叠ACK slot位的显性位作为有效的ACK,以补偿接收器之间的相移。
在经典CAN帧中,单个ACK slot位之后的显性位应被视为格式错误。
4 CANFD扩展帧结构
CANFD扩展帧格式中的位传输顺序,最多 16 个数据字节:
CANFD扩展帧格式中的位传输顺序,20 到 64 个数据字节:
4.1 与Classic CAN扩展帧结构的差异
同CANFD标准帧与Classic CAN标准帧结构的差异,这里不再重复描述。
4.2 与CANFD标准帧结构的差异
同Classic CAN标准帧与Classic CAN扩展帧结构的差异,这里不再重复描述。
5 结尾
获取更多“汽车电子资讯”和“工具链使用”,
请关注“汽车电子助手”(CSDN和微信公众号同名),做您的好助手。
更多推荐
所有评论(0)