Cấu trúc khung dữ liệu CAN
Hoạt ảnh từng trường khung CAN: SOF, trọng tài, điều khiển, dữ liệu, CRC, ACK, EOF.
Nhấn phát để xem từng trường của khung dữ liệu CAN
Nguyên lý hoạt động
Nội dung bài viết bên dưới hiện chỉ có bản đầy đủ bằng tiếng Trung; giao diện, tiêu đề, mô tả và FAQ hiển thị theo ngôn ngữ bạn chọn.
一帧长什么样
标准 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 的区别——两者的初值、位序列与填充位处理方式都不同,不能互相替代。
Công cụ liên quan
Tính CRC-32, ARC, MODBUS, CCITT-FALSE và các biến thể CRC-8 cục bộ; hex hoặc văn bản.
TL-02 / AUTOMOTIVE Trình xem DBC & giải mã thông điệpPhân tích BO_/SG_ trong trình duyệt, xem bố trí bit, hệ số/offset và giải mã payload hex.
TL-03 / AUTOMOTIVE Máy tính bit timing CAN / CAN-FDTính BRP, tq, các đoạn pha, SJW và điểm lấy mẫu từ xung nhịp, tốc độ; kèm bảng DLC CAN-FD.