EXPLAINER / SVG ANIMATION

拆开一个 CAN 数据帧

逐字段动画拆解标准 CAN 数据帧:SOF、仲裁场、控制场、数据场、CRC、ACK 与帧结束,看懂每一位的作用。

可播放 / 暂停 / 单步 / 重放 汽车电子 SVG
INTERACTIVE SIMULATION / CanFrame
STD DATA FRAME / BIT STREAM → 1 1b SOF 2 11b Arbitration ID 3 1b RTR 4 1b IDE 5 1b r0 6 4b DLC 7 64b Data 0–8 bytes 8 15b CRC sequence 9 1b CRC delimiter 10 1b ACK slot 11 1b ACK delimiter 12 7b EOF

点击播放,逐个字段查看标准 CAN 数据帧

原理拆解

一帧长什么样

标准 CAN 数据帧(11 位 ID)从总线空闲开始,按位流依次发送:

字段位数作用
SOF1显性位,标志帧开始并完成硬同步
仲裁场 ID11报文标识符,同时决定优先级
RTR1数据帧为显性 0,远程帧为隐性 1
IDE1标准帧为显性 0
r01保留位
DLC4数据长度 0–8(CAN-FD 使用非连续映射)
数据场0–64实际载荷,按 DBC 信号定义解析
CRC 序列15校验 SOF 至数据场,多项式 0x4599
CRC 界定符 / ACK 槽 / ACK 界定符各 1发送节点发隐性,接收节点用显性应答
EOF / IMS7 / 3帧结束与帧间空间

位填充

从 SOF 到 CRC 序列采用位填充:连续 5 个相同电平后自动插入一个相反电平的位。因此实际帧长会略大于字段位数之和,计算总线负载时必须留出余量(工程上常用最坏 135 位/标准帧)。

为什么 ACK 是显性

发送节点在 ACK 槽发出隐性位;任何正确接收到帧的节点都会把它拉成显性。发送节点读到显性即确认”至少有一个节点收到了”,但不知道是谁、也不知道是否所有节点都收到。这就是 CAN 只做”广播 + 应答”、不做点对点确认的原因。

理解了帧结构,再去 CAN 位定时计算器 看采样点位置,以及 CRC 计算器 里的 CRC-8/SAE-J1850 与帧内 CRC 的区别。

APPLY IT / TOOLS

配套工具