3. CAN物理层:差分信号原理、CAN_H与CAN_L电平定义、总线拓扑结构、终端电阻作用
CAN(Controller Area Network)物理层是总线通信的基石。与常见的UART、I2C等单端信号传输不同,CAN总线采用差分信号传输方式,具备极强的抗电磁干扰能力和远距离传输能力。本章将深入剖析CAN物理层的核心要素,包括差分信号原理、CAN_H与CAN_L的电平定义、总线拓扑结构以及终端电阻的关键作用。
3.1 差分信号原理
差分信号使用两根导线(CAN_H和CAN_L)来传输一路信号,接收端通过比较两根导线上的电压差来判断逻辑电平。这种设计使得外部电磁干扰在两根导线上产生几乎相同的共模噪声,而差分电压保持不变,从而大幅提升抗干扰能力。
核心优势: 差分信号对共模噪声(如电机启动、电磁阀动作产生的干扰)具有天然抑制能力,非常适合农业机械中强电磁干扰的作业环境。
3.2 CAN_H与CAN_L电平定义
CAN总线定义了两种逻辑状态:显性(Dominant)和隐性(Recessive)。显性电平对应逻辑“0”,隐性电平对应逻辑“1”。当多个节点同时发送时,显性电平会覆盖隐性电平,实现总线仲裁。
| 参数 | 隐性电平(逻辑1) | 显性电平(逻辑0) |
|---|---|---|
| CAN_H 电压 | 约 2.5V | 约 3.5V |
| CAN_L 电压 | 约 2.5V | 约 1.5V |
| 差分电压 Vdiff | 约 0V(≤0.5V) | 约 2.0V(≥0.9V) |
| 总线状态 | 空闲或发送1 | 发送0(仲裁获胜) |
实战提示: 使用示波器测量CAN_H和CAN_L对地电压,是排查总线故障的常用手段。正常通信时,两根线电压应在1.5V~3.5V之间摆动,且波形对称。
3.3 总线拓扑结构
CAN总线采用多主总线的线性拓扑结构,所有节点都并联在同一对双绞线上。节点之间通过CAN收发器(如TJA1050、SN65HVD230)连接到总线。总线两端必须各接一个120Ω的终端电阻。
- 线性总线: 主干线从一端延伸到另一端,节点通过短支线(<1m)接入。
- 多主通信: 任何节点都可以主动发起通信,无需主机轮询。
- 支线长度限制: 支线越短越好,过长会导致信号反射,影响通信质量。
3.4 终端电阻作用
终端电阻是CAN总线物理层中至关重要的元件,通常为120Ω,安装在总线的最远两端。其主要作用包括:
| 作用 | 说明 | 后果(无终端电阻) |
|---|---|---|
| 消除信号反射 | 匹配总线特性阻抗,防止信号在总线末端反射,造成波形畸变 | 通信误码率升高,严重时无法通信 |
| 提供差分电压 | 隐性状态时,终端电阻将总线电压拉到2.5V共模电平 | 隐性电平不稳定,总线无法正确识别空闲状态 |
| 保证总线电平 | 显性状态时,电流流过终端电阻产生差分电压 | 显性电平幅值不足,节点无法驱动总线 |
常见错误: 在CAN总线调试中,忘记安装终端电阻或只在单端安装一个120Ω电阻,是导致通信异常的常见原因。使用万用表测量CAN_H与CAN_L之间的电阻,正常值应为60Ω(两个120Ω并联)。
3.5 物理层参数速查表
| 参数 | 典型值 | 说明 |
|---|---|---|
| 总线长度 | ≤40m(1Mbps) | 速率越低,总线长度可越长(如250kbps时可达250m) |
| 终端电阻 | 120Ω(两端各1个) | 与双绞线特性阻抗匹配 |
| 共模电压范围 | -2V ~ +7V | CAN收发器可容忍的共模电压范围 |
| 最大节点数 | 110个(标准) | 受收发器驱动能力限制,实际建议不超过30个 |
| 支线最大长度 | ≤1m | 支线过长会导致信号反射 |
实战要点: 在变量施肥控制器设计中,建议将CAN总线速率设置为250kbps,既能满足施肥控制指令的实时性要求,又能保证总线长度覆盖大型农机(如拖拉机+施肥机)的物理距离。总线两端务必安装120Ω终端电阻,且使用屏蔽双绞线以增强抗干扰能力。