3、物理层基础:差分信号、显性/隐性电平、总线拓扑、终端电阻、线缆与连接器要求

CAN(Controller Area Network)总线之所以能在工业控制、车载网络等强电磁干扰环境中稳定工作,其物理层设计功不可没。与常见的UART、I2C等单端信号传输方式不同,CAN总线采用差分信号传输,配合特定的电平逻辑、总线拓扑和终端匹配策略,构成了一个高可靠性、低成本、长距离传输的通信基础。本章将深入剖析CAN物理层的五大核心要素:差分信号原理、显性/隐性电平定义、总线拓扑结构、终端电阻的作用与计算,以及线缆与连接器的选型要求。理解这些底层机制,是后续进行CAN网络故障排查、节点设计和通信性能优化的前提。

CAN物理层核心要素与信号关系 ECU节点1 CAN_H/CAN_L ECU节点2 CAN_H/CAN_L ECU节点3 CAN_H/CAN_L ECU节点4 CAN_H/CAN_L CAN_H(红色) CAN_L(灰色) 120Ω 120Ω 差分信号波形 CAN_H≈2.5V CAN_L≈2.5V 隐性(1) CAN_H≈3.5V CAN_L≈1.5V 显性(0) 2V 拓扑:总线型(直线型),节点通过短支线接入 终端:两端各1个120Ω 信号:差分,抗干扰

上图展示了CAN总线物理层的核心架构。多个ECU(电子控制单元)节点通过CAN_H和CAN_L两根线并联在一条主干线上,形成典型的总线型拓扑。在总线的两个物理末端,分别跨接一个120Ω的终端电阻。下方波形示意了显性(Dominant)与隐性(Recessive)两种逻辑状态对应的差分电压关系。接下来,我们将逐一拆解这些要素。

3.1 差分信号:抗干扰的基石

核心原理:CAN总线使用两根导线——CAN_H(高线)和CAN_L(低线)来传输一路信号。信息不体现在单根线对地的电压上,而是体现在两根线之间的电压差(Vdiff = VCAN_H - VCAN_L)。接收器通过差分放大器检测这个差值,从而还原逻辑电平。

这种设计的最大优势在于共模抑制。当外界电磁干扰(如发动机点火、电机运转)同时作用于两根导线时,会在两根线上感应出大小相等、方向相同的共模噪声。由于接收器只关心两根线的差值,共模噪声在相减运算中被自然抵消,因此CAN总线对电磁干扰(EMI)和射频干扰(RFI)具有极强的免疫力。

判断方法:在示波器上观察CAN总线信号时,应使用差分探头(或A-B通道相减模式)测量CAN_H与CAN_L之间的电压差。若使用单端探头分别测量,会看到两根线在显性/隐性状态下的电压变化,但无法直观判断差分质量。正常的差分信号波形应清晰、无畸变,显性电平差分电压约为2V,隐性电平差分电压约为0V。

3.2 显性电平与隐性电平:总线仲裁的逻辑基础

CAN总线定义了两种逻辑状态:显性(Dominant)和隐性(Recessive)。

  • 隐性电平(逻辑1):此时总线处于空闲状态。CAN_H和CAN_L的电压都被偏置在约2.5V(对于ISO 11898-2标准),差分电压Vdiff ≈ 0V。隐性电平由节点内部的偏置电阻产生,是总线的默认状态。
  • 显性电平(逻辑0):当节点需要发送数据时,会驱动CAN_H拉高至约3.5V,同时将CAN_L拉低至约1.5V,差分电压Vdiff ≈ 2V。显性电平具有优先级,它会覆盖总线上的隐性电平。

这种电平设计是CAN总线非破坏性仲裁机制的基础。当多个节点同时发送数据时,如果某个节点发送显性位(0),而另一个节点发送隐性位(1),总线最终呈现显性电平(0)。发送隐性位的节点会检测到总线电平与自己发送的不一致,从而立即退出仲裁,转为接收状态。这保证了高优先级ID的报文能够无延迟地继续传输。

状态 逻辑值 CAN_H电压 CAN_L电压 差分电压 (Vdiff) 总线行为
隐性 1 2.5V 2.5V 0V 空闲、被显性覆盖
显性 0 3.5V 1.5V 2V 主动驱动、仲裁获胜
风险提示:如果CAN_H或CAN_L对地短路、对电源短路,或者两根线之间短路,都会导致差分电压异常,使总线进入总线关闭(Bus-Off)或持续显性错误状态。排查时,应首先测量CAN_H和CAN_L对地的静态电压,正常应在2.5V左右(隐性状态)。

3.3 总线拓扑:直线型为主,星型为忌

CAN总线标准推荐使用直线型(总线型)拓扑,即所有节点通过尽可能短的支线(Stub)并联到一根主干线上。主干线是信号传输的唯一通道,信号在主干线两端传播。

为什么不能使用星型或树型拓扑?因为CAN总线依赖终端电阻来吸收信号反射。在直线型拓扑中,信号从一端传播到另一端,在终端电阻处被吸收,不会产生反射。而在星型拓扑中,信号会在多个分支点产生阻抗不连续,导致严重的信号反射,造成位错误和通信失败。虽然通过复杂的中心节点和有源中继器可以实现星型组网,但这违背了CAN总线的设计初衷,增加了成本和故障点。

工程经验:在布置CAN网络时,应遵循“主干尽量长,支线尽量短”的原则。对于高速CAN(如500kbps),单根支线长度建议不超过0.3米。如果节点位置分散,应尽量将节点靠近主干线,或者使用CAN集线器(Hub)进行拓扑转换,而不是简单地将线缆汇聚在一起。

3.4 终端电阻:消除反射的关键

终端电阻跨接在总线物理两端的CAN_H和CAN_L之间,其阻值必须与线缆的特性阻抗相匹配。标准CAN总线线缆的特性阻抗约为120Ω,因此使用两个120Ω电阻分别并联在总线两端,等效阻抗为60Ω。

作用原理:当信号沿总线传播到达末端时,如果末端阻抗与线缆特性阻抗不一致,信号能量会有一部分被反射回来,形成振铃(Ringing),干扰后续信号的正确采样。终端电阻的作用就是“吸收”到达末端的信号能量,消除反射。

判断方法:在系统断电状态下,使用万用表在任意节点处测量CAN_H与CAN_L之间的电阻。如果网络正常且只有两个终端电阻,测量值应约为60Ω。如果测量值为120Ω,说明缺少一个终端电阻;如果测量值接近0Ω,说明总线可能存在短路。

// 终端电阻测量步骤(断电状态)
1. 断开所有节点电源。
2. 将万用表调至电阻档(Ω)。
3. 红表笔接CAN_H,黑表笔接CAN_L。
4. 读数应为 60Ω ± 5%(标准值)。
   - 若为 120Ω:检查总线末端是否漏接终端电阻。
   - 若为 0Ω:检查是否有线缆短路或节点损坏。
常见误区:不要试图通过增加终端电阻的数量或改变阻值来“增强”信号。错误阻值的终端电阻会破坏阻抗匹配,反而增加反射。此外,终端电阻必须位于总线的物理两端,而不是在中间的某个节点上。

3.5 线缆与连接器要求

CAN总线的性能与线缆质量密切相关。推荐使用特性阻抗为120Ω的双绞线。双绞线结构能有效抵消外部磁场干扰,并减少线对之间的串扰。

  • 线缆规格:对于车载应用,通常使用0.5mm²(约20 AWG)或更粗的铜芯线。对于工业现场,应使用带屏蔽层的双绞线,屏蔽层单点接地,以增强抗干扰能力。
  • 线缆颜色:行业惯例使用黄色作为CAN_H,绿色作为CAN_L,但并非强制标准。在工程实施中,必须做好线缆标识,避免接错。
  • 连接器:常见的连接器类型包括DB9(用于工控设备)、RJ45(非标准,但部分设备使用)、以及汽车行业广泛使用的德驰(Deutsch)连接器或AMP Superseal连接器。连接器应具备良好的密封性和抗震性,接触电阻要小。
实战场景:某设备在实验室测试正常,但装车后出现偶发性通信中断。排查发现,故障点位于一个连接器端子处,由于压接不良导致接触电阻增大。在车辆振动时,接触电阻变化引起差分电压波动,最终导致位错误。更换合格的压接端子后,故障消失。此案例说明,物理层的连接可靠性往往比电气参数更隐蔽,也更致命。

3.6 案例拆解:总线长度与终端电阻的匹配分析

背景:一条用于生产线设备控制的CAN总线,通信速率为250kbps,总线长度约为80米。近期频繁出现节点掉线现象,且错误帧增多。

初步诊断:使用CAN分析仪抓取总线日志,发现大量“CRC错误”和“位填充错误”。用万用表测量CAN_H与CAN_L之间的电阻,读数为60Ω,说明终端电阻正常。

深入分析:考虑到总线长度80米,对于250kbps的速率,信号在总线上的传播延迟(约5ns/m)导致的总线往返延迟约为800ns。而250kbps的位时间为4μs(4000ns)。虽然延迟未超过位时间的50%,但现场存在强电设备干扰。进一步检查发现,总线支线过长,有一个节点通过一根约5米长的支线接入主干线,形成了明显的阻抗不连续点。

解决方案:将过长的支线缩短至0.5米以内,并在支线靠近主干线处增加一个小的磁环以抑制高频噪声。同时,检查并紧固了所有连接器。

结果:改造后,错误帧消失,通信恢复正常。

复盘:终端电阻正确并不代表物理层完美。支线过长是高速CAN网络中最常见的“隐形杀手”。在布线设计阶段,就必须严格规划节点位置,避免事后增加长支线。

3.7 常见误区与总结

本章内容可总结为以下关键点,也是工程师在实际工作中容易犯错的地方:

  1. 误区一:认为只要终端电阻阻值对就行,忽略了其必须位于总线物理末端的位置要求。
  2. 误区二:使用普通平行线代替双绞线,导致共模干扰抑制能力下降。
  3. 误区三:在总线中间节点接入终端电阻,导致两端信号反射。
  4. 误区四:忽视支线长度,随意从主干线“T”型引出长线。
  5. 误区五:将CAN_GND与系统地直接相连,形成地环路,引入噪声。正确的做法是单点接地或通过共模扼流圈连接。
总结复盘:CAN物理层是通信的基石。一个设计良好的物理层应具备:正确的差分信号布线、符合标准的显隐性电平、严格的直线型拓扑、两端匹配的终端电阻以及优质的双绞线缆。在排查通信故障时,应遵循“先物理层,后数据链路层”的原则,使用万用表和示波器验证物理层参数,往往能快速定位80%的疑难问题。