CAN(Controller Area Network)通信协议是一种高性能、高可靠性的串行通信协议,专为汽车和工业环境设计。其核心特点包括多主机架构、非破坏性仲裁和强大的错误检测机制。以下从五个维度详细解析:
一、物理层设计
- 差分信号传输
- 采用双绞线(CAN_H 和 CAN_L)传输差分电压信号
- 显性电平(逻辑0):$V_{CAN_H} - V_{CAN_L} > 0.9V$
- 隐性电平(逻辑1):$V_{CAN_H} - V_{CAN_L} < 0.5V$
- 终端电阻匹配
- 总线两端需连接 $120\Omega$ 终端电阻,抑制信号反射
- 特性阻抗计算公式:
$$Z_0 = \sqrt{\frac{L}{C}}$$ ($L$为线缆电感,$C$为分布电容)
二、数据链路层核心机制
1. 非破坏性仲裁
- 优先级判定:
当多个节点同时发送时,通过ID逐位仲裁(显性位覆盖隐性位)节点A ID:1010 (发送中) 节点B ID:1011 (检测到冲突后退出发送) → 低ID值(二进制高位0)获得优先级
- 仲裁失败节点自动重发,无数据丢失
2. 错误检测五重机制
机制 | 检测能力 |
---|---|
CRC校验 | 15位循环冗余校验,覆盖帧头到数据 |
帧格式检查 | 固定格式字段校验 |
ACK应答 | 接收节点需显性应答 |
位填充检查 | 每5个相同位后需插入反相位 |
监控位校验 | 发送节点回读电平一致性 |
三、报文帧结构(标准帧示例)
┌───┬─────┬───┬───┬──────┬───────┬───┐
│SOF│ ID │RTR│DLC│ Data │ CRC │ACK│
└───┴─────┴───┴───┴──────┴───────┴───┘
- SOF(1位):帧起始(显性0)
- ID(11位):标识符(决定优先级)
- RTR(1位):远程传输请求(0:数据帧, 1:远程帧)
- DLC(4位):数据长度码(0-8字节)
- CRC(15位):校验域 + 隐性界定符
- ACK(2位):应答槽 + 隐性界定符
扩展帧增加18位扩展ID,ID总长度达29位
四、典型应用场景
- 汽车电子系统
- 发动机控制单元(ECU)实时传输转速、温度数据
- 传输延迟 < $250\mu s$(满足ISO 11898-2标准)
- 工业自动化
- 分布式I/O模块通信(如PLC网络)
- 波特率可达 $1Mbps$(40米内)
- 医疗设备
- 手术机器人关节控制总线
五、协议演进
版本 | 特性 | 数据域最大长度 |
---|---|---|
CAN 2.0A | 标准帧(11位ID) | 8字节 |
CAN 2.0B | 扩展帧(29位ID) | 8字节 |
CAN FD | 可变数据速率(最高$5Mbps$) | 64字节 |
CAN FD采用双波特率:仲裁段保持原速率,数据段加速传输
总结优势
- 实时性:非破坏仲裁确保高优先级数据$T_{max} < 150\mu s$
- 可靠性:位错误率 $< 10^{-11}$(双绞线环境)
- 扩展性:单总线支持最多110个节点(标准负载)
- 成本效益:省去中央控制器,线束重量降低30%
该协议通过硬件级错误处理与分布式架构,在电磁干扰环境下仍保持高稳定性,已成为车辆和工业控制领域的事实标准。