1、CAN FD 协议基础:CAN 协议简介、CAN 与 CAN FD 的区别与演进
1.1 先从传统 CAN 聊起
CAN 总线,全称 Controller Area Network,1980 年代由 Bosch 开发,最初用在汽车里。说实话,这玩意儿活得比我想象中久多了。我入行那会儿,车上也就几十个 ECU,现在一辆高端车轻松上百个节点,CAN 还在扛着。
CAN 总线最核心的几样东西:
- 多主架构 – 任何节点都能发消息,靠仲裁场决定谁先发。ID 越小优先级越高,这个设计我特别喜欢,简单粗暴有效。
- 差分信号 – CAN_H 和 CAN_L,抗干扰能力强。我做现场总线调试时,拨下示波器一看,两线电压差明显,心里就踏实了。
- 帧格式 – 数据帧、远程帧、错误帧、过载帧。标准帧 11 位 ID,扩展帧 29 位 ID。
- 最高 1 Mbps – 实际上常用 250 kbps 或 500 kbps。我记得早年有个项目,用 1 Mbps 跑 40 cm 线,结果反射严重,后来老老实实降到 500 kbps。
它的局限也很清楚:每帧最多 8 字节数据,总线速率固定,不能分段。早年还够用,但到 2010 年后,ECU 升级固件、ADAS 传感器数据一上来,8 字节就成了瓶颈。我参与过一个车载雷达项目,目标列表动不动就几十个,一包塞不下,得分两三帧发,还要用时间戳对齐,相当麻烦。
1.2 为什么需要 CAN FD?
行业内其实挺早就开始琢磨怎么提速、扩容。Bosch 和几个芯片厂一起搞了 CAN FD(Flexible Data-rate),说白了就是给 CAN 打了一针强心剂。
核心驱动两个:
- 数据量大了 – 标定、刷写、诊断、传感器融合,8 字节真不够用。
- 带宽不够 – 传统 CAN 1 Mbps 封顶,而很多场景需要更快的刷新率。
我 2016 年接手过一个项目,ECU 刷写用传统 CAN 要 15 分钟,换成 CAN FD 后,数据场 64 字节,速率切到 2 Mbps,刷写时间直接降到 3 分钟。客户当场就竖大拇指了。
1.3 CAN 与 CAN FD 到底差在哪?
这里我把关键差异整理成一张表,你对照着看就清楚了:
| 对比项 | 传统 CAN | CAN FD |
|---|---|---|
| 仲裁场速率 | 固定(如 500 kbps) | 固定(不变,保证兼容) |
| 数据场速率 | 与仲裁场相同,不可变 | 最高可达 8 Mbps(灵活切换) |
| 数据长度 | 0~8 字节 | 0~64 字节 |
| DLC 编码 | 4 位,0~8 对应 0~8 字节 | 4 位,0~8 对应 0~8,9~15 对应 12/16/20/24/32/48/64 字节 |
| CRC 保护 | 15 位 CRC | 17 位(< 10 字节)或 21 位(>= 10 字节) |
| 填充位规则 | 严格 5 个相同位后填充 | 数据场可选禁用填充(加速) |
| 收发器兼容性 | 标准 ISO 11898-2 | 需 CAN FD 收发器,但物理层相同 |
1.4 演进路径其实很清晰
从 CAN 2.0A/B 到 CAN FD,再到后面的 CAN XL,这是一条很明显的升级链路。我画了张图帮你理清关系:
从这张图能看出来,CAN 家族的三代产品都在做同一件事:保住总线竞争机制这个核心竞争力,同时让数据通道越来越宽、越来越快。CAN FD 正是当前最均衡的选择——既有兼容性,又解决了大部分带宽瓶颈。
1.5 实际使用时要注意什么?
还有一点,CAN FD 的收发器虽然电气特性与 CAN 相同,但市面上有些“CAN 收发器”声称支持 5 Mbps,实际抖动很大。我建议你选型时认准 ISO 11898-2:2016 认证的器件,特别是做 4 Mbps 以上应用时,买回来先上眼图,确认回环测试通过。
1.6 一点点演进小结
这些年我做过不少 CAN 相关项目,从纯粹 CAN 2.0 到混合 CAN FD,再到尝试预研 CAN XL。说实话,CAN FD 是目前最成熟、性价比最高的升级选项。它没有改变你熟悉的仲裁、错误处理、位时序这些东西,只是给你多了两把利器:速率可变 和 数据场变长。
接下去进入实战环节前,先把基础打牢。记住:CAN FD 不是颠覆,是改进。你只要吃透仲裁场和数据场这两段的不同表现,后面配参数时就能游刃有余。