2、LIN物理层:单线12V总线、收发器特性(如TJA1020)、总线拓扑与终端电阻
好,咱们今天聊聊LIN的物理层。说实话,很多工程师觉得物理层就是“接根线嘛,有啥好讲的”。但我在项目里吃过亏,才明白物理层才是整个通信的基石。你想想看,协议栈写得再漂亮,物理层一抖,啥都白搭。
2.1 单线12V总线:为什么是12V?
LIN总线只用一根线,外加地线。电压是12V。为什么选12V?说白了,就是为了跟车上的蓄电池电压直接兼容。你想想,车上到处都是12V,没必要再搞个额外的电源轨。
但这里有个坑。12V是标称值,实际车上电瓶电压波动很大。冷启动时可能掉到6V,发电机故障时可能冲到18V。我当年做第一个LIN项目时,就遇到过低温启动后收发器不工作的情况。查了半天,发现是收发器的欠压锁定阈值没选对。
关键参数:LIN总线电压范围通常是7V到18V。但好的收发器能扛到40V甚至更高,这叫“抛负载保护”。
总线电平逻辑也很简单:
- 显性电平(Dominant):总线电压接近0V(实际是<1V),代表逻辑“0”
- 隐性电平(Recessive):总线电压接近12V(实际是电池电压),代表逻辑“1”
为什么会这样设计?因为LIN是从UART演变来的。UART空闲时是高电平,对应LIN的隐性。发送数据时拉低,对应显性。嗯,这里要注意:多个节点同时拉低总线,就是“线与”逻辑,优先级低的节点会被覆盖。
2.2 收发器特性:以TJA1020为例
收发器是LIN物理层的核心。我习惯用NXP的TJA1020,这芯片很经典,很多车厂都在用。咱们看看它的关键特性。
| 参数 | 典型值 | 说明 |
|---|---|---|
| 工作电压 | 5V ~ 27V | 宽范围,能扛抛负载 |
| 总线电压 | -27V ~ 40V | 反向保护和过压保护 |
| 数据传输速率 | 最高20 kbps | LIN规范限制,实际常用10.4 kbps |
| 待机电流 | < 10 μA | 适合常电设备 |
| 斜率控制 | 可调 | 控制EMI,我一般设成2 μs |
我个人习惯,选收发器时重点看三个东西:
- 斜率控制(Slew Rate Control):LIN对EMI很敏感。斜率太陡,辐射噪声大;太缓,信号变形。TJA1020有个SLP引脚,接不同电阻可以调斜率。我一般用2 μs的上升时间,兼顾速度和EMC。
- 唤醒功能:LIN支持总线唤醒。收发器在休眠时监测总线上的显性脉冲。我记得有一次,客户抱怨车门模块唤醒太慢。查下来是收发器的唤醒阈值设得太高,总线上的微弱脉冲没检测到。
- 热保护:总线短路时,收发器会发热。TJA1020有热关断功能,温度超过150°C就自动断开。嗯,这个功能救过我一次——调试时不小心把LIN线搭到电源上了。
小技巧:设计PCB时,收发器的电源引脚旁边一定要放一个100 nF的退耦电容。我见过有人省掉这个电容,结果总线波形上全是毛刺,通信时好时坏。
2.3 总线拓扑与终端电阻
LIN总线是单主多从的拓扑结构。一个主节点,最多15个从节点。总线长度不超过40米。为什么是40米?因为LIN的速率低,信号在线上传播的延迟可以忽略。但超过40米,反射就会变得明显。
拓扑结构很简单:
- 总线型:所有节点挂在同一根线上。这是最常见的。
- 星型:不推荐。分支会产生反射,信号质量差。
- 菊花链:可以,但要注意每个节点的输入电容。
我曾经在一个项目里,为了布线方便,把LIN总线走成了星型。结果从节点离主节点最远的那个,通信老是丢帧。后来改成总线型,问题就解决了。你想想看,星型拓扑的分支就像一根天线,专门吸收噪声。
2.4 终端电阻:1 kΩ的秘密
LIN总线的终端电阻跟CAN不一样。CAN是120 Ω,LIN是1 kΩ。而且这个电阻只放在主节点上。从节点不需要。
为什么是1 kΩ?
- LIN总线是电压驱动的,不是差分信号。1 kΩ电阻配合收发器的上拉,能保证总线在隐性状态时稳定在12V。
- 电阻值不能太小,否则功耗大;不能太大,否则上拉太弱,抗干扰差。1 kΩ是个折中。
警告:千万不要在主节点上放两个1 kΩ电阻!我见过有人照搬CAN的设计,在主节点上放了两个电阻并联,结果总线电压被拉低到6V,所有节点都收不到数据。记住:LIN主节点只有一个1 kΩ上拉电阻到12V。
从节点内部也有一个上拉,但通常是20 kΩ到50 kΩ,只用于诊断和唤醒检测。正常通信时,这个电阻被收发器内部断开。
嗯,这里还要提一下总线电容。每个从节点会有一定的输入电容,典型值10 pF到20 pF。15个节点加起来,总线电容可能到300 pF。加上线缆电容,总电容可能超过1 nF。这时候信号上升沿会变缓。我一般建议,如果从节点超过10个,最好用示波器看看总线波形,确保上升时间不超过3 μs。
2.5 实际设计中的避坑指南
最后,分享几个我踩过的坑:
- 地线回路:LIN是单线,但地线必须可靠。我遇到过地线接触不良,导致总线电压漂移,通信间歇性失败。后来所有LIN节点都用了星型接地。
- ESD保护:LIN线会引出到车门、座椅等位置,容易受静电干扰。我习惯在总线入口加一个TVS管,比如PESD1LIN,钳位电压36V。
- 线束长度:虽然规范说40米,但实际车上很少超过10米。如果线束太长,建议在从节点加一个小电容(100 pF)到地,滤除高频噪声。
我曾经在一个量产项目中,发现某批车的LIN通信偶尔报错。查了三个月,最后发现是线束供应商换了线缆的材质,导致特性阻抗变了。从那以后,我每次做新项目,都会要求供应商提供线缆的阻抗和电容参数。
好了,物理层就聊这么多。下一节咱们讲数据链路层,看看LIN的帧结构是怎么设计的。到时候我会分享一个我调试过的“帧间隔时间”的坑,保证让你印象深刻。