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 标准。它做了三个关键改动:
| 特性 | 传统 CAN | CAN 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 发展历程与标准化
- 2012 – 概念提出:Bosch 在公司内部推出 CAN FD 草案,主要面向下一代汽车动力总成和底盘控制。
- 2015 – ISO 标准落地:ISO 11898-1:2015 纳入 CAN FD,同时保留了与传统 CAN 的兼容性。
- 2016-2018 – 芯片量产:NXP、TI、Infineon、Microchip 等厂商推出集成 CAN FD 控制器的 MCU 和 SBC。
- 2018-2022 – 行业全面铺开:AUTOSAR 4.3 以上原生支持 CAN FD,主流车厂(大众、宝马、吉利)逐步在量产平台中使用。
- 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 配置、缓冲区管理、实测优化。
一个容易忽略的点:
即便 MCU 支持 CAN FD,如果收发器不支持加速段(例如只支持 CAN 2.0 的传统收发器),整个网络会自动降级为普通 CAN 模式。我见过有人明明选了 CAN FD 控制器,却因为收发器没换,通信始终跑在 500 kbps。所以……选型时一定要查收发器的「CAN FD ready」标识。
好了,背景铺垫完毕。总结一下:CAN FD 不是为了炫技,它是被实际工程需求逼出来的。从 8 字节 1 Mbps 到 64 字节 8 Mbps,这个跨越改变了车载网络的设计思路。而实现这些提升,离不开控制器、收发器、DMA 三者精准配合——这也是本课程的核心线索。