3、CAN物理层设计:差分信号原理、CAN收发器选型(TJA1040/TJA1145)、终端电阻匹配、线束设计要点
各位工程师朋友,咱们今天聊聊CAN物理层。很多人觉得物理层就是接几根线,没什么技术含量。其实不然。我见过太多项目,软件写得天衣无缝,最后栽在物理层上——信号反射、共模干扰、收发器烧毁,各种问题层出不穷。说白了,物理层是CAN通信的基石,这层不稳,上层协议栈再牛也白搭。
3.1 差分信号原理:为什么CAN要用两根线?
先问大家一个问题:为什么CAN总线要用CAN_H和CAN_L两根线,而不是像UART那样单线传输?
答案很简单——抗干扰。差分信号传输的是两根线之间的电压差,而不是对地的绝对电压。你想想看,如果外部有电磁干扰,它通常会同时耦合到两根线上(共模干扰),但两根线的电压差基本不变。这就是差分信号的魅力所在。
具体到CAN总线,它的逻辑电平定义是这样的:
- 显性电平(Dominant):CAN_H ≈ 3.5V,CAN_L ≈ 1.5V,差分电压约2V,对应逻辑0
- 隐性电平(Recessive):CAN_H ≈ 2.5V,CAN_L ≈ 2.5V,差分电压约0V,对应逻辑1
关键点:显性电平会“覆盖”隐性电平。也就是说,只要有一个节点发送显性位,总线就呈现显性状态。这是CAN总线仲裁机制的基础。
我在项目中遇到过一件事:有个同事用示波器量CAN_H对地波形,发现只有2.5V到3.5V跳变,觉得信号幅度太小,怀疑收发器坏了。其实这是正常的——你单看一根线当然看不出名堂,得看差分信号。所以,调试CAN总线时,一定要用差分探头,或者直接看CAN_H减CAN_L的波形。
3.2 CAN收发器选型:TJA1040 vs TJA1145
收发器是MCU的CAN控制器和物理总线之间的桥梁。它负责把控制器输出的数字信号转换成差分信号,同时提供总线保护和驱动能力。
市面上收发器型号很多,我重点讲两款常用的:TJA1040 和 TJA1145。
3.2.1 TJA1040:经典高速收发器
TJA1040是NXP的经典产品,支持最高1Mbps的通信速率。它兼容ISO 11898-2标准,在汽车电子领域应用非常广泛。
它的主要特点:
- 待机电流极低(<10μA),支持远程唤醒
- 内置总线故障保护:对地短路、对电源短路、总线短路都能扛
- 电磁辐射(EME)低,电磁抗扰(EMI)高
我个人习惯在普通座舱域控、网关节点上使用TJA1040。它性价比高,稳定可靠,没什么花里胡哨的功能。
3.2.2 TJA1145:带选择性唤醒的“聪明”收发器
TJA1145是TJA1040的升级版,最大的亮点是支持CAN FD(灵活数据速率)和选择性唤醒(Selective Wake)。
什么叫选择性唤醒?举个例子:传统CAN总线,任何一个节点发报文,所有节点都会被唤醒。但在TJA1145上,你可以配置它只对特定ID的报文响应唤醒。这对降低整车静态功耗非常有帮助。
| 特性 | TJA1040 | TJA1145 |
|---|---|---|
| 最高速率 | 1 Mbps (CAN 2.0) | 5 Mbps (CAN FD) |
| 选择性唤醒 | 不支持 | 支持 |
| 待机电流 | <10 μA | <5 μA |
| 典型应用 | 网关、普通ECU | 需要低功耗唤醒的节点 |
选型建议:如果你的节点需要常供电(比如门模块、座椅模块),并且对静态功耗有严格要求,我建议用TJA1145。否则,TJA1040完全够用,还便宜不少。
3.3 终端电阻匹配:为什么是120Ω?
终端电阻是CAN总线物理层最容易忽略、也最容易出问题的地方。
先说说为什么需要终端电阻。CAN总线本质上是一条传输线,信号在线上传播时,如果遇到阻抗不连续的点,就会产生反射。反射信号叠加到原始信号上,会导致波形畸变,严重时直接造成通信错误。
终端电阻的作用就是吸收信号能量,消除反射。CAN总线规范规定,特征阻抗为120Ω,所以终端电阻也取120Ω。
具体怎么接?标准做法是:在总线的最两端各接一个120Ω电阻。注意,是两端,不是每个节点都接。
我曾经踩过的坑:有次调试一个座舱域控和几个子节点的通信,发现偶尔丢帧。查了半天,发现是线束设计时,终端电阻接在了中间节点上,而不是总线两端。结果信号反射严重,高速通信时波形都变形了。后来改成两端各一个120Ω,问题立刻解决。
这里有个小技巧:如果你不确定终端电阻是否接对了,可以用万用表量CAN_H和CAN_L之间的电阻。在总线断电的情况下,正常值应该是60Ω左右(两个120Ω并联)。如果量出来是120Ω,说明只接了一个;如果是0Ω,说明短路了;如果是无穷大,说明一个都没接。
3.4 线束设计要点:别让物理连接拖后腿
线束设计看似简单,其实门道很多。我总结几个关键点:
3.4.1 双绞线:必须用,别省
CAN总线必须使用双绞线。双绞线能有效抑制共模干扰,因为两根线绞在一起,受到的电磁干扰几乎相同,差分信号不受影响。我见过有人用普通排线代替双绞线,结果通信距离稍微一长就出错。
3.4.2 线缆长度和分支长度
CAN总线的最大长度取决于通信速率。1Mbps时,总线长度一般不超过40米。速率越低,可以越长。
另外,分支长度(stub length)要严格控制。每个节点到总线的分支线越短越好,一般不超过0.3米。分支太长,相当于在总线上加了一个“死胡同”,信号反射会很严重。
3.4.3 屏蔽和接地
在电磁环境恶劣的场合(比如靠近电机、逆变器),建议使用屏蔽双绞线。屏蔽层要单点接地,避免形成地环路。
3.4.4 连接器选型
车规级连接器推荐使用USCAR-2或TE的MQS系列。这些连接器有良好的机械锁止和防水性能,能保证长期可靠性。
线束设计速查表
- 线缆类型:双绞线,绞距20-50mm
- 线径:0.5mm² - 0.75mm²(AWG20-22)
- 终端电阻:120Ω ±1%,两端各一个
- 分支长度:<0.3m
- 总线长度:1Mbps时≤40m,125kbps时≤500m
好了,关于CAN物理层设计,今天就聊这么多。记住一句话:物理层是CAN通信的“地基”,地基不稳,上层建筑再漂亮也是危楼。下一章咱们聊聊CAN数据链路层,看看报文是怎么封装和传输的。