CAN 物理层
拓扑结构
CAN 模块作为协议控制器,需配合外部收发器(Transceiver)完成逻辑电平与差分信号的转换。物理层设计直接决定了通信的距离与抗干扰能力。根据应用场景不同,CAN 支持两种典型的网络拓扑:
高速闭环网络(ISO 11898-2)
适用于高速(标准 CAN 最高 1Mbps)、短距离(<40m)通信。总线两端须连接 120Ω 终端电阻以抑制信号反射。
低速开环网络(ISO 11898-3)
适用于低速(最高 125Kbps)、远距离(<1km)通信。
物理信号
CAN 控制器到收发器之间的 TX/RX 是正常逻辑电平,即 0 用低电平表示,1 用高电平表示。而收发器到总线 H/L 上的信号则使用差分信号传输。
当 CAN 节点需要发送数据时,控制器将要发送的二进制编码通过 TX 发送到收发器,收发器将这个普通的逻辑电平转换为差分信号,通过差分线 H 和 L 传输到总线网络。
当 CAN 节点需要接收数据时,收发器将 H 和 L 上收到的差分信号转换为普通逻辑电平,然后通过 RX 输出到 CAN 控制器。
差分信号传输时需要两根信号线,两根信号线上电压幅度相同,相位相反,其差值用来表示逻辑电平 0 和 1,如下图展示了一组标准的差分信号及其差值。
相较于单根信号线传输,差分信号传输时具有以下特点:
抗干扰能力强 :收到噪声干扰时,噪声同时耦合到两根信号线上,最终的信号差值会相互抵消,外界的共模噪声会被抑制
低电磁辐射 :由于信号线采用双绞线形式连接,磁场极性相反,对外辐射会因此抵消,对周围电路的干扰更小,更容易通过 EMC(电磁兼容性)测试
时序定位精准:单端信号判断逻辑翻转依赖于一个固定的参考电压(如 Vcc/2),受电源波动影响大。差分信号的逻辑翻转点是两根信号线的交叉点,交叉点的检测不受参考电压漂移的影响,这极大地减小了时序抖动(Jitter)。
无需公共地:单端信号必须以 GND 作为参考,两端参考电压不一致易导致信号误判;差分信号则只关注电压差,无需公共地。
备注
线路上实际传输的差分信号受到真实电磁环境、传输距离等影响,信号形状、振幅和相位等都会发生变形。
差分信号
ISO 11898 标准中对于差分信号做出如下规定:
信号 |
隐性 (逻辑 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 |
信号 |
隐性 (逻辑 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
例如,当收发器想要发送控制器传来的逻辑电平 0,它会使 H 信号线输出 3.5V,同时 L 信号线输出 1.5v,从而输出显性电平逻辑 0。
小技巧
ISO 11898 中规定的显性和隐性电平,具有类似 I2C 总线的”线与“特性(任意节点发出低电平都会拉低总线电平)。假如有两个 CAN 通信节点,在同一时间,一个输出隐性电平, 另一个输出显性电平, 则总线上呈现显性电平(逻辑 0)。这也是节点通信时仲裁的根本机制。
在整个通信网络中,因为共用总线,同一时刻只能有一个通信节点发送信号(仲裁阶段支持多个节点同时发送),其余的节点在该时刻都只能接收。 在物理层面上,CAN 节点在发送(TX)位信号的同时,会实时通过 RX 回读总线电平(即逐位监听),以此来实现总线仲裁和错误检测。