第1章:CAN FD概述——从CAN 2.0到CAN FD的演进
大家好,我是老李。做车载ECU开发十几年了,今天咱们聊聊CAN FD。
说实话,我刚入行那会儿,CAN 2.0还是绝对的主流。那时候觉得CAN总线真香——两根线就能搞定整车通信,稳定可靠。但后来发现,事情没那么简单。
1.1 从CAN 2.0到CAN FD:为什么非要升级?
先说说CAN 2.0的痛点。你想想看,一辆现代汽车里有多少ECU?发动机、变速箱、ABS、气囊、车机、ADAS……少说三四十个。这些家伙都在抢总线时间。
CAN 2.0的速率上限是1Mbps,数据场最多8个字节。这在十年前够用,但现在呢?
- OTA升级:一个固件包几十MB,用CAN 2.0传?得传好几分钟
- ADAS传感器数据:摄像头、雷达的数据量,8字节根本塞不下
- 诊断服务:UDS诊断动辄几十个字节,得拆成好几帧发
我记得2015年做的一个项目,客户要求支持远程诊断。用CAN 2.0做,一个诊断请求要拆成5帧,响应再拆8帧。那延迟,简直了。
所以,CAN FD应运而生。说白了,就是给CAN 2.0打了一针强心剂。
1.2 CAN FD的核心优势
CAN FD到底强在哪?我总结了两点:
1.2.1 速率提升
CAN FD支持两种速率:
| 阶段 | CAN 2.0 | CAN FD |
|---|---|---|
| 仲裁段 | 最高1Mbps | 最高1Mbps(兼容) |
| 数据段 | 最高1Mbps | 最高8Mbps |
为什么仲裁段不能太快?因为CAN总线的仲裁机制需要所有节点同步。数据段就不一样了,只有发送节点在发数据,可以跑得更快。
我在项目中实际用过5Mbps的数据段速率。嗯,要注意,速率越高对总线物理层要求也越高。线缆长度、终端电阻、节点数量都得重新算。
1.2.2 数据场扩展
CAN FD的数据场从8字节扩展到了64字节。别小看这个变化,它带来的好处是实实在在的:
- 传输效率提升:同样64字节数据,CAN 2.0要发8帧,CAN FD只要1帧
- 协议开销降低:每帧都有帧头帧尾,帧数少了,无效开销就少了
- 实时性更好:数据集中发送,减少了总线抢占次数
实际对比:传输64字节数据
- CAN 2.0:8帧 × 130μs ≈ 1.04ms
- CAN FD:1帧 × 50μs ≈ 0.05ms
效率提升了20倍!
1.3 CAN FD在车载网络中的应用场景
这几年我经手的项目,CAN FD已经成了标配。主要用在以下几个场景:
1.3.1 动力总成域
发动机、变速箱、电机控制器之间的高速数据交换。比如扭矩请求、转速信号,以前要分好几帧发,现在一帧搞定。
1.3.2 ADAS与自动驾驶
摄像头、雷达、激光雷达的数据量巨大。我记得有个项目,摄像头输出目标列表,每个目标20字节,一次最多跟踪32个目标。用CAN 2.0?根本不可能。CAN FD 64字节数据场,刚好够用。
1.3.3 诊断与OTA
UDS诊断服务,比如读取DTC信息、刷写固件。CAN FD的大数据场让诊断效率翻了好几倍。
我的建议:如果你正在设计新项目,直接上CAN FD。向后兼容CAN 2.0,硬件成本增加不多,但性能提升明显。
1.4 避坑指南
最后分享几个我踩过的坑:
我曾经犯过的错:
- 以为CAN FD和CAN 2.0完全兼容——实际上,CAN FD节点可以收CAN 2.0帧,但反过来不行
- 数据段速率设得太高,结果总线信号质量差——后来加了终端电阻匹配才解决
- 忽略了CAN FD的CRC校验变化——CAN FD用了17位或21位CRC,和CAN 2.0的15位不同
嗯,今天就先聊到这。下一章咱们深入CAN FD的协议细节,看看帧结构到底长什么样。
记住一句话:CAN FD不是革命,是进化。它保留了CAN的可靠性,解决了CAN的瓶颈。
公众号:蓝海资料掘金营,微信deep3321