3、CAN物理层:差分信号、显性/隐性电平、总线拓扑、终端电阻、线缆选择与布线规范
CAN(Controller Area Network)物理层是CAN总线系统稳定运行的基石。与UART、I2C等单端信号传输方式不同,CAN总线采用差分信号传输,通过两条导线(CAN_H和CAN_L)上的电压差来表示逻辑状态。这种设计赋予了CAN总线极强的抗电磁干扰(EMI)能力、故障容错能力以及长距离传输能力。本章将深入剖析CAN物理层的核心要素,包括差分信号原理、显性/隐性电平定义、总线拓扑结构、终端电阻匹配、线缆选型以及工程布线规范,帮助读者建立完整的物理层设计知识体系。
上图展示了CAN物理层的完整信号链路:MCU中的CAN控制器将并行数据转换为串行位流,通过TXD引脚发送至CAN收发器;收发器将逻辑电平转换为差分信号,驱动CAN_H和CAN_L两条总线导线;总线两端各连接一个120Ω终端电阻,用于吸收信号反射。差分信号的核心优势在于,接收端通过比较CAN_H与CAN_L的电压差(Vdiff)来判断总线状态,而非依赖对地的电压,因此共模干扰(如电机噪声、电源波动)会同时作用于两条导线,不会影响差分电压差,从而保证了信号的完整性。
3.1 差分信号与显性/隐性电平机制
核心原理
CAN总线采用两根导线——CAN_H(高线)和CAN_L(低线)——传输差分信号。收发器在发送端将逻辑信号转换为两线之间的电压差,接收端通过差分放大器检测该电压差并还原逻辑电平。根据ISO 11898-2标准,CAN总线的两种逻辑状态定义如下:
- 显性电平(Dominant,逻辑0):CAN_H被拉高至约3.5V,CAN_L被拉低至约1.5V,差分电压Vdiff ≈ 2.0V。显性电平具有总线优先权,多个节点同时发送时,显性位会覆盖隐性位。
- 隐性电平(Recessive,逻辑1):CAN_H和CAN_L均被偏置在约2.5V,差分电压Vdiff ≈ 0V。隐性电平表示总线空闲或释放状态。
这种电平定义使得CAN总线具备“线与”特性:当多个节点同时发送时,只要有一个节点输出显性位,总线上就呈现显性电平。这一机制是CAN总线仲裁(Arbitration)的基础,也是其高实时性的重要保障。
判断方法
在工程调试中,使用示波器测量CAN_H和CAN_L对地电压,以及两者的差分电压,是判断总线状态最直接的方法。具体操作流程如下:
- 将示波器通道1连接至CAN_H,通道2连接至CAN_L,地线夹连接至总线参考地(通常为节点电源地)。
- 设置触发模式为“上升沿触发”,触发电平设为2.5V(隐性电平)。
- 观察波形:总线空闲时,两线均稳定在2.5V;有数据帧传输时,显性位表现为CAN_H上升至3.5V、CAN_L下降至1.5V,隐性位恢复至2.5V。
- 使用示波器的数学通道(MATH)计算CH1-CH2,直接观察差分电压波形:显性位约2V,隐性位约0V。
案例拆解:显性/隐性电平异常排查
背景与现象:某工业设备现场,CAN总线通信间歇性中断,故障时总线错误帧增多。使用示波器测量发现,CAN_H在显性位时仅能达到2.8V(正常应为3.5V),CAN_L在显性位时仅降至2.2V(正常应为1.5V),差分电压仅0.6V,低于收发器识别阈值(通常为0.9V)。
分析过程:初步判断为收发器驱动能力不足或总线负载过重。检查总线节点数量为32个,接近标准ISO 11898-2规定的最大节点数(通常为30个)。进一步测量总线直流电阻,发现总线两端终端电阻均为120Ω,但总线线缆长度超过200米,且使用了截面积仅0.25mm²的细线。
操作步骤:
- 更换截面积为0.5mm²以上的双绞屏蔽线,缩短总线长度至150米以内。
- 将总线两端终端电阻更换为精密120Ω(±1%)电阻,并测量确认阻值。
- 在总线中间位置增加一个中继器(Repeater),将网络分割为两段,每段节点数控制在15个以内。
结果对比:整改后,显性位差分电压恢复至2.0V,总线错误帧消失,通信恢复正常。该案例表明,总线负载(节点数、线缆长度、线径)直接影响差分电平幅值,设计时必须预留足够的驱动余量。
常见误区与总结
- 误区1:认为隐性电平是“无信号”状态,实际隐性电平是收发器主动驱动的2.5V共模电压,并非高阻态。
- 误区2:忽略共模电压范围。ISO 11898-2规定收发器共模输入范围通常为-2V至+7V,超出此范围可能导致通信失败。
- 误区3:将显性/隐性电平与TTL电平混淆。CAN收发器输出的是模拟差分信号,不能直接与MCU的GPIO连接。
3.2 总线拓扑结构与终端电阻
核心原理
CAN总线采用多点接入的线性拓扑(Bus Topology),所有节点通过分支线(Stub)挂接在主传输线上。标准ISO 11898-2推荐的最大传输距离与波特率相关:1Mbps时最大长度约40米,125kbps时可达500米。总线两端必须各接入一个120Ω终端电阻,其阻值应与双绞线的特征阻抗(通常为120Ω)匹配,以吸收信号在传输线末端产生的反射,避免波形振铃和过冲。
| 波特率 | 最大总线长度 | 最大分支长度 | 节点数 |
|---|---|---|---|
| 1 Mbps | 40 m | 0.3 m | ≤30 |
| 500 kbps | 100 m | 0.5 m | ≤30 |
| 250 kbps | 250 m | 1.0 m | ≤30 |
| 125 kbps | 500 m | 2.0 m | ≤30 |
终端电阻的功率选择需考虑总线故障情况。正常工作时,显性位在120Ω电阻上的功耗约为P = V²/R = 2²/120 ≈ 33mW,但若总线对地短路,电阻可能承受持续大电流,因此工程上常选用0.25W或0.5W的电阻。
判断方法
使用万用表测量总线终端电阻是判断总线物理连接是否正确的快速方法:
- 断开所有节点电源,确保总线无源。
- 在总线任意一端,用万用表电阻档测量CAN_H与CAN_L之间的电阻。
- 正常读数应为60Ω(两个120Ω电阻并联)。若读数为120Ω,说明只有一端有终端电阻;若读数为0Ω,说明总线短路;若读数无穷大,说明总线断路或缺少终端电阻。
案例拆解:终端电阻缺失导致的通信故障
背景与现象:某车载电子系统在整车装配后,CAN总线通信时好时坏,尤其在车辆振动时故障频发。检查发现,总线两端中有一端的终端电阻未安装(设计遗漏),导致信号反射严重。
分析过程:使用示波器观察总线波形,发现显性位后沿存在明显的振铃(Ring),幅值超过2V,持续约200ns。这种反射信号在总线空闲时可能被误判为显性位,导致错误帧和总线关闭。
操作步骤:
- 在缺失端补装120Ω/0.5W终端电阻,并确认焊接质量。
- 重新测量总线两端电阻,确认均为60Ω。
- 使用示波器复测波形,振铃消失,显性/隐性电平转换干净利落。
结果对比:补装终端电阻后,通信故障完全消除。该案例说明,终端电阻是CAN物理层不可省略的组成部分,设计阶段必须严格核对。
常见误区与总结
- 误区1:在总线中间节点也加装终端电阻,导致总线等效电阻低于60Ω,增加收发器负载。
- 误区2:使用普通碳膜电阻代替精密电阻,阻值偏差超过±5%时可能影响信号质量。
- 误区3:将终端电阻集成在节点PCB上,当该节点从总线断开时,终端电阻也随之移除,破坏总线匹配。
3.3 线缆选择与布线规范
核心原理
CAN总线推荐使用特征阻抗为120Ω的双绞线(Twisted Pair)。双绞线通过两根导线的紧密绞合,使外部电磁干扰在两根线上产生等幅同相的共模噪声,而差分接收端可有效抑制共模噪声。线缆的截面积、绞距、屏蔽层和绝缘材料直接影响总线性能:
- 截面积:推荐0.5mm²(AWG20)至0.75mm²(AWG18),截面积过小会增加线路电阻,导致远端节点供电不足或信号衰减。
- 绞距:绞距越小(绞合越密),抗干扰能力越强,但线缆成本越高。典型绞距为20-40mm。
- 屏蔽层:在强电磁干扰环境(如变频器附近)应使用屏蔽双绞线,屏蔽层单点接地(通常在控制器端),避免形成地环路。
- 绝缘材料:PVC或PE绝缘均可,但需满足工作温度范围(-40℃至+125℃)和阻燃要求。
布线规范
工程布线时,应遵循以下原则:
- 主干线连续:总线主干线应从第一个节点连续敷设至最后一个节点,避免在中间断开或形成星型拓扑。
- 分支线尽量短:分支线(Stub)长度应小于0.3m(1Mbps时),否则会产生反射。若分支不可避免,应使用CAN中继器或集线器。
- 远离干扰源:总线线缆应远离动力线、高频信号线,平行间距至少10cm;若必须交叉,应垂直交叉。
- 接地策略:屏蔽层单点接地,节点地线采用星型接地,避免形成地环路。
- 线缆标识:CAN_H和CAN_L应使用不同颜色(如CAN_H为黄色,CAN_L为绿色),便于维护。
案例拆解:布线不规范导致的通信干扰
背景与现象:某工厂自动化产线,CAN总线通信在电机启动时频繁出现CRC错误。现场勘察发现,CAN总线线缆与变频器输出动力线平行敷设在同一线槽内,间距仅3cm,且未使用屏蔽线。
分析过程:变频器输出PWM波产生强烈的电磁辐射,通过空间耦合在CAN线缆上感应出共模噪声。由于未使用屏蔽层,共模噪声无法被有效抑制,导致差分接收端误判。
操作步骤:
- 将CAN总线线缆更换为屏蔽双绞线(120Ω特征阻抗)。
- 重新规划线槽,使CAN线缆与动力线间距增大至20cm以上。
- 屏蔽层在控制器端单点接地,接地电阻小于1Ω。
结果对比:整改后,电机启动时CAN通信错误帧降为零。该案例表明,布线规范与线缆选型同等重要,必须从系统层面统筹规划。
常见误区与总结
- 误区1:使用普通平行线(非双绞)代替双绞线,导致共模抑制能力大幅下降。
- 误区2:屏蔽层两端接地,形成地环路,反而引入更大的共模干扰。
- 误区3:为节省成本使用过细线缆(如0.2mm²),在长距离传输时信号衰减严重。