2. CAN总线基础
要做好CAN总线的故障定位与波形诊断,必须先回到最基础的物理层与协议层认知:CAN并不是“两根线随便传数据”,而是一套由差分信号、位仲裁、标准帧格式和拓扑约束共同构成的可靠通信体系。只有理解显性位与隐性位如何在差分对上表现、终端电阻如何影响信号完整性、总线拓扑如何决定反射与支线长度,后续用示波器、CAN分析仪抓到的波形才有解释依据。
一、CAN协议的起源与设计目标
CAN(Controller Area Network,控制器局域网)最早由德国Bosch公司在20世纪80年代提出,用于解决汽车内部日益增多的电子控制单元(ECU)之间的通信问题。传统点对点线束在功能增加时会迅速膨胀,重量、成本和故障率都难以控制。CAN采用多主、广播式串行总线,让多个节点共享一对差分线,在保证实时性和可靠性的前提下大幅减少线束。
其核心设计目标包括:
- 多主仲裁:任何节点都可在总线空闲时发起发送,通过标识符逐位仲裁决定优先级,避免冲突破坏数据。
- 非破坏性仲裁:优先级高的报文继续发送,低优先级节点自动退让并等待下一次空闲,不浪费带宽。
- 错误检测与隔离:通过CRC、位填充、帧格式检查、应答检查等机制发现错误,并能区分暂时性干扰与永久性故障。
- 差分传输:使用CAN_H与CAN_L两根线,以电压差表示逻辑,共模干扰被大幅抑制。
二、ISO 11898标准体系与分层
CAN的标准化由ISO 11898系列完成,常见部分包括:
- ISO 11898-1:数据链路层与物理信令,定义帧格式、仲裁、错误处理等。
- ISO 11898-2:高速CAN物理层,速率通常为125 kbit/s~1 Mbit/s,采用线性总线与两端终端电阻。
- ISO 11898-3:低速容错CAN,速率一般不超过125 kbit/s,支持单线故障下的降级运行。
在诊断中,最常接触的是ISO 11898-2高速CAN。它规定了差分电压范围、终端电阻、共模电压、总线长度与速率的关系。例如,1 Mbit/s时总线长度通常不超过40 m,125 kbit/s时可延长至约500 m。这些参数直接决定波形诊断时的边沿、振铃和幅值判断标准。
关键认知:ISO 11898-2不是“建议”,而是物理层判据。若CAN_H与CAN_L的差分电压、终端电阻或共模范围偏离标准,通信可能时好时坏,但用万用表静态测量未必能发现。
三、差分信号原理与显性/隐性电平
CAN总线使用差分信号:接收端关注的是CAN_H与CAN_L之间的电压差V_diff = V_CAN_H − V_CAN_L,而不是单根线对地的绝对电压。这样,当外界电磁干扰同时耦合到两根线上时,共模部分被抵消,差分部分保留,通信更可靠。
在高速CAN中,逻辑位分为显性位(Dominant,逻辑0)和隐性位(Recessive,逻辑1):
- 显性位:CAN_H约3.5 V,CAN_L约1.5 V,V_diff约2 V。显性位具有“压倒”隐性位的特性,只要有一个节点发送显性位,总线就呈现显性。
- 隐性位:CAN_H与CAN_L都约2.5 V,V_diff约0 V。总线空闲时通常为隐性状态。
仲裁正是利用“显性覆盖隐性”的规则:节点发送标识符时,若自己发隐性却检测到显性,说明有更高优先级节点在发送,于是退出仲裁。因此,标识符数值越小,优先级越高。
四、总线拓扑结构与终端电阻
ISO 11898-2高速CAN采用线性总线拓扑:所有节点并联在CAN_H与CAN_L之间,总线两端各接一个120 Ω终端电阻,等效直流电阻约60 Ω。终端电阻的作用是吸收信号反射,使差分信号边沿干净、幅值稳定。若缺少终端电阻、阻值错误或只在一端安装,示波器上常能看到明显的振铃、过冲或边沿变缓。
拓扑诊断中要特别关注:
- 支线长度:节点到主干的支线应尽量短,1 Mbit/s时通常建议不超过0.3 m,否则会引入反射。
- 节点数量:过多节点会增加总线电容,导致上升/下降时间变长,眼图变差。
- 接地与共模:各节点地电位差过大时,共模电压可能超出收发器范围,出现随机错误帧。
五、典型场景与诊断参数对照
假设一辆车上的CAN总线偶发通信中断,用示波器测量CAN_H与CAN_L。若发现隐性位时差分电压不为0 V,而是约1 V,说明某节点或线路存在对电源/对地短路倾向;若显性位幅值只有1 V左右,可能是终端电阻缺失或总线负载异常。下表给出常见测量项与判断方向:
| 测量项 | 正常参考 | 异常表现 | 可能原因 |
|---|---|---|---|
| 静态电阻(断电) | CAN_H-CAN_L约60 Ω | 约120 Ω或无穷大 | 缺少一端终端电阻、线束断开 |
| 隐性位差分电压 | 约0 V | 明显偏离0 V | 短路、收发器损坏、共模偏移 |
| 显性位差分电压 | 约2 V | 偏低或偏高 | 终端电阻异常、负载过多、供电异常 |
| 波形边沿 | 干净、无明显振铃 | 振铃、过冲、台阶 | 支线过长、阻抗不连续、终端缺失 |
| 总线空闲电平 | CAN_H≈CAN_L≈2.5 V | 偏离2.5 V | 对地/对电源短路、收发器故障 |
六、常见误区与复盘
误区1:用万用表测CAN_H和CAN_L对地电压,看到2.5 V左右就认为总线正常。实际上,隐性位时两根线都接近2.5 V,但显性位和差分幅值必须用示波器或差分探头观察。
误区2:只测一端终端电阻为120 Ω就认为正常。高速CAN要求两端各120 Ω,断电时从总线任意一点测量应接近60 Ω。
误区3:忽略支线长度,认为“能通信就行”。支线过长在低速时可能勉强工作,但速率提高或温度变化后会出现偶发错误帧,波形上表现为振铃和边沿畸变。
复盘时建议按以下顺序建立基线:先确认拓扑与终端电阻,再测量静态差分电阻,然后上电观察隐性/显性电平,最后用示波器查看位时间、边沿和振铃。只有把协议起源、ISO 11898标准、差分信号、显性/隐性电平与拓扑结构串成一条链,后续的故障定位才能从“猜”变成“测”。