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

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

本质与导读

本质 汽车总线不是冗余,而是按速率、成本、拓扑三维分工——CAN 覆盖动力/底盘鲁棒通信,CAN FD 支撑 ADAS 大数据吞吐,LIN 以最低成本驾驭车身执行器,三者在同一辆车上各司其职。

主线坐标:横轨 · 诊断 / 通信(跨站) · ↑ 全景主线

1. 为什么汽车需要这么多种总线

汽车需要多种总线因为不同应用对延迟+带宽+成本组合不同——动力底盘需 CAN/CAN FD(实时)、车窗座椅用 LIN(成本)、主动安全用 FlexRay(确定性)、ADAS 用以太网(带宽)。

1.1 主流低成本总线的基础对比

先看 CAN Classic、CAN FD 和 LIN 三条最常见的量产总线,就能看出“实时性、载荷和成本”三者是怎样被同时权衡的。

特性CAN ClassicCAN FDLIN
最高速率1 Mbps仲裁 1M+数据 5M20 kbps
最大载荷8 字节64 字节8 字节
拓扑总线(多主)总线(多主)总线(主从)
仲裁非破坏性位仲裁非破坏性位仲裁无(调度表)
布线低(双线)低(双线)极低(单线)

1.2 更高带宽或更强确定性的扩展选择

如果把视角再往上抬,FlexRay 和车载以太网填补的是 CAN/LIN 覆盖不到的确定性和大带宽场景,而不是简单替代它们。

特性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 协议详解

2.1 物理层

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):任意节点发出显性位即压制全部隐性位 → 仲裁基础

CAN 差分电平波形:显性位 CANH 升至 3.5V、CANL 降至 1.5V(差分约 +2V),隐性位两线同为 2.5V(差分约 0V)

位速率与总线长度(经验值)

终端电阻:总线两端各接 120 Ω(并联后 60 Ω,匹配传输线特征阻抗)。


2.2 数据链路层

CAN 数据链路层核心是仲裁 + 错误检测——硬仲裁(显性 0 优先)让多主无冲突,CRC + ACK 让错误立即被识别。这条机制让 CAN 在嘈杂的车载电气环境里依然可靠。

CAN 硬仲裁时序:节点 A(低 ID)发显性 0 覆盖节点 B 的隐性 1,B 读回不符即退出仲裁

标准帧 (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~8B] [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 位循环冗余校验,生成多项式
  • ACK 槽:发送节点发隐性,任何正确接收的节点将其覆盖为显性(确认机制)
  • EOF:7 个隐性位,结束帧

位填充(Bit Stuffing):数据段中连续 5 个相同极性位后自动插入一个反极性填充位,接收端自动去除。这是 CAN 唯一的时钟同步手段。

仲裁机制

多节点同时发送时,逐位比较 ID(从最高有效位开始)。显性位(0)压制隐性位(1)——ID 数值越小,优先级越高。输掉仲裁的节点立即停止发送并切换为接收模式,无数据损坏,无需重传协议(非破坏性仲裁)。

错误检测机制(五种)

  • CRC 错误:接收 CRC ≠ 计算值
  • 位填充错误:连续 6 个同极性位
  • 帧格式错误:固定格式字段(EOF、DEL)出现错误电平
  • ACK 错误:发送节点在 ACK 槽未收到显性确认
  • 位错误:发送节点监测到总线电平与自身发送不符(仲裁段和 ACK 槽除外)

2.3 错误处理(Mermaid state machine)

CAN 错误处理用状态机自动隔离故障节点——错误计数器超过 128 进 Error Passive、超过 255 进 Bus Off。这条机制让单点故障节点不会瘫痪整个总线。

CAN 错误状态机,展示节点在 Error Active、Error Passive 与 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,数据段可达 5 Mbps(ISO 11898-1 协议理论上限 8 Mbps,主流车规收发器实测到 5 Mbps),载荷扩到 64 字节。这条向后兼容设计让 CAN FD 大规模迁移成为可能。

CAN FD 帧结构 — BRS 切速率, 仲裁段慢/数据段快

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.1 CAN-XL — 10 Mbps 继承(2024+)

CAN-XL(CiA 610,2023 发布,2024 首批产品)是 CAN 家族的第三代:

维度CANCAN-FDCAN-XL
仲裁速率1 Mbps1 Mbps1 Mbps
数据速率1 Mbps2–5 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.2 位时序预算(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.3 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 单线主从总线拓扑,展示主节点轮询多个从节点的低成本通信结构

应用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)] [PID(6+2 校验位)] [数据 1..8] [Checksum]

  • 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 认证。

5.1 收发器在系统里的物理位置

先把收发器放回整条通信链里看,才能理解为什么它既决定总线电气鲁棒性,也决定低功耗唤醒和故障保护的边界。

CAN 收发器 — 逻辑电平 ↔ 差分总线翻译层

5.2 选型先看硬约束参数

第一轮筛选通常只看几个无法妥协的硬约束:总线故障保护、ESD、待机电流和 CAN FD 速率,先过这关再谈型号偏好。

参数典型值
总线故障保护±42 V; 部分 ±58 V
ESD 保护±8 kV HBM
待机电流5~50 μA
CAN FD 速率最高 5 Mbps

5.3 再按应用场景映射器件

当约束参数过线之后,才值得按是否需要 PN、是否带 SBC、是否要求 Grade 0 这种应用语义去缩小器件范围。

需求场景推荐器件
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 冗余等机制才能用在主驱关键控制。

6.1 协议自身先解决“随机出错”

在叠加 AUTOSAR E2E 之前,先要承认 CAN 协议本身已经覆盖了一批随机通信故障,只是这些机制还不够支撑 ASIL D 的端到端论证。

机制覆盖故障
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)
  • 消息超时(接收方定时器独立监控)

6.2 发送路径:先把安全头叠到载荷上

发送路径的关键不是“发出去”,而是先在应用层把 CRC、alive counter 等安全语义打包进 PDU,再交给 CAN 总线发送。

E2E 发送路径 — 应用层叠加 CRC 与计数器

6.3 接收路径:再独立检查是否超时、重复或损坏

接收路径和发送路径是两个独立责任面:发送端负责附加保护信息,接收端必须单独判断这些信息是否仍然成立,并在失败时进入 safe state。

E2E 接收路径 — Checker 校验 4 类故障, 失败强制 safe state

ASIL D 安全通信实践

  • 冗余消息:同一安全信号通过两条独立 CAN 总线传输
  • 发送周期监控:接收方检测帧到达间隔,超时 > 3 个周期触发安全响应
  • 独立节点:安全关键 ECU(如 EPS、ESC)使用独立 CAN 总线,不与信息娱乐共享

6.4 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.5 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.6 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. 常见问题与调试

7.1 总线关闭(Bus Off)恢复策略


Bus Off 后 ECU 有两种恢复策略:

  • 自动恢复:等待 128 × 11 隐性位后硬件自动恢复至 Error Active
  • 应用控制恢复:MCU 在 Bus Off 中断后延迟 200–500 ms(避免立即重连冲击总线),再触发恢复

ISO 11898-1 建议:在总线故障原因消除前不应尝试恢复,避免导致整网络振荡。


7.2 显性钳位(Dominant Clamp)


某节点发送驱动失效(TXD 固定为 0),将总线持续拉为显性,导致所有通信中断。

诊断特征:差分电压稳定 ≈ 2 V,无正常帧波形。

解决:定位故障节点(逐一断开),检查 MCU GPIO 配置或收发器损坏。


7.3 EMC:共模扼流圈放置

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

CAN 共模扼流圈放置 — 必须紧贴连接器, 远离会变共模天线


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


7.4 示波器测量要点


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

7.5 调试流程(Mermaid)

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

CAN 调试决策树 — 物理层 → 数据链路 → 应用层 分层排查


8. Worked Design: TJA1145-Q1 驱动 EPS ECU (TC397)

电动助力转向(EPS) ECU 是 CAN FD 端到端设计的典型靶:仲裁相 500 kbps 承载网络管理与诊断,数据相 2 Mbps 承载 ASIL D 扭矩请求帧(E2E P04 + SecOC AES-CMAC-128)。下面以 NXP TJA1145-Q1(PB_TJA1145)+ TC397(TriCore 300 MHz)为例给出全链路可执行数字。

8.1 器件核验 (TJA1145-Q1)

TJA1145-Q1 是 CAN FD 收发器兼 Partial Networking 控制器,五项参数满足 EPS 需求:VCC = 5 V ± 5%,VIO/SPI = 3.3 V(直接对接 TC397 的 3.3 V IO,无需电平转换);总线耐压 ±58 V(超 ISO 11898-2:2016 标准 ±40 V 要求 18 V 余量);AEC-Q100 Grade 1(−40°C 到 +125°C);最大数据速率 2 Mbps;Partial Networking 符合 ISO 11898-6。INH 引脚驱动外部 VCC 稳压器开关:MCU 进 Sleep 后 INH 拉低,整个 ECU 供电域关断,系统电流降至 TJA1145 自身 ≤ 10 μA。

8.2 仲裁段位时序 (500 kbps)

TC397 CAN 时钟 fCAN = 40 MHz,tq = 25 ns。目标采样点 80%,总位时间 80 tq = 2000 ns,寄存器设置:

参数备注
TSEG163 tq (1575 ns)传播段 + 相位段 1
TSEG216 tq (400 ns)相位段 2
SJW8 tq≤ TSEG2 满足规范

采样点验证: 。总线传播验证:40 m 双绞线双程 = ns = 16 tq,TSEG1 = 63 tq 提供 47 tq(1175 ns)余量,充分覆盖全温区 40 m 总线延迟。

8.3 数据段位时序 + TDC (2 Mbps)

数据相 tq 不变仍 25 ns。2 Mbps 每位 500 ns = 20 tq,目标 SP = 80%:

参数备注
DTSEG115 tq (375 ns)数据相传播 + 相位段 1
DTSEG24 tq (100 ns)数据相相位段 2
DSJW4 tq= DTSEG2(最大允许)

采样点: 。数据相必须启用 TDC:TX 发出后经 PCB 走线 → 总线 → TJA1145 内部 → RX 回环延迟约 150 ns(TJA1145 内部环路延迟典型值,PB_TJA1145 §5.5)。TDCO 初值 = tq;量产时通过 TC397 DLC.TDCR.TDCO 的 RBRS 自动测量后固化。

8.4 Split 终端电阻

总线两端各装 Split 终端:60 Ω(上) + 60 Ω(下)串联,等效差分阻抗仍为 120 Ω。两个 60 Ω 中点经 4.7 nF 分别接地作共模旁路。在 CAN FD 数据相主频 2 MHz 时:

此 17 Ω 只是 4.7 nF 的容抗;共模路径为两端 60 Ω 并联(≈ 30 Ω)再串联该容抗,总阻抗模 ,较无旁路时(≈ 60 Ω)近乎减半,有效抑制 CISPR 25 Band 4 共模辐射。共模扼流圈(CMC)必须置于距线束连接器 ≤ 5 mm 处(见 G7)。

8.5 Partial Networking 唤醒配置

TJA1145-Q1 的 PN 过滤通过 SPI 配置:唤醒帧 CAN ID(CWUSEL)、DLC、数据字段掩码等寄存器全部为 SRAM,掉电即失。每次 MCU 上电后必须在进入 Sleep 前完整写入 PN 配置(AUTOSAR CanTrcv_SetOpMode 序列)。系统唤醒时序预算:PN 帧过滤 < 50 μs → INH 拉高 → VCC 稳压器建立 < 2 ms → MCU 复位释放 < 2 ms;总唤醒时间 < 5 ms,满足 ISO 11898-6 唤醒时延要求。


9. 设计陷阱 G1–G7

以下七个 Gotcha 是 CAN FD 工程中复现率最高的量产 Bug 来源,涵盖物理层、位时序、协议层和软件初始化。

G1 Classic CAN 节点混接 FD 总线

当 CAN FD ECU 发出含 BRS 的 FD 帧时,同一物理段的 Classic CAN 控制器无法识别 BRS 后的数据相速率切换,会将高速数据段解析为格式错误并立即发出 Error Frame。连锁反应:FD 发送节点 TEC 上升,全网 CRC 错误率飙升,最终整条总线陷入错误风暴。解法:纯 FD 网络确认 NISO/ISO 模式一致;混合总线必须通过 CAN FD/Classical CAN Gateway 在协议层隔离,不可在同一物理段混接两种节点。

G2 TDC 未配置 (数据相 ≥ 1 Mbps)

TC397 DLC 上电默认 TDCO = 0,TDC 窗口从位起点开始,不补偿 TX→RX 的实际环路延迟。2 Mbps 下 150 ns 延迟 = 6 tq,未补偿则采样窗口与数据眼错位,造成大量 CRC 错误——台架上偶发,高温或长线时恒发。修复:AUTOSAR CanTrcv 驱动在 Can_SetControllerMode(STOPPED→STARTED)时写入 DLC.TDCR.TDCO = 6(初值),首次建链后通过 RBRS 自动校准并更新。

G3 单端终端或错误 Split 配置

单端 120 Ω 只接一侧:另一端无匹配,在 1 Mbps 以上造成明显反射,眼图劣化。另一类错误是"假 Split":60 Ω + 60 Ω 串联后接 CANH→CANL,中点未经 4.7 nF 接地——差分阻抗仍 120 Ω 但共模旁路缺失,CISPR 25 共模测试失败。正确 Split:每端连接器侧 60 Ω-上 + 60 Ω-下,两个中点分别经 4.7 nF 到 GND。

G4 PN 寄存器掉电复位未重写

TJA1145-Q1 所有 PN 配置寄存器(CWUSEL、CPNC、CFDC 等)均为 SRAM,Vbat 掉电后清零。若 MCU 复位时 BSW 初始化跳过 SPI PN 配置步骤(常见于 Bootloader 直跳应用而未完整跑 MCAL/CanTrcv 初始化),TJA1145 处于"接受任意唤醒帧"默认模式,静态电流从目标 < 10 μA 上升到数百 μA,且无法按设计过滤噪声帧导致误唤醒。

G5 E2E Profile 版本不一致

AUTOSAR E2E P01 使用 CRC-8,P04 使用 CRC-32P4(多项式 0xF4ACFB13,初值 0xFFFFFFFF)。同一信号(如 TorqueRequest)在不同 SW 版本或不同供应商 ECU 上若 Profile 配置不一致,接收端 E2E 状态机持续 ERROR_DETECTED,触发 ASIL 降级反应(EPS 进 Limp-Home)。根因通常在 System Extract(ARXML)导出时 E2E 配置未锁版本,或 DaVinci 配置模板被手动覆盖。

G6 采样点全网不一致

CAN 协议仅保证总线同步,不强制各节点采样点完全相同。若网络中 ECU-A 采样点 75%、ECU-B 为 87.5%,在高温 + 长总线 + 终端阻抗偏差叠加时,B 节点看到的位沿相位差超过 SJW 可补偿范围,出现间歇性 CRC 错误。CiA 802 建议:仲裁相全网 75–87.5%;数据相 70–80%;同一网络内尽量统一。

G7 CMC 位置错误 (CISPR 25)

共模扼流圈(CMC)的正确位置是线束进入 PCB 连接器后 ≤ 5 mm,而非靠近 CAN 收发器 IC。若将 CMC 放在 TJA1145 前级而中间还经过 ESD 器件和走线,共模噪声已在 PCB 上散布,CMC 拦截效率大幅下降。正确布局顺序:连接器 → CMC(≤ 5 mm) → TVS/ESD 阵列 → TJA1145。


10. 工作极限 C1–C3

以下三个 Corner Case 覆盖 EPS CAN FD 总线在极端工况或系统演进时的边界场景。

C1 长总线 + 高温极限

铜线电阻率温度系数约 0.4%/°C,+125°C 相较 +25°C 导线电阻升约 40%。45 m 双绞线(AWG 24,84 mΩ/m/conductor)的直流环路电阻(CANH + CANL 双程):25°C 约 7.6 Ω,125°C 约 10.6 Ω。TJA1145 Dominant 输出电流(5 V VCC 下约 40 mA)驱动 60 Ω 等效终端时,10 Ω 串联电阻造成约 14% 压降——最远端节点差分电压须 > ISO 11898-2 规定的 1.5 V(Dominant 接收阈值),高温下裕量收窄。建议在最长线缆、最高温度、最多 stub 负载场景用 Vector CANalyzer 物理层工具或 LTspice 建模验证裕量,不可仅依赖室温台架测试。

C2 数据相速率迁移 (2 Mbps → 5 Mbps)

EPS 二期若升级数据相到 5 Mbps,需同步变更五项:① 换 TJA1145B 变种或 TJA1463(支持 5 Mbps);② DTSEG1 缩短到约 6 tq(每位 200 ns = 8 tq,SP ≈ 87.5%);③ 重新校准 TDCO(tq 不变但需重测实际环路延迟);④ Split 滤波电容从 4.7 nF 改为 100 pF(4.7 nF 在 5 MHz 时 Zcap ≈ 6.8 Ω,差分阻抗严重偏离 120 Ω);⑤ 全网所有节点同步刷写(不允许部分节点停留 2 Mbps,否则复现 G1 错误风暴)。

C3 Bus-Off 振荡与 CanSM 退避

当总线存在持续故障(对地短路、终端缺失)时,ECU TEC 快速爬升到 255 进入 Bus-Off。AUTOSAR CanSM 默认恢复策略:等待 128 × 11 = 1408 μs 隐性位静默期后尝试重连。若故障持续,将反复触发 Bus-Off → 1.4 ms 等待 → 重连 → 立即再次 Bus-Off,振荡频率约 600 Hz,期间 CAN 帧断送导致 E2E Timeout 触发 ASIL 降级,EPS 进入 Limp-Home 模式。正确处置:CanSM 实现指数退避(每次重连等待翻倍)+ 最大重连次数上限(如 3 次);超限后保持 Bus-Off 状态、存储 DTC、通知 NM 层不再盲目重连,由诊断工具或 ECU 上电重启恢复。


核心要点

  • 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 高级功能
  • **TDC(发送延迟补偿)**在数据相 ≥ 1 Mbps 时必须配置;TC397 DLC.TDCR.TDCO 上电默认 0 是量产 Bug 高发源,须在 CanTrcv 初始化时写入实测值(TJA1145-Q1 典型环路延迟 150 ns → TDCO = 6 tq @ 40 MHz)
  • TJA1145-Q1 PN 寄存器为 SRAM,掉电即失;每次 MCU 上电必须重写完整 SPI PN 配置序列才能进入 Sleep,否则静态电流超标且可被任意帧误唤醒
  • Bus-Off 恢复默认 128 × 11 = 1408 μs 后重连;持续故障时 CanSM 必须实现指数退避 + 重连次数上限,否则振荡触发 E2E Timeout → ASIL 降级 → EPS Limp-Home
  • 更完整的汽车网络生态(Ethernet / TSN / SOME-IP / DDS)见 汽车网络

Engineering Objects

引用此页的结构化 Engineeri…

引用此页的结构化 Engineering Object(v2.0 Copilot 自动生成,不要手动编辑此段)。

  • component · component_can_transceiver — CAN Transceiver
  • diagnostic · diagnostic_can_bus_health — CAN Bus Health Monitor
  • diagnostic · diagnostic_uds_dtc — UDS / DTC Diagnostic Protocol
  • failure_mode · failure_mode_can_bus_off — CAN Bus-Off State
  • mechanism · mechanism_can_fd — CAN-FD (Flexible Data Rate)
  • mitigation · mitigation_can_fail_silent — CAN Fail-Silent Mode

Cross-references