【嵌入式】CAN 总线技术介绍

CAN 总线技术详解,从物理层到应用层:


一、基础架构层

1. 物理拓扑
要素 规范说明
线缆类型 双绞线(CAN_H + CAN_L),阻抗 120Ω
终端电阻 总线首尾两端各接 120Ω 电阻(消除信号反射)
电平逻辑 - 显性电平 (0):CAN_H - CAN_L ≈ 2V
- 隐性电平 (1):CAN_H - CAN_L ≈ 0V
最大节点数 110 个(受收发器驱动能力限制)
2. 电气特性
波特率 最大距离 应用场景
1 Mbps 40 m 汽车动力总成(ECU 间高速通信)
500 kbps 100 m 工业机器人实时控制
125 kbps 500 m 车身控制系统(车门/车窗)
50 kbps 1 km 工程机械长距离通信

二、协议核心机制

1. 多主仲裁(非破坏性位竞争)
[节点A] 发送 ID=0x101 (二进制: 00010000001)
[节点B] 发送 ID=0x102 (二进制: 00010000010)
         ↑ 第10位开始仲裁
A 发送 0 (显性) vs B 发送 1 (隐性) → A 赢得总线控制权,B 立即退出发送
2. 帧结构解析(标准数据帧)
字段 长度 功能说明
SOF (帧起始) 1 bit 显性电平 (0),同步节点时钟
ID (标识符) 11 bit 决定优先级(值越小优先级越高)
RTR (远程请求位) 1 bit 数据帧=显性(0),远程帧=隐性(1)
DLC (数据长度码) 4 bit 数据段字节数 (0-8)
Data Field 0-64B 有效载荷(CAN FD 扩展至 64 字节)
CRC 15 bit 校验 SOF 至数据段
ACK Slot 1 bit 发送端发隐性(1),接收端覆盖为显性(0)确认
EOF (帧结束) 7 bit 连续隐性位(1)
3. 错误防御体系
机制 实现方式
位监控 发送节点检测自身发出位与总线实际电平是否一致
CRC 校验 15 位多项式校验 (CRC-15-CAN)
格式校验 检查固定格式位(如 EOF 必须为 7 个隐性位)
应答机制 接收成功节点需在 ACK Slot 回显显性位
自动错误隔离 节点根据错误计数进入状态机:主动错误 → 被动错误 → 总线关闭

三、协议演进对比

特性 CAN 2.0B CAN FD CAN XL (2023+)
最大数据长度 8 字节 64 字节 2048 字节
仲裁段速率 最高 1 Mbps 同经典 CAN 同 CAN FD
数据段速率 - 最高 8 Mbps 最高 20 Mbps
关键升级 支持 29 位扩展 ID 动态切换波特率 (BRS) 兼容以太网帧

四、应用实现层

1. 硬件组成
MCU
CAN控制器
CAN收发器
物理总线
其他节点
  • 典型芯片方案
    • 控制器:STM32F4/F7(内置 CAN FD),MCP2515(外置 SPI 转 CAN)
    • 收发器:TJA1050(基础型),TJA1044(低功耗),ADM3053(隔离型)
2. 应用层协议栈
协议 领域 核心特性
CANopen 工业自动化 对象字典 (OD),SDO/PDO 通信模型,预定义连接集
J1939 商用车/工程机械 参数组 (PGN),可疑参数编号 (SPN),29 位 ID 含源/目标地址
CAN FD 新能源车域控制器 域间通信(如电池管理系统→电机控制器),支持 UDS 诊断
3. 开发工具链
类型 工具示例 用途
硬件分析仪 Vector VN1630, Kvaser Leaf Pro 抓取物理层信号与协议解码
协议分析软件 CANoe (Vector), PCAN-View (Peak) 报文解析/仿真/压力测试
嵌入式库 SocketCAN (Linux), CANopenNode 嵌入式设备协议栈开发

五、典型故障排查表

故障现象 检测点 解决方案
总线持续显性 终端电阻值(应为 60Ω) 检查终端电阻连接
频繁错误帧 节点错误计数器 (TEC/REC) 隔离高错误计数节点
特定报文丢失 CAN 控制器过滤器配置 检查接收节点 ID 过滤掩码
长距离通信不稳定 分支线长度(应 < 0.3m @1Mbps) 缩短分支或降低波特率

六、前沿应用场景

  1. 新能源汽车域控制器架构

    [动力域] --CAN FD--> [中央网关] --以太网--> [智能座舱域]
          |                    |
          --CAN FD--> [电池管理系统]
    
    • 传输数据:电机转速(0x0CF00400)、电池温度(0x18FEF100)、充电状态(0x18FF50D1)
  2. 工业 4.0 柔性产线

    • 实时同步:机器人关节控制器 (CANopen) 以 1ms 周期同步位置指令
    • 安全协议:CANopen Safety 实现急停连锁(安全等级 SIL2)

七、协议发展路线

timeline
  title CAN 技术演进史
  1986 : Bosch 发布 CAN 1.0
  1991 : CAN 2.0A (11-bit ID) 标准化
  1994 : CAN 2.0B (29-bit ID) 发布
  2012 : CAN FD 协议草案
  2023 : CAN XL 10G-PHY 物理层测试

附:关键术语速查
BRS (Bit Rate Switch):CAN FD 数据段波特率切换标志位
ESI (Error State Indicator):发送节点错误状态指示
PDO (Process Data Object):CANopen 实时过程数据对象
PGN (Parameter Group Number):J1939 参数组编号

你可能感兴趣的:(串行通信,嵌入式硬件)