1、CAN FD 简介:背景与发展

聊 CAN FD 之前,我先问个问题:你遇到过 CAN 总线跑不动的情况吗?

我早年做车载网关的时候,经常碰到。传统 CAN 只有 1 Mbps,数据场最多 8 字节。ECU 间交换个 OTA 包,得拆成几十帧,总线负载天天 80% 以上。后来接触了 CAN FD,心里才踏实。说白了,CAN FD 就是给老 CAN 打了个「高速补丁」——兼容原来的物理层和协议框架,但把数据场跑得飞快,还塞得更多。

1.1 为什么需要 CAN FD?

传统 CAN 协议(ISO 11898-1:2003)设计于 80 年代。当时车载电子系统简单,8 字节数据场够用,1 Mbps 带宽也撑得住。

  • 带宽瓶颈:1 Mbps 是理论极限,实际工程中常跑 500 kbps。随着 ADAS、高精度地图、线控底盘出现,数据量暴增。
  • 数据长度受限:8 字节。更新一个固件块或传输诊断日志,要拆成几十上百帧,CRC 覆盖范围短,保错能力弱。
  • 实时性焦虑:大量小帧挤占总线,高优先级消息可能被低优先级帧拖垮。

我当时的切身体会:

做新能源 BMS 项目时,电池包所有单体电压、温度、SOC 一次上报要 200+ 字节。传统 CAN 得拆成 25 帧,每个采样周期 10 ms,光发数据就把总线占满了。那时候我真想找一种能一帧搞定的方案。

1.2 CAN FD 核心技术特性

2012 年,Bosch 发布了 CAN FD(Flexible Data-Rate)规范。2015 年成为 ISO 11898-1:2015 标准。它做了三个关键改动:

特性传统 CANCAN FD
标称位速率最高 1 Mbps(通常 500 kbps)仲裁段 ≤1 Mbps,数据段最高 8 Mbps
数据场长度8 字节8 / 12 / 16 / 20 / 24 / 32 / 48 / 64 字节
CRC 保护15 位 CRC(仅覆盖数据场)17 位(数据 ≤16 字节)或 21 位(数据 >16 字节),覆盖数据场 + 部分控制位
能否混合组网—可与传统 CAN 节点同网,走混合总线

我个人最喜欢的是「数据段加速」这个设计。想想看:仲裁段还是用低速率保证所有节点都能参与判决,等拿到总线控制权后,立马切换到高速发数据。这就好比……嗯,高速收费站前大家排队慢速通过,一出去马上油门踩到底。

1.3 发展历程与标准化

  1. 2012 – 概念提出:Bosch 在公司内部推出 CAN FD 草案,主要面向下一代汽车动力总成和底盘控制。
  2. 2015 – ISO 标准落地:ISO 11898-1:2015 纳入 CAN FD,同时保留了与传统 CAN 的兼容性。
  3. 2016-2018 – 芯片量产:NXP、TI、Infineon、Microchip 等厂商推出集成 CAN FD 控制器的 MCU 和 SBC。
  4. 2018-2022 – 行业全面铺开:AUTOSAR 4.3 以上原生支持 CAN FD,主流车厂(大众、宝马、吉利)逐步在量产平台中使用。
  5. 2023 至今 – 成为标配:几乎所有新设计的车载网络都要求 CAN FD,传统 CAN 只作为兼容选项保留。

你可能会问:CAN FD 和 CAN XL 是什么关系?

CAN XL 是 2018 年才提出的更高速版本(数据段可达 20 Mbps,数据场 2048 字节),至今还未完全标准化。目前业界重心仍然在 CAN FD,尤其是在 MCU 与 DMA 结合的传输优化上。这也是为什么我选这门课讲 CAN FD 的原因——它够成熟,也足够有挑战。

1.4 我与 CAN FD 的那些事

2016 年我第一次拿到带 CAN FD 的 MCU 芯片(NXP S32K144),兴冲冲写了段测试程序。结果一上示波器,数据段波形一团糟。查了半天才发现……

  • 避坑 1 – 采样点匹配:CAN FD 数据段速率高,采样点必须精确设置在 70%~87% 位时间位置。我当初直接用 CAN 2.0 的采样点配置(约 60%),导致数据段频频位错误。这个坑,我踩过。
  • 避坑 2 – 收发器选型:不是所有 CAN 收发器都支持高速数据段。TJA1051 只能跑到 1 Mbps,换 TJA1043 才能上 5 Mbps。我以前为了省成本用了老收发器,结果被迫降速——白折腾。
  • 避坑 3 – DMA 准备的时机:CAN FD 一帧最多 64 字节,如果还用传统的查询方式填 FIFO,CPU 会频繁被打断。后来我改用 DMA 双缓冲,数据段发送和接收效率直接翻倍。

这些教训让我意识到:CAN FD 本身不复杂,但玩好它需要理解控制器、收发器、DMA 三者的配合。这也是我设计这门课的初衷。

1.5 本章知识体系

下面这张图是我自己画的概念框架。你可以把它当作整个课程的「地图」。后面的章节,我们会逐一攻破每个模块:协议细节、控制器寄存器、DMA 配置、缓冲区管理、实测优化。

CAN FD 技术概览图 CAN FD 技术概览 传统CAN瓶颈 1 Mbps · 8 字节 · 高负载 CAN FD诞生 2012 Bosch · 2015 ISO 核心特性 速率·长度·CRC 数据段速率提升 仲裁≤1M → 数据≤8M 可变数据长度 8 / 12 / 16 / … / 64 字节 CRC增强保护 17位 / 21位 + 控制位 向后兼容 同线缆 · 同帧格式 典型应用场景 车载ECU · 新能源 · 工控 注:DMA 传输优化将在后续章节深入,重点围绕数据段收发与缓冲区管理展开。

一个容易忽略的点:

即便 MCU 支持 CAN FD,如果收发器不支持加速段(例如只支持 CAN 2.0 的传统收发器),整个网络会自动降级为普通 CAN 模式。我见过有人明明选了 CAN FD 控制器,却因为收发器没换,通信始终跑在 500 kbps。所以……选型时一定要查收发器的「CAN FD ready」标识。

好了,背景铺垫完毕。总结一下:CAN FD 不是为了炫技,它是被实际工程需求逼出来的。从 8 字节 1 Mbps 到 64 字节 8 Mbps,这个跨越改变了车载网络的设计思路。而实现这些提升,离不开控制器、收发器、DMA 三者精准配合——这也是本课程的核心线索。