3、LIN物理层:LIN总线电平、收发器选型(TJA1020/TJA1021)、总线拓扑、终端电阻、EMC考虑
各位同学,咱们今天聊聊LIN总线的物理层。说实话,很多做软件的朋友觉得物理层是硬件工程师的事,跟自己没关系。但我在项目里吃过亏——软件写得再好,物理层出问题,整个节点就是聋子哑巴。所以这一节,咱们把物理层掰开揉碎了讲清楚。
3.1 LIN总线电平:不是简单的0和1
LIN总线的电平,跟咱们熟悉的UART不太一样。它用的是单线传输,电压参考的是电池电压(VBAT)。
具体来说:
- 隐性电平(逻辑1):总线电压接近VBAT,大约在12V左右(对于12V系统)。这时候总线处于高阻态,由内部上拉电阻拉高。
- 显性电平(逻辑0):总线电压被拉低到接近GND,大约在0V~1V之间。这时候总线被收发器主动驱动。
我刚开始接触LIN时,总把它跟CAN的显隐性搞混。记住一点:LIN的显性电平是0V,隐性是12V,跟CAN正好反过来。你想想看,这其实是为了兼容性——LIN从节点可以靠主节点的上拉电阻供电,省掉一个电源线。
关键参数:
- 隐性电平:0.6 × VBAT ~ VBAT(通常10V~12V)
- 显性电平:< 1.5V(通常0V~1V)
- 阈值电压:约0.4 × VBAT(接收器判断显隐性的分界点)
嗯,这里要注意:阈值电压不是固定的。它跟VBAT有关,所以如果你的系统电压波动大,总线通信可能不稳定。我在做车载灯光模块时,遇到过电池电压从9V到16V跳变,结果LIN通信偶尔丢帧。后来加了稳压才解决。
3.2 收发器选型:TJA1020 vs TJA1021
收发器是LIN节点的物理层接口。市面上主流的是NXP的TJA1020和TJA1021。这两兄弟我都用过,说说我的感受。
| 特性 | TJA1020 | TJA1021 |
|---|---|---|
| 工作电压 | 5V ~ 27V | 5V ~ 27V |
| 待机电流 | 典型 10μA | 典型 8μA |
| 斜率控制 | 外部电阻可调 | 内部固定 + 外部可选 |
| 唤醒功能 | LIN总线唤醒 | LIN总线唤醒 + 本地唤醒 |
| EMC性能 | 良好 | 更优(改进的斜率控制) |
| 引脚兼容 | 标准SO-8 | 与TJA1020兼容 |
我个人习惯:新设计优先选TJA1021。为什么?因为它的斜率控制更精细,EMC表现更好。说白了,就是辐射干扰更小,过EMC测试更容易。
但如果你做的是低成本项目,TJA1020完全够用。我记得有一次做后尾灯项目,客户要求成本压到最低,我就用了TJA1020。只要PCB布局合理,EMC也能过。
选型建议:
- 对EMC要求高(如车规级)→ TJA1021
- 成本敏感、EMC要求一般 → TJA1020
- 需要本地唤醒功能 → TJA1021
3.3 总线拓扑:主从结构
LIN总线是典型的主从结构。一个主节点,最多15个从节点。主节点负责调度,从节点听指挥。
拓扑上,我建议用总线型,也就是一条线串下来,每个节点就近挂上去。星型拓扑虽然也能用,但反射问题多,EMC难搞。
实际项目中,灯光模块通常分布在车身各处。比如左前灯、右前灯、左后灯、右后灯。这时候总线走线要尽量短,避免形成大的环路。我曾经见过一个设计,LIN总线绕了车身一圈,结果通信错误率高达10%。后来改成从中间分叉,问题就解决了。
注意事项:
- 总线长度不要超过40米(实际建议控制在10米以内)
- 每个节点的总线电容不要超过10nF
- 分支线(stub)长度尽量短,最好小于1米
3.4 终端电阻:不是随便选的
LIN总线的终端电阻,跟CAN不一样。CAN是120Ω,LIN是1kΩ(主节点)和30kΩ(从节点)。
为什么这么设计?
- 主节点的1kΩ电阻:提供隐性电平的上拉,同时限制总线电流
- 从节点的30kΩ电阻:保证总线在隐性状态时,电压能被拉高到VBAT
我建议:主节点的1kΩ电阻一定要精确,不要用5%的,用1%的。因为它的值直接影响总线时间常数,进而影响通信速率。从节点的30kΩ可以用5%的,要求没那么高。
另外,有些设计会把主节点的上拉电阻分成两个500Ω串联,中间加一个电容到地。这样做可以改善EMC。我在一个前照灯项目中试过,效果确实不错。
电阻选型总结:
- 主节点:1kΩ ±1%,功率0.25W以上
- 从节点:30kΩ ±5%,功率0.1W以上
- 可选:主节点用两个500Ω串联,中间加100nF电容到地
3.5 EMC考虑:别让干扰毁了你的设计
EMC是LIN物理层的重头戏。说白了,就是你的节点不能干扰别人,也不能被别人干扰。
我总结了几条实战经验:
- PCB布局:收发器尽量靠近总线连接器。走线要短,避免形成天线。
- 电源滤波:收发器的VCC引脚加100nF电容,靠近引脚放置。VBAT引脚加10μF电解电容。
- 共模扼流圈:如果EMC测试过不了,在总线入口加一个共模扼流圈。我常用的是TDK的ACT45B系列。
- ESD保护:总线引脚加TVS管,选双向的,击穿电压在24V左右。
- 斜率控制:TJA1021的斜率控制引脚(SLOPE)接一个电阻到地,调整上升/下降时间。值越小,斜率越缓,EMC越好,但通信速率会降低。
斜率控制电阻参考值:
| 目标速率 | SLOPE电阻 | 上升/下降时间 |
| 20 kbps | 10kΩ | 约 6μs |
| 10 kbps | 20kΩ | 约 12μs |
| 5 kbps | 40kΩ | 约 24μs |
我曾经在一个项目中,EMC辐射测试超标。查了半天,发现是总线走线太长,而且没有加共模扼流圈。后来在总线入口加了ACT45B,辐射一下就降了10dB。嗯,有时候问题就这么简单。
避坑指南:
- 不要用普通二极管代替TVS管,响应速度不够
- 共模扼流圈的额定电流要大于总线最大电流(通常100mA足够)
- PCB上总线走线要远离时钟信号和开关电源
好了,物理层的内容就这些。下一节咱们讲数据链路层,到时候会聊帧结构、校验和这些。有什么问题,咱们群里聊。