二、物理层详解:CAN总线物理特性、J1939对物理层的要求、终端电阻与线束设计
大家好,我是你们的老朋友。今天咱们来聊聊J1939协议里最“接地气”的部分——物理层。
很多人觉得物理层就是一堆铜线和电阻,没什么技术含量。我刚开始接触车载网络时也这么想。直到有一次,一台试验车在高温环境下频繁丢帧,排查了三天,最后发现是线束的屏蔽层接地出了问题。从那以后,我对物理层再也不敢马虎了。
说白了,物理层就是CAN信号的“高速公路”。路修得不好,再好的协议也跑不起来。咱们今天就把这条路彻底搞明白。
2.1 CAN总线的物理特性
CAN总线用的是差分信号传输。什么意思呢?就是靠两根线——CAN_H和CAN_L——之间的电压差来传递信息。
我习惯把这两根线比作“跷跷板”。显性位(逻辑0)时,CAN_H被拉到3.5V,CAN_L被拉到1.5V,压差2V。隐性位(逻辑1)时,两根线都稳定在2.5V,压差0V。你想想看,这种设计天然抗干扰——外部噪声同时作用在两根线上,压差基本不变。
关键参数速查:
- 总线空闲状态:隐性(2.5V)
- 显性位压差:≥1.5V(实际设计通常2V)
- 隐性位压差:≤0.5V(理想为0V)
- 最大传输距离:40m @ 1Mbps,1km @ 50kbps
这里有个坑,我提醒一下。不同厂家的CAN收发器,显性电平的驱动能力有差异。我在项目中遇到过,混用不同品牌的收发器,导致总线信号畸变。所以,同一网段尽量用同一型号的收发器。
2.2 J1939对物理层的特殊要求
J1939基于CAN 2.0B,但比标准CAN多了几条“硬规矩”。
第一,波特率固定为250kbps。 为什么是这个值?说白了,这是商用车行业多年磨合出来的“黄金频率”。太快了,线束太长信号会衰减;太慢了,实时性又不够。250kbps刚好平衡了距离和速度。
第二,总线长度限制。 J1939规定,在250kbps下,主干线最长不超过40米。但注意,这是理想情况。我实测过,如果线缆质量差、分支多,20米就开始出问题了。
| 参数 | 标准CAN | J1939要求 |
|---|---|---|
| 波特率 | 最高1Mbps | 250kbps(固定) |
| 总线长度 | 40m@1Mbps | ≤40m@250kbps |
| 节点数 | 最多30个 | 最多30个(推荐) |
| 线缆阻抗 | 无强制要求 | 120Ω±10% |
第三,电气隔离。 J1939要求ECU之间必须做电气隔离。这不是可选项,是强制要求。为什么?商用车电源系统太脏了——起动机一拉,电源线上能蹦出几十伏的尖峰。不做隔离,一个ECU坏了,整条总线都可能被拖死。
我的经验:隔离方案推荐用ADI的ADM3053或TI的ISO1050。这两个芯片我用了七八年,没出过批量问题。但注意,隔离电源也要独立设计,别偷懒用DCDC共地。
2.3 终端电阻:小元件,大讲究
终端电阻,说白了就是总线两端的120Ω电阻。它的作用是消除信号反射。
为什么会反射?信号在线上跑,遇到阻抗突变就会反弹。就像水波碰到石头。终端电阻把总线阻抗匹配到120Ω,信号就“吸收”掉了,不会来回弹。
终端电阻的安装位置:
- 必须安装在总线的最两端
- 每个终端节点内部集成120Ω电阻
- 中间节点绝对不能加
我曾经遇到一个案例:某车型总线偶尔通信中断,查了两个月。最后发现,一个中间节点的PCB上,工程师“顺手”焊了个120Ω电阻。拆掉后,问题消失。嗯,这种低级错误,犯一次就记住了。
警告:终端电阻不能省,也不能多。少了,信号反射导致误码;多了,总线负载过重,驱动能力下降。我见过有人用两个60Ω串联代替120Ω,理论上可以,但实际不建议——多一个焊点就多一个故障点。
2.4 线束设计:细节决定成败
线束设计是物理层里最容易被忽视的环节。我见过太多“协议没问题,线束乱糟糟”的项目了。
线缆选型:
- 推荐使用屏蔽双绞线(STP)
- 线径:0.5mm² ~ 0.75mm²(AWG20~AWG18)
- 特性阻抗:120Ω±10%
- 绞距:25mm~50mm
布线原则:
- 主干线尽量走直线,避免直角拐弯
- 分支线(stub)长度不超过1米
- CAN_H和CAN_L必须紧挨着走,不能分开
- 远离大功率线束(电机线、电池线),间距至少10cm
你想想看,如果CAN线和电机线绑在一起走,电机一启动,强电磁干扰直接耦合到CAN线上。信号还能看吗?
接地设计:
屏蔽层必须单点接地。我习惯在控制器端接地,不要在传感器端接地。为什么?防止地环路电流。地环路一旦形成,屏蔽层反而成了天线,把噪声引入总线。
避坑指南:
我曾经在一个项目中,发现总线通信在雨天就不稳定。排查到最后,是线束连接器的防水没做好。水汽进入连接器,导致CAN_H和CAN_L之间漏电,压差降低。从那以后,我要求所有车载CAN连接器必须达到IP67防护等级。
2.5 实际设计中的几个“潜规则”
最后,分享几个我在项目中总结的“潜规则”。这些在协议文档里找不到,但实战中非常有用。
- 预留测试点: 每个ECU的CAN接口,一定要预留CAN_H、CAN_L、GND的测试点。别问我为什么,等你需要示波器抓波形时就知道了。
- 共模扼流圈: 在CAN收发器前端加一个共模扼流圈(CMC),能有效抑制共模干扰。我常用的型号是TDK的ACT45B-510-2P。
- 保护二极管: CAN_H和CAN_L对地各加一个TVS管,耐压选24V或36V。商用车电源系统经常有浪涌,不加保护,收发器说烧就烧。
好了,物理层的内容就讲到这里。记住一句话:物理层是CAN网络的基石。基础不牢,地动山摇。下一章咱们聊聊数据链路层,看看J1939是怎么把物理层的“0和1”组织成有意义的消息的。
有什么问题,欢迎在课后交流。咱们下节课见。