CAN总线错误处理:XMC系列工业通信故障排查 - 第1节
1.1 CAN协议概述
控制器局域网(Controller Area Network,CAN)是一种由Bosch公司开发的串行通信协议,最初用于汽车电子系统,现已广泛应用于工业自动化、医疗设备、轨道交通等领域。CAN协议的核心设计目标是:高可靠性、实时性、多主站通信。
1.1.1 协议分层与帧结构
CAN协议遵循ISO/OSI参考模型,主要定义物理层和数据链路层。数据链路层又细分为逻辑链路控制(LLC)和介质访问控制(MAC)两个子层。CAN总线使用非破坏性逐位仲裁机制解决多节点同时发送时的总线冲突。
| 帧类型 | 用途 | 标识符长度 | 数据长度 |
|---|---|---|---|
| 数据帧 | 发送节点向其他节点传输数据 | 11位(标准帧)或29位(扩展帧) | 0~8字节 |
| 远程帧 | 请求其他节点发送具有相同ID的数据 | 11位或29位 | 无数据段 |
| 错误帧 | 检测到总线错误时主动通知 | — | — |
| 过载帧 | 节点接收能力不足时请求延迟 | — | — |
1.1.2 多主站与仲裁机制
CAN总线是一种多主站总线,任何节点在总线空闲时都可以开始发送。当多个节点同时发送时,通过标识符的逐位仲裁决定优先级:标识符数值越小,优先级越高。仲裁期间,显性位(逻辑0)覆盖隐性位(逻辑1),发送隐性位但检测到显性位的节点立即退出竞争。
1.2 差分信号原理
CAN总线采用差分信号传输,使用两条信号线:CAN_H(高电平线)和CAN_L(低电平线)。差分信号的核心优势是抗共模干扰能力强,适合工业现场恶劣电磁环境。
1.2.1 信号电平定义
CAN总线定义两种逻辑状态:显性(Dominant)和隐性(Recessive)。显性状态对应逻辑0,隐性状态对应逻辑1。差分电压的计算方式为:Vdiff = VCAN_H − VCAN_L。
| 状态 | 逻辑值 | CAN_H电压 | CAN_L电压 | 差分电压 |
|---|---|---|---|---|
| 显性 | 0 | 3.5V | 1.5V | 约2.0V |
| 隐性 | 1 | 2.5V | 2.5V | 约0V |
1.2.2 共模抑制与抗干扰
差分信号对共模噪声具有天然抑制能力。外部电磁干扰通常同时作用于CAN_H和CAN_L两条线,产生相同的电压变化(共模分量)。接收器只响应差分电压,因此共模噪声被抵消。CAN收发器通常支持−2V至+7V的共模范围,工业级器件可达−12V至+12V。
1.3 CAN总线物理层特性
CAN总线的物理层定义了电气特性、传输介质、拓扑结构和终端匹配等关键参数。XMC系列微控制器通常配合外部CAN收发器(如TJA1050、SN65HVD230)实现物理层接口。
1.3.1 总线拓扑与终端电阻
CAN总线采用线性总线拓扑,所有节点通过双绞线并联连接。总线两端必须各接入一个120Ω终端电阻,用于匹配传输线阻抗、抑制信号反射。终端电阻的典型值为120Ω,对应双绞线的特征阻抗。
- 标准总线长度:最高速率1Mbps时,总线长度不超过40m;降低速率可延长距离(如125kbps时可达500m)。
- 节点数量:标准CAN收发器支持最多110个节点(取决于收发器驱动能力)。
- 线缆类型:推荐使用屏蔽双绞线(STP),特性阻抗120Ω,线径0.5mm²以上。
1.3.2 位时序与采样点
CAN总线使用位同步机制确保所有节点以相同节奏采样总线。一个位时间被划分为四个段:同步段(SS)、传播段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2)。采样点位于PBS1和PBS2之间。
| 段名称 | 作用 | 典型长度(TQ) |
|---|---|---|
| 同步段(SS) | 检测总线边沿,实现硬同步 | 1 TQ |
| 传播段(PTS) | 补偿信号在总线和节点内的传播延迟 | 1~8 TQ |
| 相位缓冲段1(PBS1) | 用于重同步,可延长 | 1~8 TQ |
| 相位缓冲段2(PBS2) | 用于重同步,可缩短 | 1~8 TQ |
采样点位置通常推荐设置在87.5%处(即SS+PTS+PBS1占总位时间的87.5%),以容忍振荡器误差和信号抖动。XMC的MultiCAN+模块允许通过寄存器CAN_BTR精确配置位时序参数。
1.3.3 收发器与电气隔离
CAN收发器是微控制器CAN控制器与物理总线之间的接口芯片。XMC系列内部集成CAN控制器(MultiCAN+),外部需搭配收发器。在工业环境中,推荐使用隔离式CAN收发器(如ISO1050、ADM3053)或增加数字隔离器,以防止地环路和浪涌损坏控制器。
- 非隔离方案:成本低,适用于同一PCB板内或短距离通信。
- 隔离方案:耐压可达2500Vrms以上,适用于跨设备、跨机柜的长距离工业总线。
- 共模扼流圈:在CAN_H和CAN_L上串联共模扼流圈可进一步抑制高频共模干扰。