3. 物理层特性
CAN(Controller Area Network)总线物理层是决定通信可靠性的第一道关口。与UART、I2C等单端信号不同,CAN总线采用差分信号传输,并定义了显性(Dominant)与隐性(Recessive)两种逻辑电平。理解这些物理层特性,是进行硬件接口设计、线束布局、终端匹配和故障排查的基础。本章将深入剖析差分信号的电气本质、总线拓扑的约束条件以及120Ω终端电阻的工程选型方法。
上图展示了CAN物理层的三个核心要素:差分信号电平定义、线性总线拓扑结构以及终端电阻的接入位置。下面我们将逐一展开,从原理到工程实践进行深度解析。
3.1 差分信号与显性/隐性电平
3.1.1 核心原理:为什么CAN要使用差分信号?
CAN总线使用两根线——CANH(高线)和CANL(低线)——以差分方式传输信号。接收端检测的是两线之间的电压差(Vdiff = VCANH - VCANL),而非对地电压。这种设计带来两大核心优势:抗共模干扰和电磁辐射抑制。当外界电磁干扰同时耦合到两根线上时,产生的共模噪声在差分相减中被抵消;同时,两根线中的电流方向相反,产生的磁场相互抵消,降低了对外辐射。
在ISO 11898-2标准中,定义了两种逻辑状态:
- 显性电平(Dominant):CANH约为3.5V,CANL约为1.5V,差分电压约2.0V,逻辑上表示"0"。显性电平具有优先权,可以覆盖隐性电平。
- 隐性电平(Recessive):CANH和CANL均为2.5V,差分电压为0V,逻辑上表示"1"。此时总线处于空闲状态,由终端电阻提供偏置。
这种"线与"机制是CAN总线仲裁的基础——多个节点同时发送时,显性位会覆盖隐性位,从而实现无损仲裁。
3.1.2 判断方法:如何测量和验证电平?
在硬件调试中,使用示波器测量差分电压是最直接的验证手段。操作步骤如下:
- 将示波器通道1接CANH,通道2接CANL,使用数学功能计算CH1-CH2。
- 在总线空闲时,差分电压应接近0V(隐性)。
- 当节点发送数据帧时,差分电压应在2.0V左右(显性),且波形边沿应陡峭、无振铃。
- 使用CAN分析仪发送固定报文,对比接收端的眼图质量。
3.1.3 案例拆解:共模干扰导致的通信异常
某工业设备中,CAN总线与变频器动力线平行走线约2米。现场出现偶发性通信超时,尤其在变频器启动时故障率显著上升。使用示波器测量CANH对地电压,发现叠加了约±1.5V的共模噪声,但差分电压波形仍正常。进一步检查发现,总线两端终端电阻完好,但节点设备的地线连接阻抗偏高,导致共模噪声无法有效泄放。
解决方案:在总线两端各增加一个100pF~1nF的共模电容(从CANH和CANL分别对地),并优化接地路径,将地线阻抗降至100mΩ以下。整改后,共模噪声被抑制到±200mV以内,通信恢复正常。
3.1.4 常见误区与总结
- 误区1:认为CAN总线可以像RS-485一样使用三线制(含地线)。CAN虽然不强制要求共地,但建议所有节点共地,否则共模电压可能超出收发器允许范围(-12V~+12V)。
- 误区2:忽视隐性电平的偏置。如果终端电阻开路,隐性电平会漂移,导致节点误判总线状态。
- 总结:差分信号是CAN抗干扰的基石,显性/隐性电平的准确测量是排障的第一切入点。
3.2 总线拓扑:线性为主,星型受限
3.2.1 核心原理:为什么CAN要求线性拓扑?
CAN总线设计为多点共享广播的通信模式,其物理层依赖信号在总线上的传播和反射特性。线性拓扑(一条主干,两端各接一个终端电阻)能够保证信号在传输过程中阻抗连续,反射最小。而星型拓扑(多个分支从中心节点引出)会带来严重的阻抗不连续点,信号在分支节点处产生反射,导致波形畸变。
ISO 11898-2标准规定,在1Mbps波特率下,支线长度不应超过0.3米。这是因为信号在支线末端的反射需要在一定时间内衰减,否则会干扰下一个位的采样点。
3.2.2 拓扑设计与长度计算
| 波特率 | 最大主干长度 | 最大支线长度 | 节点数 |
|---|---|---|---|
| 1 Mbps | 40 m | 0.3 m | ≤32 |
| 500 kbps | 100 m | 1.0 m | ≤32 |
| 250 kbps | 250 m | 2.5 m | ≤64 |
| 125 kbps | 500 m | 5.0 m | ≤64 |
如果必须使用星型拓扑(例如某些设备物理位置集中),需要采用有源集线器或CAN中继器,将星型结构转换为多个线性段。每个线性段独立配置终端电阻。
3.2.3 实战场景:星型拓扑的失败案例
某车载娱乐系统项目,设计人员为了布线方便,将三个ECU(发动机控制单元、车身控制模块、信息娱乐主机)通过一个中心连接器以星型方式连接,中心点未做任何处理。测试发现,在500kbps下,总线波形在分支处出现明显振铃,眼图闭合度不足30%,通信误码率高达10⁻³。
分析过程:使用TDR(时域反射计)测量,发现分支点阻抗从120Ω骤降至约40Ω,反射系数达0.5。信号在分支点来回反射,导致位时间内的电压不稳定。
整改措施:将星型改为菊花链线性连接,每个节点采用短支线(<10cm)接入主干,并在两端各放置120Ω终端电阻。整改后,眼图张开度提升至85%以上,误码率降至10⁻⁹以下。
3.2.4 常见误区与总结
- 误区1:为了美观或布线方便,随意增加支线长度。支线过长是CAN通信异常的常见原因。
- 误区2:在中间节点添加终端电阻。这会导致总线两端阻抗不匹配,增加反射。
- 总结:拓扑设计应遵循"主干连续、支线最短、终端在两端"的原则。
3.3 终端电阻(120Ω)的作用与选型
3.3.1 核心原理:为什么是120Ω?
CAN总线使用的双绞线特征阻抗约为120Ω。当信号在传输线末端遇到阻抗不匹配时,会产生反射。终端电阻的作用是吸收信号能量,使末端阻抗与传输线特征阻抗一致,从而消除反射。如果缺少终端电阻,信号会在末端全反射,导致波形过冲、振铃,严重时造成位错误。
标准规定,在总线两端各接一个120Ω电阻,并联后等效阻抗为60Ω。这个值也是CAN收发器输出驱动能力的设计参考。
3.3.2 选型要点与测量方法
终端电阻的选型需考虑以下因素:
- 精度:建议使用1%精度或更高的电阻,以保证阻抗匹配的准确性。
- 功率:在正常通信时,终端电阻上的功耗很小(约50mW),但需考虑短路或故障情况。推荐使用0.25W或0.5W的电阻。
- 封装:常用0805或1206封装,便于焊接和散热。
- 温度系数:在汽车等宽温环境下,建议使用±100ppm/°C或更好的电阻。
测量方法:在系统断电状态下,使用万用表测量CANH与CANL之间的电阻。如果总线两端各有一个120Ω电阻,且中间无其他负载,测量值应为60Ω。如果测量值为120Ω,说明有一端缺少终端电阻;如果接近0Ω,说明存在短路。
3.3.3 案例拆解:终端电阻缺失导致的间歇性故障
某自动化产线中,PLC与远程I/O模块通过CAN总线通信,距离约80米,波特率500kbps。系统运行数小时后出现偶发通信超时,且故障时间无规律。初步检查发现,总线两端均未安装终端电阻(设计遗漏)。
现象分析:示波器测量发现,总线空闲时波形正常,但发送数据时,信号末端反射导致第一个位出现约1.5V的过冲,随后振铃持续约200ns。在500kbps下,位时间为2μs,振铃虽然未直接覆盖采样点,但叠加了噪声,导致接收端误判。
处理步骤:
- 在总线两端各焊接一个120Ω/0.25W/1%电阻。
- 重新测量波形,过冲降至0.3V以内,振铃消失。
- 连续运行72小时,未再出现通信超时。
复盘经验:终端电阻不是可选项,而是CAN物理层的必备组件。在项目设计评审时,应检查原理图和PCB,确认终端电阻的位置和数量。
3.3.4 常见误区与总结
- 误区1:只在总线一端放置120Ω电阻。这会导致阻抗不匹配,反射依然存在。
- 误区2:使用0Ω电阻或跳线替代终端电阻。这会完全失去匹配作用。
- 误区3:在PCB上直接放置终端电阻,但未考虑电阻到连接器的引线长度。引线过长会引入寄生电感,影响高频性能。
- 总结:终端电阻的选型应综合考虑精度、功率、封装和温度特性,并严格遵循"两端各一"的原则。
- 确认总线拓扑为线性,支线长度符合波特率要求。
- 确认终端电阻位于总线物理两端,且阻值为120Ω±1%。
- 使用示波器测量显性差分电压(1.5V~3.0V)和隐性差分电压(0V±0.5V)。
- 断电测量CANH-CANL间电阻,应为60Ω±2Ω。
- 检查共模电压是否在收发器允许范围内(-12V~+12V)。
物理层特性是CAN总线可靠运行的基石。差分信号提供了抗干扰能力,线性拓扑保证了信号完整性,而120Ω终端电阻则是消除反射的关键。在实际设计中,应严格遵循这些规范,并通过示波器和万用表进行验证,确保系统在各种工况下都能稳定通信。