CAN 데이터 프레임 구조
표준 CAN 프레임을 SOF, 중재, 제어, 데이터, CRC, ACK, EOF 필드별로 애니메이션으로 살펴봅니다.
재생을 누르면 표준 CAN 프레임을 순서대로 보여줍니다
원리 분석
아래 본문은 현재 중국어 전체 버전만 제공됩니다. 화면·제목·설명·FAQ는 선택한 언어로 표시됩니다.
一帧长什么样
标准 CAN 数据帧(11 位 ID)从总线空闲开始,按位流依次发送:
| 字段 | 位数 | 作用 |
|---|---|---|
| SOF | 1 | 显性位,标志帧开始并完成硬同步 |
| 仲裁场 ID | 11 | 报文标识符,同时决定优先级 |
| RTR | 1 | 数据帧为显性 0,远程帧为隐性 1 |
| IDE | 1 | 标准帧为显性 0 |
| r0 | 1 | 保留位 |
| DLC | 4 | 数据长度 0–8(CAN-FD 使用非连续映射) |
| 数据场 | 0–64 | 实际载荷,按 DBC 信号定义解析 |
| CRC 序列 | 15 | 校验 SOF 至数据场,多项式 0x4599 |
| CRC 界定符 / ACK 槽 / ACK 界定符 | 各 1 | 发送节点发隐性,接收节点用显性应答 |
| EOF / IMS | 7 / 3 | 帧结束与帧间空间 |
位填充
从 SOF 到 CRC 序列采用位填充:连续 5 个相同电平后自动插入一个相反电平的位。因此实际帧长会略大于字段位数之和,计算总线负载时必须留出余量(工程上常用最坏 135 位/标准帧)。
为什么 ACK 是显性
发送节点在 ACK 槽发出隐性位;任何正确接收到帧的节点都会把它拉成显性。发送节点读到显性即确认”至少有一个节点收到了”,但不知道是谁、也不知道是否所有节点都收到。这就是 CAN 只做”广播 + 应答”、不做点对点确认的原因。
理解了帧结构,再去 CAN 位定时计算器 看采样点位置,以及 CRC 计算器 里通用 8 位 CRC 参数模型与帧内 15 位 CRC 的区别——两者的初值、位序列与填充位处理方式都不同,不能互相替代。
관련 도구
CRC-32, ARC, MODBUS, CCITT-FALSE 등 여러 CRC를 브라우저에서 계산합니다. hex·텍스트 입력 지원.
TL-02 / AUTOMOTIVE DBC 뷰어 및 메시지 디코더브라우저에서 DBC의 BO_/SG_ 정의를 파싱하고 비트 배치, 배율/오프셋을 확인한 뒤 hex 페이로드를 디코딩합니다.
TL-03 / AUTOMOTIVE CAN / CAN-FD 비트 타이밍 계산기클록과 비트레이트로 BRP, tq, 위상 세그먼트, SJW, 샘플링 지점을 구하고 CAN-FD DLC 표도 제공합니다.