CAN / CAN FD / LIN 总线(Automotive Bus Protocols)
本质与导读
本质 汽车总线不是冗余,而是按速率、成本、拓扑三维分工——CAN 覆盖动力/底盘鲁棒通信,CAN FD 支撑 ADAS 大数据吞吐,LIN 以最低成本驾驭车身执行器,三者在同一辆车上各司其职。
主线坐标:横轨 · 诊断 / 通信(跨站) · ↑ 全景主线
1. 为什么汽车需要这么多种总线
汽车需要多种总线因为不同应用对延迟+带宽+成本组合不同——动力底盘需 CAN/CAN FD(实时)、车窗座椅用 LIN(成本)、主动安全用 FlexRay(确定性)、ADAS 用以太网(带宽)。
1.1 主流低成本总线的基础对比
先看 CAN Classic、CAN FD 和 LIN 三条最常见的量产总线,就能看出“实时性、载荷和成本”三者是怎样被同时权衡的。
| 特性 | CAN Classic | CAN FD | LIN |
|---|---|---|---|
| 最高速率 | 1 Mbps | 仲裁 1M+数据 5M | 20 kbps |
| 最大载荷 | 8 字节 | 64 字节 | 8 字节 |
| 拓扑 | 总线(多主) | 总线(多主) | 总线(主从) |
| 仲裁 | 非破坏性位仲裁 | 非破坏性位仲裁 | 无(调度表) |
| 布线 | 低(双线) | 低(双线) | 极低(单线) |
1.2 更高带宽或更强确定性的扩展选择
如果把视角再往上抬,FlexRay 和车载以太网填补的是 CAN/LIN 覆盖不到的确定性和大带宽场景,而不是简单替代它们。
| 特性 | 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 协议详解
2.1 物理层
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):任意节点发出显性位即压制全部隐性位 → 仲裁基础
位速率与总线长度(经验值):
终端电阻:总线两端各接 120 Ω(并联后 60 Ω,匹配传输线特征阻抗)。
2.2 数据链路层
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~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 节点维护两个计数器:
- 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 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.1 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–5 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.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_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.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 帧用途 |
|---|---|
| 车窗升降 | 位置反馈 + 防夹指令 |
| 电动后视镜 | 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 收发器在系统里的物理位置
先把收发器放回整条通信链里看,才能理解为什么它既决定总线电气鲁棒性,也决定低功耗唤醒和故障保护的边界。
5.2 选型先看硬约束参数
第一轮筛选通常只看几个无法妥协的硬约束:总线故障保护、ESD、待机电流和 CAN FD 速率,先过这关再谈型号偏好。
5.3 再按应用场景映射器件
当约束参数过线之后,才值得按是否需要 PN、是否带 SBC、是否要求 Grade 0 这种应用语义去缩小器件范围。
| 需求场景 | 推荐器件 |
|---|---|
| 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 冗余等机制才能用在主驱关键控制。
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 总线发送。
6.3 接收路径:再独立检查是否超时、重复或损坏
接收路径和发送路径是两个独立责任面:发送端负责附加保护信息,接收端必须单独判断这些信息是否仍然成立,并在失败时进入 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 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.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 通信矩阵用两种主流格式描述:
| 格式 | 来源 | 用途 |
|---|---|---|
| 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. 常见问题与调试
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 差模信号不需要扼流圈;共模噪声(外部干扰叠加在 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 看定义。每层有专门工具,不要从应用层倒推物理层。
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,寄存器设置:
| 参数 | 值 | 备注 |
|---|---|---|
| TSEG1 | 63 tq (1575 ns) | 传播段 + 相位段 1 |
| TSEG2 | 16 tq (400 ns) | 相位段 2 |
| SJW | 8 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%:
| 参数 | 值 | 备注 |
|---|---|---|
| DTSEG1 | 15 tq (375 ns) | 数据相传播 + 相位段 1 |
| DTSEG2 | 4 tq (100 ns) | 数据相相位段 2 |
| DSJW | 4 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