4、LIN物理层:单线12V总线、收发器(如TJA1020)、总线终端电阻、EMC要求

聊到LIN总线,很多人第一反应是「便宜、简单」。没错,它确实便宜,但简单不等于可以随便搞。我见过不少项目,软件写得飞起,结果一上车就出问题——最后查出来,全是物理层埋的雷。

物理层,说白了就是信号怎么在线上跑。LIN用的是单线12V总线,跟CAN那种差分双绞线完全不是一个路子。今天我就把这块掰开揉碎了讲清楚。

4.1 单线12V总线:为什么是12V?

LIN总线只用一根线,外加地线。信号电压以12V为基准。为什么选12V?因为汽车电气系统就是12V的,省得额外搞电源转换。

逻辑电平定义是这样的:

  • 显性电平(Dominant):总线电压接近0V(实际低于0.6倍Vbat),代表逻辑0
  • 隐性电平(Recessive):总线电压接近12V(实际高于0.8倍Vbat),代表逻辑1

你想想看,这跟CAN刚好反过来。CAN是显性为0,隐性为1。LIN是显性为0,隐性为1——嗯,逻辑上一样,但电平定义完全不同。

关键点:LIN总线的隐性电平是12V,不是5V也不是3.3V。所以你的MCU不能直接连总线,必须经过收发器。

我在项目中遇到过有人想省成本,用电阻分压直接把MCU的UART连到LIN线上。结果呢?通信时好时坏,最后查出来是电平不匹配,隐性状态MCU识别成了高电平,但噪声一进来就误判。老老实实加收发器吧,别省这个钱。

4.2 收发器:TJA1020 深度解析

收发器是LIN物理层的核心。市面上主流的是NXP的TJA1020,还有TI的TLIN2020、Microchip的MCP2003等。我用的最多的是TJA1020,皮实耐造。

4.2.1 TJA1020 内部框图

收发器干三件事:

  1. 发送:把MCU的TX信号转换成总线上的12V/0V电平
  2. 接收:把总线上的电平转换成MCU能识别的3.3V/5V逻辑
  3. 保护:过压、过流、热关断、地偏移保护

TJA1020的引脚不多,常用的就这几个:

引脚 名称 功能
1 TXD 发送数据输入(来自MCU)
2 RXD 接收数据输出(到MCU)
3 NSLP 休眠模式控制(低电平进入休眠)
4 BUS LIN总线引脚
5 GND
6 INH 禁止输出(可用来控制外部稳压器)
7 BAT 电池电源(12V)
8 WAKE 唤醒输入

我的习惯:NSLP引脚一定要接MCU的GPIO控制,不要直接拉高或拉低。这样可以在不需要通信时让收发器进入休眠模式,整车功耗能降不少。我曾经在一个项目中,靠这个功能把待机电流从5mA降到了20μA。

4.2.2 典型应用电路

收发器外围电路其实很简单,但有几个关键点:

// TJA1020 典型应用电路示意
// MCU侧
MCU_TX  ----> TJA1020 TXD (引脚1)
MCU_RX  <---- TJA1020 RXD (引脚2)
MCU_GPIO ----> TJA1020 NSLP (引脚3)

// 总线侧
TJA1020 BUS (引脚4) ----> 1kΩ电阻 ----> LIN总线
TJA1020 BUS (引脚4) ----> 30pF电容 ----> GND

// 电源
TJA1020 BAT (引脚7) ----> 12V电池 (加100nF去耦电容)
TJA1020 GND (引脚5) ----> GND

注意那个1kΩ电阻和30pF电容。这不是随便选的,它们构成了一个低通滤波器,用来抑制总线上的高频噪声。我见过有人偷懒不装这个电容,结果EMC测试直接挂掉。

4.3 总线终端电阻:到底要不要加?

这个问题我经常被问到。CAN总线必须加120Ω终端电阻,那LIN呢?

答案是:LIN总线通常不需要终端电阻。但有一个例外——如果总线长度超过某个值,或者节点数太多,就需要考虑。

为什么不需要?因为LIN是低速总线(最大20kbps),信号上升时间相对较慢,反射问题不严重。而且LIN收发器内部已经有上拉电阻了。

具体来说:

  • 每个LIN节点内部都有一个约30kΩ的上拉电阻到Vbat
  • 主节点内部还有一个约1kΩ的上拉电阻(用于保证隐性电平)
  • 这些电阻共同作用,形成了总线的偏置

注意:千万不要在LIN总线上加120Ω终端电阻!我见过有人把CAN的经验搬过来,结果总线电压被拉低,通信完全瘫痪。LIN不是CAN,别混用。

那什么时候需要加外部电阻?

  • 总线长度超过10米
  • 节点数超过16个
  • 总线拓扑结构有长分支线

这种情况下,可以在主节点端加一个1kΩ的下拉电阻到地,或者在从节点端加一个30kΩ的上拉电阻到Vbat。具体加多少,得根据总线负载计算。

我曾经在一个项目中,总线长度达到了15米,节点数12个。刚开始通信偶尔丢帧,后来在总线两端各加了一个1kΩ的电阻到地,问题就解决了。嗯,这就是经验。

4.4 EMC要求:怎么过测试?

EMC是物理层设计的重头戏。LIN总线虽然速度慢,但它是单线,共模噪声抑制能力差,所以EMC设计反而比CAN更讲究。

4.4.1 常见EMC问题

  • 辐射发射:总线上的高频谐波通过线束辐射出去
  • 抗扰度:外部电磁干扰耦合到总线上,导致通信错误
  • 静电放电:插拔连接器时产生的ESD损坏收发器

4.4.2 设计建议

我总结了几条实用的EMC设计规则:

  1. 总线加RC滤波:前面提到的1kΩ+30pF就是最基本的滤波
  2. PCB布线:LIN走线尽量短,远离时钟信号和电源走线
  3. 共模扼流圈:如果EMC测试不过,可以在总线入口加一个共模扼流圈
  4. TVS管:在总线对地之间加一个双向TVS管,电压选24V或36V
  5. 地线处理:收发器的GND要单独走线到电源地,不要跟数字地混用

避坑指南:我曾经在一个项目中,EMC辐射发射超标了8dB。查了两天,最后发现是收发器的BAT引脚去耦电容离芯片太远,导致高频噪声串到了总线上。把100nF电容挪到紧挨着引脚的位置,问题就解决了。记住:去耦电容要靠近电源引脚,越近越好。

4.4.3 测试标准

LIN总线的EMC测试主要参考ISO 7637和CISPR 25标准:

测试项目 标准 要求
辐射发射 CISPR 25 Class 3或Class 5(根据整车厂要求)
传导发射 CISPR 25 150kHz-108MHz
抗扰度 ISO 11452 BCI法,100mA
瞬态脉冲 ISO 7637 Pulse 1, 2a, 2b, 3a, 3b

说实话,EMC这东西,理论是一回事,实际测试是另一回事。我建议你在设计阶段就预留好滤波和防护的位置,等测试不过的时候再补,那成本可就高了。

4.5 小结

LIN物理层看着简单,但细节决定成败。单线12V总线、TJA1020收发器、终端电阻的取舍、EMC防护——每一个环节都值得认真对待。

我个人习惯是:设计阶段就把物理层画清楚,该加的滤波和防护一个不少。等板子回来了,先拿示波器看总线波形,确认隐性电平在11V以上,显性电平在1V以下,再开始调软件。这样能省掉后面80%的调试时间。

下一章我们聊LIN协议的数据链路层,到时候你会看到,物理层搞定了,协议层其实就顺理成章了。