CAN 物理层

拓扑结构

CAN 模块作为协议控制器,需配合外部收发器(Transceiver)完成逻辑电平与差分信号的转换。物理层设计直接决定了通信的距离与抗干扰能力。根据应用场景不同,CAN 支持两种典型的网络拓扑:

  1. 高速闭环网络(ISO 11898-2)

../../../_images/can_topology.svg

适用于高速(标准 CAN 最高 1Mbps)、短距离(<40m)通信。总线两端须连接 120Ω 终端电阻以抑制信号反射。

  1. 低速开环网络(ISO 11898-3)

../../../_images/can_topology_open.svg

适用于低速(最高 125Kbps)、远距离(<1km)通信。

物理信号

CAN 控制器到收发器之间的 TX/RX 是正常逻辑电平,即 0 用低电平表示,1 用高电平表示。而收发器到总线 H/L 上的信号则使用差分信号传输。

  • 当 CAN 节点需要发送数据时,控制器将要发送的二进制编码通过 TX 发送到收发器,收发器将这个普通的逻辑电平转换为差分信号,通过差分线 H 和 L 传输到总线网络。

  • 当 CAN 节点需要接收数据时,收发器将 H 和 L 上收到的差分信号转换为普通逻辑电平,然后通过 RX 输出到 CAN 控制器。

差分信号传输时需要两根信号线,两根信号线上电压幅度相同,相位相反,其差值用来表示逻辑电平 0 和 1,如下图展示了一组标准的差分信号及其差值。

../../../_images/can_difference_signal.png

相较于单根信号线传输,差分信号传输时具有以下特点:

  • 抗干扰能力强 :收到噪声干扰时,噪声同时耦合到两根信号线上,最终的信号差值会相互抵消,外界的共模噪声会被抑制

  • 低电磁辐射 :由于信号线采用双绞线形式连接,磁场极性相反,对外辐射会因此抵消,对周围电路的干扰更小,更容易通过 EMC(电磁兼容性)测试

  • 时序定位精准:单端信号判断逻辑翻转依赖于一个固定的参考电压(如 Vcc/2),受电源波动影响大。差分信号的逻辑翻转点是两根信号线的交叉点,交叉点的检测不受参考电压漂移的影响,这极大地减小了时序抖动(Jitter)。

  • 无需公共地:单端信号必须以 GND 作为参考,两端参考电压不一致易导致信号误判;差分信号则只关注电压差,无需公共地。

备注

线路上实际传输的差分信号受到真实电磁环境、传输距离等影响,信号形状、振幅和相位等都会发生变形。

差分信号

ISO 11898 标准中对于差分信号做出如下规定:

ISO 11898-2 (高速) 物理层电压规范

信号

隐性 (逻辑 1)

显性 (逻辑 0)

最小值

典型值

最大值

最小值

典型值

最大值

CAN_High (V)

2.0

2.5

3.0

2.75

3.5

4.5

CAN_Low (V)

2.0

2.5

3.0

0.5

1.5

2.25

High-Low 电位差 (V)

-0.5

0

0.05

1.5

2.0

3.0

ISO 11898-3 (低速) 物理层电压规范

信号

隐性 (逻辑 1)

显性 (逻辑 0)

最小值

典型值

最大值

最小值

典型值

最大值

CAN_High (V)

1.6

1.75

1.9

3.85

4.0

5.0

CAN_Low (V)

3.10

3.25

3.4

0

1.0

1.15

High-Low 电位差 (V)

-0.3

-1.5

/

0.3

3.0

/

以高速物理层电压规范 ISO 11898-2 为例:

  • 当表示逻辑 1( 隐性电平 ),H 和 L 线上的电压均为 2.5V,压差为 0V

  • 当表示逻辑 0( 显性电平 ),H 线上电压为 3.5V,L 线上电压为 1.5V,压差 2V

../../../_images/can_phy_voltage.png

例如,当收发器想要发送控制器传来的逻辑电平 0,它会使 H 信号线输出 3.5V,同时 L 信号线输出 1.5v,从而输出显性电平逻辑 0。

小技巧

ISO 11898 中规定的显性和隐性电平,具有类似 I2C 总线的”线与“特性(任意节点发出低电平都会拉低总线电平)。假如有两个 CAN 通信节点,在同一时间,一个输出隐性电平, 另一个输出显性电平, 则总线上呈现显性电平(逻辑 0)。这也是节点通信时仲裁的根本机制。

在整个通信网络中,因为共用总线,同一时刻只能有一个通信节点发送信号(仲裁阶段支持多个节点同时发送),其余的节点在该时刻都只能接收。 在物理层面上,CAN 节点在发送(TX)位信号的同时,会实时通过 RX 回读总线电平(即逐位监听),以此来实现总线仲裁和错误检测。