CAN / CAN FD / LIN 总线(Automotive Bus Protocols)
本质 汽车总线不是冗余,而是按速率、成本、拓扑三维分工——CAN 覆盖动力/底盘鲁棒通信,CAN FD 支撑 ADAS 大数据吞吐,LIN 以最低成本驾驭车身执行器,三者在同一辆车上各司其职。
学习目标
读完本页后,你应该能够:
- 解释 CAN 仲裁原理及错误状态机,说出 TEC/REC 阈值
- 比较 CAN 与 CAN FD 帧结构差异,说明 BRS 位的作用
- 描述 LIN 调度表机制,列举典型车身应用
- 按部分网络(Partial Networking)需求选择 CAN 收发器型号
- 说明 AUTOSAR E2E 保护在 CAN 上的实现思路
1. 为什么汽车需要这么多种总线
汽车需要多种总线因为不同应用对延迟+带宽+成本组合不同——动力底盘需 CAN/CAN FD(实时)、车窗座椅用 LIN(成本)、主动安全用 FlexRay(确定性)、ADAS 用以太网(带宽)。
| 特性 | CAN Classic | CAN FD | LIN |
|---|---|---|---|
| 最高速率 | 1 Mbps | 仲裁 1M+数据 5M | 20 kbps |
| 最大载荷 | 8 字节 | 64 字节 | 8 字节 |
| 拓扑 | 总线(多主) | 总线(多主) | 总线(主从) |
| 仲裁 | 非破坏性位仲裁 | 非破坏性位仲裁 | 无(调度表) |
| 布线 | 低(双线) | 低(双线) | 极低(单线) |
| 特性 | FlexRay | 100BASE-T1 |
|---|---|---|
| 最高速率 | 10 Mbps | 100 Mbps |
| 最大载荷 | 254 字节 | 不限 |
| 拓扑 | 双通道/星形 | 点对点 |
| 仲裁 | 时间触发 | N/A |
| 布线 | 高(4 线) | 中 |
典型应用:CAN → 动力/底盘;CAN FD → ADAS 网关;LIN → 车窗/座椅/后视镜;FlexRay → 线控底盘(老款);Ethernet → 摄像头/雷达/中央网关。标准:CAN = ISO 11898-1/2;CAN FD = ISO 11898-1:2015;LIN = ISO 17987;FlexRay = ISO 17458;Ethernet = IEEE 802.3bw。
单一总线无法同时满足高速、大载荷、低成本、确定性延迟这四个要求。现代汽车按域将电气架构分层,每层选用最适合的总线:
核心结论:CAN 因差分信号和多主仲裁在恶劣 EMC 环境下极为鲁棒;CAN FD 以向后兼容方式突破 8 字节瓶颈;LIN 牺牲速度换来单线+从节点无晶振的超低成本。
2. CAN 协议详解
物理层
CAN 物理层位速率与总线长度反比——1 Mbps 最大 40 m、500 kbps 100m、125 kbps 500m。这条限制由信号传播延迟和仲裁决定,不能突破。
| 位速率 | 最大总线长度 |
|---|---|
| 1 Mbps | 40 m |
| 500 kbps | 100 m |
| 250 kbps | 250 m |
| 125 kbps | 500 m |
CAN 使用双线差分信号:CANH 和 CANL。
- 显性位(Dominant, 逻辑 0):CANH − CANL > 0.9 V(典型 2 V),由发送节点驱动
- 隐性位(Recessive, 逻辑 1):总线静止状态,CANH ≈ CANL ≈ 2.5 V(差分 ≈ 0 V)
- 线与逻辑(Wired-AND):任意节点发出显性位即压制全部隐性位 → 仲裁基础
电压(V)
3.5 ─────────────────────── CANH (Dominant)
2.5 ─ · · · · · · · ·────── CANH/CANL (Recessive)
1.5 ─────────────────────── CANL (Dominant)
0.0
差分电压:
Dominant: V_diff = CANH − CANL ≈ +2.0 V
Recessive: V_diff ≈ 0 V
位速率与总线长度(经验值):
终端电阻:总线两端各接 120 Ω(并联后 60 Ω,匹配传输线特征阻抗)。
数据链路层
CAN 数据链路层核心是仲裁 + 错误检测——硬仲裁(显性 0 优先)让多主无冲突,CRC + ACK 让错误立即被识别。这条机制让 CAN 在嘈杂的车载电气环境里依然可靠。
| 标准帧 (Base) | 扩展帧 (Extended) | |
|---|---|---|
| ID 位数 | 11 位 | 29 位(11 + 18) |
| 标识符范围 | 0x000–0x7FF | 0x00000000–0x1FFFFFFF |
| IDE 位 | 显性(0) | 隐性(1) |
标准帧 vs 扩展帧:
标准数据帧结构(逐字段):
CAN 标准数据帧字段:
[SOF 1] [ID 11] [RTR 1] [IDE 1] [r0 1] [DLC 4] [Data 0~64B] [CRC 15] [CRCDEL 1] [ACK 1] [ACKDEL 1] [EOF 7] [IFS 3]
字段说明:
- SOF(Start of Frame):单个显性位,同步所有节点
- 仲裁段:ID + RTR。RTR = 显性 → 数据帧;隐性 → 远程帧
- DLC(Data Length Code):0–8,指定数据字节数
- CRC:15 位循环冗余校验,生成多项式 x^{15} + x^{14} + x^1^0 + x^8 + x^7 + x^4 + x^3 + 1
- ACK 槽:发送节点发隐性,任何正确接收的节点将其覆盖为显性(确认机制)
- EOF:7 个隐性位,结束帧
位填充(Bit Stuffing):数据段中连续 5 个相同极性位后自动插入一个反极性填充位,接收端自动去除。这是 CAN 唯一的时钟同步手段。
仲裁机制:
多节点同时发送时,逐位比较 ID(从最高有效位开始)。显性位(0)压制隐性位(1)——ID 数值越小,优先级越高。输掉仲裁的节点立即停止发送并切换为接收模式,无数据损坏,无需重传协议(非破坏性仲裁)。
错误检测机制(五种):
- CRC 错误:接收 CRC ≠ 计算值
- 位填充错误:连续 6 个同极性位
- 帧格式错误:固定格式字段(EOF、DEL)出现错误电平
- ACK 错误:发送节点在 ACK 槽未收到显性确认
- 位错误:发送节点监测到总线电平与自身发送不符(仲裁段和 ACK 槽除外)
错误处理(Mermaid state machine)
CAN 错误处理用状态机自动隔离故障节点——错误计数器超过 128 进 Error Passive、超过 255 进 Bus Off。这条机制让单点故障节点不会瘫痪整个总线。
每个 CAN 节点维护两个计数器:
- TEC(Transmit Error Counter):发送错误 +8,成功发送 −1
- REC(Receive Error Counter):接收错误 +1,成功接收 −1
含义:
- Error Active(正常工作态):可发主动错误帧,干扰其他节点以通知错误
- Error Passive:只能发被动错误帧(隐性,不影响总线),进入 8 位暂停帧间隔
- Bus Off:完全静默,需 128 × 11 个隐性位(约 1.4 ms @ 1 Mbps)后才能恢复
3. CAN FD — 向后兼容的革命
CAN FD 保留 CAN 仲裁机制 + 数据段独立提速——仲裁仍 1 Mbps,数据段可达 8 Mbps,载荷扩到 64 字节。这条向后兼容设计让 CAN FD 大规模迁移成为可能。
| CAN Classic | CAN FD | |
|---|---|---|
| 最大载荷 | 8 字节 | 64 字节 |
| 数据相位速率 | = 仲裁速率 | 最高 5 Mbps |
| CRC 长度 | 15 位 | 17/21 位 |
| 负载效率 | 低 (12.5%) | 高 (80%) |
CAN FD(Flexible Data-rate)由 Bosch 于 2012 年发布,2015 年纳入 ISO 11898-1。
帧结构与 BRS 切换点:关键新增位:
- FDF(FD Frame):= 隐性(1)标识为 CAN FD 帧,Classic CAN 节点将其视为错误
- BRS(Bit Rate Switch):隐性 → 在此位之后切换到数据相位高速率;CRC DEL 后恢复
- ESI(Error State Indicator):发送节点错误状态标志(主动=显性,被动=隐性)
数据相位速率规则:BRS 位本身以仲裁速率采样;BRS 之后的 DLC、Data、CRC 字段以数据速率传输;CRC DEL 之后恢复仲裁速率。
为什么需要 CAN FD:
- 每条 CAN Classic 帧只能携带 8 字节,传输 1 KB 数据需 128 帧
- ADAS 传感器融合参数、ECU 标定文件(UDS 传输)、OTA 固件更新对带宽有强需求
- CAN FD 在原有双线差分物理层上实现 8× 载荷 + 5× 速率提升,无需更换线束
常见 CAN FD 收发器:
- NXP TJA1145:支持 Partial Networking,CAN PN 唤醒过滤,SBC 集成版本 TJA1145T
- NXP TJA1443:CAN FD 5 Mbps,±42 V 总线保护,无 PN
- Infineon TLE9252:CAN FD 5 Mbps,集成内部偏置,支持 VIO 1.8 V 接口
- TI TCAN1145:CAN FD + Partial Networking + 局部唤醒,AEC-Q100 Grade 0
3.5 CAN-XL — 10 Mbps 继承(2024+)
CAN-XL(CiA 610,2023 发布,2024 首批产品)是 CAN 家族的第三代:
| 维度 | CAN | CAN-FD | CAN-XL |
|---|---|---|---|
| 仲裁速率 | 1 Mbps | 1 Mbps | 1 Mbps |
| 数据速率 | 1 Mbps | 2–8 Mbps | 10 Mbps |
| 最大 payload | 8 B | 64 B | 2048 B |
| 帧格式 | 固定 | 扩展 | 全新(含 SDT / VCID / AF) |
| 线束 | 兼容 | 兼容 | 兼容 |
| 承载 TCP/IP | 否 | 否 | 是(MAC 层支持) |
关键新增字段(相对 CAN-FD):
- SDT(SDU Type):1 字节,标识 payload 格式(可承载 TCP/IP、AUTOSAR、proprietary 等)
- VCID(Virtual CAN Network ID):8 位,一条物理总线虚拟成 256 条逻辑总线
- AF(Acceptance Field):32 位优先级,仲裁空间比 CAN-FD 更大
定位:介于 CAN-FD 和 100BASE-T1 之间;Zonal 架构里 ZCU 内部聚合层的首选(和 10BASE-T1S 竞争)。
时间表:Infineon / NXP / Microchip 2024–2025 有首批 PHY;量产车 2026–2027 引入。
3.6 位时序预算(Bit Timing Calculation)
CAN 位时序必须在每个节点精确配置,否则仲裁失败。
位时间 分四段(TSEG1 + TSEG2 + + ):
T_bit = T_SYNC\_SEG + T_PROP\_SEG + T_PHASE\_SEG1 + T_PHASE\_SEG2
工程中常合并 到 TSEG1:
- = 1 / f_CAN_clock(量化时间单位)
- TSEG1:采样点前(包含 propagation)
- TSEG2:采样点后(可重新同步)
- 采样点位置 = (1 + TSEG1) / (1 + TSEG1 + TSEG2) × 100%
典型配置(500 kbps 经典 CAN):
| 参数 | 值 |
|---|---|
| f_CAN_clk | 40 MHz |
| Prescaler | 4 → = 100 ns |
| TSEG1 | 15 |
| TSEG2 | 4 |
| Sample Point | (1+15)/(1+15+4) = 80 % |
采样点规则:同一总线所有节点必须一致(典型 75–87.5%);推荐 80 %(CiA DS-102)。
SJW(Synchronization Jump Width):允许的时钟漂移容限;典型 1–4 ,必须 ≤ TSEG2。
CAN-FD 的两组时序:仲裁段和数据段分别配置,采样点可独立优化(仲裁段 80 %、数据段可升到 85–87.5 %,牺牲漂移换速率裕度)。
3.7 Partial Networking(PN)和低功耗模式
Partial Networking 允许某些 ECU 在总线上有消息时仍保持睡眠,只有收到特定 ID + CRC 时才唤醒。
节能效果:整车静态电流降 30–60 mA → 停车 2 周仍能启动;OEM 强制要求。
实现:
- 支持 PN 的 CAN 收发器(TJA1145 / TCAN1145 / TLE9255W)
- MCU 可深度睡眠;CAN PHY 独立解析过滤 ID
- 唤醒后 300 μs 内收发就绪
ISO 11898-6 定义 PN 的标准行为;OEM(VW、BMW、大众)通常还额外约束。
4. LIN — 成本之王
LIN 是低成本通信的事实标准——单线 + 主从 + < 20kbps,节点成本仅为 CAN 的 1/5。所以一辆车的 LIN 节点数往往比 CAN 多 2~3 倍。
| 应用 | LIN 帧用途 |
|---|---|
| 车窗升降 | 位置反馈 + 防夹指令 |
| 电动后视镜 | X/Y 角度指令 + 折叠状态 |
| 电动座椅 | 6 轴位置指令 + 记忆存储 |
| 雨量/光线传感器 | 雨量等级 + 环境光强 |
| 方向盘按键 | 按键矩阵状态(多路复用) |
| 空调出风口叶片 | 步进电机角度指令 |
LIN(Local Interconnect Network)是专为低速车身附件设计的单主多从总线。
物理层特性:
- 单线通信(+12 V 逻辑,GND 通过车身回路)
- 主节点通过上拉电阻(1 kΩ)驱动总线
- 从节点可无晶振(使用自动波特率同步)
- 位速率:1 k–20 kbps,典型 19.2 kbps
- 最多 16 个从节点
帧结构:
- Break:至少 13 个显性位,唤醒总线并同步从节点
- Sync:固定字节 0x55(01010101),从节点用此同步内部波特率
- PID(Protected Identifier):6 位帧 ID + 2 位奇偶校验,共 64 个帧 ID
- Checksum:经典校验(LIN 1.x,仅数据)或增强校验(LIN 2.x,含 PID)
LIN 收发器集成:汽车 SBC(System Basis Chip)通常集成 LIN 收发器,如 Infineon TLE9261、ST L99PM62、NXP UJA1169。独立 LIN 收发器:TI TLIN2029、NXP TJA1027。
5. CAN 收发器选型
CAN 收发器按"速率 + 唤醒 + 安全"三维选——CAN FD 收发器要支持 8M 数据段、PN 收发器有部分网络唤醒、安全级要 ASIL B 认证。
| 参数 | 典型值 |
|---|---|
| 总线故障保护 | ±42 V; 部分 ±58 V |
| ESD 保护 | ±8 kV HBM |
| 待机电流 | 5~50 μA |
| CAN FD 速率 | 最高 5 Mbps |
| 需求场景 | 推荐器件 |
|---|---|
| CAN FD + PN | TJA1145; TCAN1145 |
| CAN FD 5 Mbps | TJA1443; TLE9252 |
| CAN FD + SBC | TJA1145T (含 FS26) |
| 高温 Grade 0 | TCAN1145-Q1 |
| 低成本 Classic | TJA1050; TJA1051 |
其他参数:唤醒能力含局部唤醒(LWU)、远程唤醒、PN 过滤唤醒。部分型号支持 1.8 V VIO 接口适配低压 MCU。
CAN 收发器是 MCU 逻辑电平(TXD/RXD)与差分总线(CANH/CANL)之间的物理接口。
Partial Networking(部分网络唤醒):
在 ISO 11898-6 中定义。ECU 处于低功耗模式时,收发器内部硬件过滤 CAN 帧:
- 匹配预设的唤醒帧 ID
- 比较数据字节(可配置掩码)
- 匹配成功 → 输出 WAKE 信号给 SBC/MCU
- 不匹配 → 继续静默,不消耗 MCU 功耗
这将 ECU 系统静态电流从数毫安降至数十微安,对新能源汽车驻车功耗至关重要。
6. CAN 在功能安全中的角色
CAN 在 ASIL D 作为非 fail-safe 通道——单独 CAN 不能保证 ASIL D。需要叠加 E2E CRC、SecOC、双 CAN 冗余等机制才能用在主驱关键控制。
| 机制 | 覆盖故障 |
|---|---|
| CRC 15 位 | 随机位错误 (HD=6) |
| 位填充 | 同步丢失; 位错误 |
| 帧格式检查 | 帧截断; 帧插入 |
| ACK 检查 | 发送丢失 |
| 错误计数器 | 故障节点隔离 |
CAN 协议本身提供检错能力,但 IEC 62228 / AUTOSAR 定义了更高层的端到端(E2E)保护。
CAN 内置安全机制(表格见上)。
AUTOSAR E2E 保护(应用层叠加):
E2E 在 PDU(Protocol Data Unit)载荷中叠加安全头,即使底层 CAN CRC 通过,应用层仍能检测:
- 数据损坏(E2E CRC)
- 消息丢失/重复(alive counter 单调递增)
- 消息乱序(sequence counter)
- 消息超时(接收方定时器独立监控)
发送路径和接收路径的 E2E 保护示意见上图。
ASIL D 安全通信实践:
- 冗余消息:同一安全信号通过两条独立 CAN 总线传输
- 发送周期监控:接收方检测帧到达间隔,超时 > 3 个周期触发安全响应
- 独立节点:安全关键 ECU(如 EPS、ESC)使用独立 CAN 总线,不与信息娱乐共享
6.2 SecOC(Secure Onboard Communication)
AUTOSAR SecOC 对抗故意篡改(信息安全),E2E 对抗随机失效(功能安全):
| 威胁 | 应对 |
|---|---|
| 重放攻击 | Freshness Value(FV,单调递增计数器) |
| 篡改 | MAC(Message Authentication Code,AES-CMAC-128) |
| 伪装 | 每条 Secured PDU 自带身份字段 |
帧扩展:在载荷尾部加 FV + MAC,占 16–32 字节;因此 SecOC 强依赖 CAN-FD(Classic CAN 8 字节载荷装不下)。
ISO/SAE 21434 和 UN ECE R155 对信息安全硬性要求下,SecOC 是 2023+ 新车型的默认:
- CGM / VSM 等 ECU 必须实现
- Key 管理通过 HSM(Hardware Security Module)芯片(Infineon SLS 2x、NXP S32K3 HSE)
- OEM 各自的密钥分发方案(VW VKMS、BMW SEC、Toyota TPMS)
6.3 ASIL + SecOC 的联合部署
典型配置:一帧"扭矩请求"的载荷结构:
| 真实数据 8B | E2E CRC 4B | FV 4B | MAC 8B | ESI 1B |
- E2E 对抗随机失效(覆盖 ASIL C/D 要求)
- SecOC 对抗篡改攻击(覆盖 ISO 21434 要求)
- 二者同时存在;协议栈按 AUTOSAR SWC → RTE → SecOC → E2E → CAN 顺序叠加
6.4 DBC / ARXML 工作流
CAN 通信矩阵用两种主流格式描述:
| 格式 | 来源 | 用途 |
|---|---|---|
| DBC | Vector(CANdb) | 传统;广泛兼容 |
| ARXML | AUTOSAR | 现代;与 Classic/Adaptive 栈配套 |
| LDF | LIN | LIN 专用 |
| FIBEX | ASAM | 多总线统一 |
DBC 示例:
BO_ 256 BrakeStatus: 8 Vector__XXX
SG_ BrakeForce : 0|16@1+ (0.1,0) [0|6553.5] "Nm" BrakeECU
SG_ BrakeStatus : 16|2@1+ (1,0) [0|3] "" BrakeECU
工作流(EV 逆变器视角):
- OEM 下发 完整整车 ARXML(上万条信号)
- 供应商用 Vector CANdb++ / CANoe 过滤出本 ECU 相关部分 → 生成供应商内部 DBC
- 工程师写 AUTOSAR SWC,与 DBC 绑定
- 编译工具链生成 RTE + COM 配置 + PDU 路由
- 总线仿真(CANoe + 真机节点)验证
- 集成测试 / 功能安全测试
2025+ 趋势:ARXML 取代 DBC 成主流,因为它支持 E2E / SecOC / PduR 等 AUTOSAR 高级功能;DBC 仍在维修 / 诊断工具保留。
7. 常见问题与调试
总线关闭(Bus Off)恢复策略
Bus Off 后 ECU 有两种恢复策略:
- 自动恢复:等待 128 × 11 隐性位后硬件自动恢复至 Error Active
- 应用控制恢复:MCU 在 Bus Off 中断后延迟 200–500 ms(避免立即重连冲击总线),再触发恢复
ISO 11898-1 建议:在总线故障原因消除前不应尝试恢复,避免导致整网络振荡。
显性钳位(Dominant Clamp)
某节点发送驱动失效(TXD 固定为 0),将总线持续拉为显性,导致所有通信中断。
诊断特征:差分电压稳定 ≈ 2 V,无正常帧波形。
解决:定位故障节点(逐一断开),检查 MCU GPIO 配置或收发器损坏。
EMC:共模扼流圈放置
CAN 的 EMC 关键是共模扼流圈靠近收发器——靠近降低共模电流环路。反模式:把共模扼流圈放远端,自己的接地走线就成了共模辐射天线。
CAN 差模信号不需要扼流圈;共模噪声(外部干扰叠加在 CANH/CANL 上)通过共模扼流圈抑制:差分阻抗极低(<5 Ω),不影响信号完整性。
示波器测量要点
- 使用差分探头测量 CANH − CANL(避免单端测量引入地环路噪声)
- 眼图测量:触发于 SOF 位,观察数据眼开口,眼高 > 0.9 V × (Dominant)
- 位时间验证:在 500 kbps 下,1 bit = 2 μs;测量 SOF 到第一个 ID 位的时序
调试流程(Mermaid)
CAN 调试按"物理层 → 数据链路 → 应用层"分层排查——示波器看波形 + CAN 分析仪看帧 + DBC 看定义。每层有专门工具,不要从应用层倒推物理层。
核心要点
- CAN 采用线与逻辑+非破坏性仲裁,ID 越小优先级越高,多主无需仲裁协调器
- TEC > 127 → Error Passive,TEC > 255 → Bus Off,恢复需 128 × 11 隐性位
- CAN FD 的 BRS 位是速率切换开关:BRS 之后数据相位可达 5 Mbps,向后兼容 Classic CAN 物理层
- CAN-XL(CiA 610,2024+)仍兼容 2 线差分但数据速率 10 Mbps、payload 2048 B、可承载 TCP/IP——在 Zonal 架构里与 10BASE-T1S 竞争聚合层
- 位时序核心:采样点推荐 80 %;CAN-FD 仲裁段和数据段可独立配置;SJW ≤ TSEG2
- LIN 无仲裁,完全由主节点调度表驱动,从节点可省去晶振(依靠 Sync 字节 0x55 自同步)
- Partial Networking 让收发器在 ECU 睡眠时过滤唤醒帧,将系统 从 mA 级降至 μA 级
- AUTOSAR E2E 保护覆盖 CAN 内置 CRC 检测不到的丢帧、重复帧、乱序帧和超时
- SecOC 对抗篡改(信息安全,ISO/SAE 21434 + UN R155 强制):FV + AES-CMAC-128,强依赖 CAN-FD 载荷
- E2E + SecOC 并存:一帧 "扭矩请求" 载荷 = 真实数据 + E2E CRC + FV + MAC;协议栈 SWC → RTE → SecOC → E2E → CAN
- ARXML 正在取代 DBC 成为 CAN 通信矩阵标准——支持 E2E / SecOC / PduR 等 AUTOSAR 高级功能
- 更完整的汽车网络生态(Ethernet / TSN / SOME-IP / DDS)见 汽车网络