1.1 CAN总线概述
1.1.1 CAN总线起源
CAN(Controller Area Network,控制器局域网)总线由德国博世(Bosch)公司于1986年开发,最初为汽车内部电子控制单元(ECU)之间的通信而设计。随着汽车电子化程度提高,传统点对点布线方式导致线束复杂、成本高昂,CAN总线应运而生,实现了多节点、高可靠性的串行通信。
1.1.2 CAN总线特点
差分信号传输
CAN总线使用CAN_H和CAN_L两条差分信号线,通过电压差表示逻辑状态:
- 显性电平(逻辑0):CAN_H ≈ 3.5V,CAN_L ≈ 1.5V,差分电压约2V
- 隐性电平(逻辑1):CAN_H ≈ 2.5V,CAN_L ≈ 2.5V,差分电压约0V
多主从通信
CAN总线采用多主站结构,任何节点在总线空闲时均可发起通信,通过非破坏性逐位仲裁机制解决冲突:
- 标识符(ID)越小,优先级越高
- 显性位覆盖隐性位,优先级高的节点自动获得总线控制权
- 无需中央控制器,节点可自由加入或退出网络
实时性与可靠性
| 特性 | 说明 |
|---|---|
| 实时性 | 数据帧优先级仲裁,最坏响应时间可预测 |
| 错误检测 | CRC校验、位填充、帧格式检查、应答确认 |
| 错误处理 | 自动重发、错误被动/主动状态切换、总线关闭 |
| 传输距离 | 1Mbps时最长40m,50kbps时最长1km |
1.1.3 CAN与RS485/LIN对比
| 对比项 | CAN | RS485 | LIN |
|---|---|---|---|
| 物理层 | 差分双线 | 差分双线 | 单线+地 |
| 拓扑结构 | 多主 | 主从 | 单主多从 |
| 最大速率 | 1 Mbps | 10 Mbps | 20 kbps |
| 仲裁机制 | 非破坏性逐位仲裁 | 无(需协议层处理) | 主节点调度 |
| 错误处理 | 完善(CRC/ACK/位填充) | 无(需上层实现) | 简单校验 |
| 典型应用 | 汽车动力/车身/诊断 | 工业控制/仪表 | 车门/车窗/座椅 |
| 成本 | 中等 | 低 | 最低 |
典型应用场景
- CAN总线:发动机控制、ABS、安全气囊、车载诊断(OBD)
- RS485:工厂自动化、楼宇控制、远距离数据采集
- LIN总线:车窗升降、后视镜调节、空调风门控制