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物理层的重头戏。说白了,就是你的节点不能干扰别人,也不能被别人干扰。

我总结了几条实战经验:

  1. PCB布局:收发器尽量靠近总线连接器。走线要短,避免形成天线。
  2. 电源滤波:收发器的VCC引脚加100nF电容,靠近引脚放置。VBAT引脚加10μF电解电容。
  3. 共模扼流圈:如果EMC测试过不了,在总线入口加一个共模扼流圈。我常用的是TDK的ACT45B系列。
  4. ESD保护:总线引脚加TVS管,选双向的,击穿电压在24V左右。
  5. 斜率控制:TJA1021的斜率控制引脚(SLOPE)接一个电阻到地,调整上升/下降时间。值越小,斜率越缓,EMC越好,但通信速率会降低。

斜率控制电阻参考值:

目标速率SLOPE电阻上升/下降时间
20 kbps10kΩ约 6μs
10 kbps20kΩ约 12μs
5 kbps40kΩ约 24μs

我曾经在一个项目中,EMC辐射测试超标。查了半天,发现是总线走线太长,而且没有加共模扼流圈。后来在总线入口加了ACT45B,辐射一下就降了10dB。嗯,有时候问题就这么简单。

避坑指南:

  • 不要用普通二极管代替TVS管,响应速度不够
  • 共模扼流圈的额定电流要大于总线最大电流(通常100mA足够)
  • PCB上总线走线要远离时钟信号和开关电源

好了,物理层的内容就这些。下一节咱们讲数据链路层,到时候会聊帧结构、校验和这些。有什么问题,咱们群里聊。