CAN / CAN FD / LIN 总线(Automotive Bus Protocols)

系统架构L6别名 CAN · CAN FD · LIN · FlexRay

本质 汽车总线不是冗余,而是按速率、成本、拓扑三维分工——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 ClassicCAN FDLIN
最高速率1 Mbps仲裁 1M+数据 5M20 kbps
最大载荷8 字节64 字节8 字节
拓扑总线(多主)总线(多主)总线(主从)
仲裁非破坏性位仲裁非破坏性位仲裁无(调度表)
布线低(双线)低(双线)极低(单线)
特性FlexRay100BASE-T1
最高速率10 Mbps100 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 Mbps40 m
500 kbps100 m
250 kbps250 m
125 kbps500 m

CAN 使用双线差分信号:CANHCANL

  • 显性位(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 在嘈杂的车载电气环境里依然可靠。

topic-can-bus diagram

标准帧 (Base)扩展帧 (Extended)
ID 位数11 位29 位(11 + 18)
标识符范围0x000–0x7FF0x00000000–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。这条机制让单点故障节点不会瘫痪整个总线。

topic-can-bus diagram


每个 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 大规模迁移成为可能。

Mermaid diagram

topic-can-bus diagram

CAN ClassicCAN 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 家族的第三代:

维度CANCAN-FDCAN-XL
仲裁速率1 Mbps1 Mbps1 Mbps
数据速率1 Mbps2–8 Mbps10 Mbps
最大 payload8 B64 B2048 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 引入。

更全面的对比、TSN、SOA 协议请见 汽车网络


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_clk40 MHz
Prescaler4 → = 100 ns
TSEG115
TSEG24
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 倍。

topic-can-bus diagram

应用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 认证。

Mermaid diagram
参数典型值
总线故障保护±42 V; 部分 ±58 V
ESD 保护±8 kV HBM
待机电流5~50 μA
CAN FD 速率最高 5 Mbps
需求场景推荐器件
CAN FD + PNTJA1145; TCAN1145
CAN FD 5 MbpsTJA1443; TLE9252
CAN FD + SBCTJA1145T (含 FS26)
高温 Grade 0TCAN1145-Q1
低成本 ClassicTJA1050; 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 冗余等机制才能用在主驱关键控制。

Mermaid diagram
Mermaid diagram
机制覆盖故障
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 21434UN 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 通信矩阵用两种主流格式描述:

格式来源用途
DBCVector(CANdb)传统;广泛兼容
ARXMLAUTOSAR现代;与 Classic/Adaptive 栈配套
LDFLINLIN 专用
FIBEXASAM多总线统一

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 逆变器视角):

  1. OEM 下发 完整整车 ARXML(上万条信号)
  2. 供应商用 Vector CANdb++ / CANoe 过滤出本 ECU 相关部分 → 生成供应商内部 DBC
  3. 工程师写 AUTOSAR SWC,与 DBC 绑定
  4. 编译工具链生成 RTE + COM 配置 + PDU 路由
  5. 总线仿真(CANoe + 真机节点)验证
  6. 集成测试 / 功能安全测试

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 关键是共模扼流圈靠近收发器——靠近降低共模电流环路。反模式:把共模扼流圈放远端,自己的接地走线就成了共模辐射天线。

Mermaid diagram

CAN 差模信号不需要扼流圈;共模噪声(外部干扰叠加在 CANH/CANL 上)通过共模扼流圈抑制:差分阻抗极低(<5 Ω),不影响信号完整性。


示波器测量要点


  • 使用差分探头测量 CANH − CANL(避免单端测量引入地环路噪声)
  • 眼图测量:触发于 SOF 位,观察数据眼开口,眼高 > 0.9 V × (Dominant)
  • 位时间验证:在 500 kbps 下,1 bit = 2 μs;测量 SOF 到第一个 ID 位的时序

调试流程(Mermaid)

CAN 调试按"物理层 → 数据链路 → 应用层"分层排查——示波器看波形 + CAN 分析仪看帧 + DBC 看定义。每层有专门工具,不要从应用层倒推物理层。

Mermaid diagram

核心要点

  • 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)见 汽车网络

Cross-references