4、CAN FD协议诞生背景:从汽车电子需求到ISO 11898-1标准演进

大家好,我是你们的老朋友。今天咱们聊聊CAN FD是怎么来的。

说实话,我刚入行那会儿,CAN总线还是绝对的主角。那时候觉得,8个字节的数据,1Mbps的速率,够用了啊。但后来,事情慢慢变了。

4.1 传统CAN的“天花板”

先说说传统CAN的局限。你想想看,一辆现代汽车里有多少ECU?我见过最多的,超过100个。每个ECU都在往总线上发数据,8个字节的报文空间很快就挤满了。

举个例子。一个高级驾驶辅助系统(ADAS)的摄像头,一帧图像数据可能就有几兆字节。用CAN传?8个字节一包,你得拆成几十万包。这效率,说实话,太低了。

我在一个项目中遇到过这种情况:客户要求升级车载娱乐系统,需要传输高清地图数据。传统CAN的1Mbps速率,传一张地图要几分钟。客户直接摇头:“这不行,太慢了。”

传统CAN的几个硬伤:

  • 数据场太小:最多8个字节。对于大数据包,拆包重组开销巨大
  • 速率瓶颈:最高1Mbps。实际应用中,考虑到线缆长度和节点数量,往往只能跑到500kbps甚至更低
  • 协议效率低:每个报文都有固定的仲裁场、控制场、CRC场,有效数据占比不高

核心问题:传统CAN的设计初衷是传输控制信号和传感器数据,不是大数据流。当汽车电子从“控制”走向“智能”,CAN就力不从心了。

4.2 汽车电子的新需求

2010年以后,汽车电子进入爆发期。我总结了一下,主要有几个新需求在倒逼协议升级:

  1. 软件在线升级(OTA):以前刷ECU得去4S店,现在要远程升级。一个ECU的固件可能几十兆字节,用CAN传?你得等一晚上。
  2. 高带宽传感器数据:激光雷达、高清摄像头、毫米波雷达,这些传感器每秒产生海量数据。我见过一个激光雷达,每秒输出30万点云数据,每个点云32字节。算算看,这数据量有多大。
  3. 功能安全要求:ISO 26262要求更可靠的通信。传统CAN的CRC只有15位,对于关键安全数据,这个保护力度不够。
  4. 网络拓扑复杂化:网关、域控制器出现,需要更灵活的路由和更高的带宽。

说白了,汽车电子从“功能机”时代进入了“智能机”时代。CAN这个“老将”虽然可靠,但跑不动新应用了。

4.3 CAN FD的诞生

2012年,博世和几个主要芯片厂商开始讨论CAN的升级方案。我记得当时有几个方向:

  • 完全推翻重来,搞一个新协议
  • 在CAN基础上做增量升级
  • 用其他总线替代(比如以太网)

最后大家选了第二条路。为什么?因为CAN的物理层太成熟了,线缆、连接器、收发器,整个产业链都在。完全推翻,成本太高。

2015年,CAN FD(CAN with Flexible Data-Rate)正式成为ISO 11898-1:2015标准的一部分。嗯,这里要注意,CAN FD不是替代CAN,而是CAN的扩展。

个人经验:我建议大家在设计新项目时,直接选用支持CAN FD的控制器。即使初期只用CAN模式,也为将来升级留了后路。我曾经在一个项目中,因为选了只支持CAN的芯片,后来客户要求升级CAN FD,只能换芯片,重新做板子,损失不小。

4.4 CAN FD的核心改进

CAN FD相比传统CAN,主要改了三个地方:

特性 传统CAN CAN FD
数据场长度 最多8字节 最多64字节
数据段速率 固定1Mbps 最高8Mbps(实际常用2-5Mbps)
CRC 15位 17位(数据场≤16字节)或21位(数据场>16字节)
帧格式 标准帧/扩展帧 兼容CAN帧,新增FD帧

说白了,CAN FD就是“把水管加粗,同时让水流更快”。数据场从8字节扩到64字节,速率从1Mbps提到最高8Mbps。你想想看,理论吞吐量提升了多少倍?

我算过一笔账:传统CAN在1Mbps下,有效数据吞吐量大约在500-600kbps(因为协议开销)。CAN FD在5Mbps下,有效数据吞吐量可以到3-4Mbps。这差距,不是一点半点。

4.5 从ISO 11898-1标准演进看兼容性

这里有个关键点:CAN FD完全向后兼容CAN。什么意思?

  • CAN FD控制器可以收发传统CAN报文
  • CAN FD节点可以和CAN节点在同一总线上共存
  • CAN FD帧和CAN帧使用相同的仲裁机制

为什么会这样?因为CAN FD的帧格式里,有一个“EDL”位(Extended Data Length)。传统CAN控制器看到这个位,就知道这是FD帧,不会去解析后面的数据段。嗯,这里要注意,传统CAN控制器会忽略FD帧的数据段,但不会报错。

避坑指南:我曾经在一个混合网络中,CAN节点和CAN FD节点共存。结果发现,CAN节点虽然不报错,但会丢失FD帧的确认。后来查标准才知道,CAN FD帧的ACK段和CAN帧一样,但CAN节点不会对FD帧的CRC段做校验。所以,混合网络中,FD帧的可靠性需要额外关注。

标准演进的时间线:

  • 2012年:博世发布CAN FD规范草案
  • 2015年:ISO 11898-1:2015正式纳入CAN FD
  • 2018年:ISO 11898-1:2018做了小幅修订,主要是澄清一些歧义
  • 2020年:CAN FD在汽车行业大规模应用

4.6 实际应用中的考量

说实话,CAN FD不是万能的。它解决了带宽问题,但没解决实时性问题。对于硬实时控制(比如发动机喷油、刹车),CAN FD和CAN一样,都依赖优先级仲裁。

我建议大家在选型时,考虑以下几点:

  1. 数据量评估:如果单个报文超过8字节,或者总线负载超过30%,考虑CAN FD
  2. 速率选择:不要盲目追求8Mbps。实际应用中,2-5Mbps更常见,因为要考虑线缆质量和EMC
  3. 兼容性规划:如果现有网络有大量CAN节点,建议逐步升级,不要一刀切

我记得有个项目,客户要求所有节点都支持CAN FD。结果发现,有些老传感器只支持CAN,换传感器成本太高。最后我们用了网关,CAN FD域和CAN域之间做桥接。虽然增加了延迟,但总比全部换新划算。

4.7 小结

CAN FD的诞生,说白了就是汽车电子被“逼”出来的。传统CAN的8字节/1Mbps,在智能汽车时代确实不够用了。CAN FD在保持物理层兼容的前提下,把数据场扩到64字节,速率提到8Mbps,算是“老树开新花”。

下一章,我会详细讲CAN FD的帧格式。你想想看,64字节的数据场怎么塞进一个报文里?速率怎么在仲裁段和数据段之间切换?这些细节,咱们下回分解。

一句话总结:CAN FD不是革命,是进化。它让CAN这个老协议,在智能汽车时代继续发光发热。