2、LIN总线物理层:电平、拓扑、节点与收发器

好,咱们进入物理层。说实话,很多工程师觉得LIN的物理层太简单,不就是一根线和地嘛?但我在项目里吃过亏,才明白物理层才是整个系统稳定性的基石。你想想看,协议栈写得再好,物理层一塌糊涂,照样收不到数据。

2.1 LIN总线电平定义

LIN总线的电平,说白了就是基于12V车载蓄电池的。它不像CAN那样用差分信号,而是单线传输。我习惯把它的电平状态分成两种:

  • 显性电平(Dominant):电压接近0V,代表逻辑'0'
  • 隐性电平(Recessive):电压接近12V(实际是Vbat),代表逻辑'1'

这里有个关键点:总线空闲时,默认是隐性电平。也就是说,你不发数据时,这根线应该是高电平。我曾经遇到一个项目,从节点一上电就把总线拉低了,结果主节点以为一直在接收数据,整个网络直接瘫痪。

电平参数速查表(我常用的参考值)

参数最小值典型值最大值
隐性电平0.6 × VbatVbatVbat
显性电平-0.3V0V0.2 × Vbat
接收阈值(隐性→显性)0.4 × Vbat-0.6 × Vbat

嗯,这里要注意:Vbat不是固定的12V。发动机启动时可能掉到9V,发电机工作时可能升到16V。所以收发器的设计必须能适应这个范围。

2.2 LIN总线拓扑结构

LIN总线用的是单主多从的拓扑。说白了就是一条线串起来,所有节点都挂在这根线上。我参与过一个天窗项目,用了1个主节点和3个从节点,线长不到2米,非常简洁。

拓扑的几个硬性要求:

  • 节点数量:最多16个(1主+15从)
  • 总线长度:不超过40米
  • 终端电阻:主节点需要1个1kΩ上拉电阻到Vbat
  • 从节点:不需要终端电阻

我的经验:虽然规范说可以到40米,但我建议控制在10米以内。线越长,寄生电容越大,信号边沿会变缓。有一次我在实验室用20米线测试,结果波特率从20kbps降到10kbps才能稳定通信。

拓扑结构其实很简单,就是一条总线,所有节点并联。但要注意星型连接要尽量避免。为什么?因为分支会产生反射,信号质量会变差。我见过一个车门项目,因为用了星型拓扑,导致远端节点经常丢帧。

2.3 LIN总线节点类型

LIN网络里只有两种角色:主节点从节点。这个划分非常清晰,不像CAN那样可以多主。

主节点(Master)

主节点是整个网络的大脑。它负责:

  • 发送同步间隔场(Sync Break)
  • 发送同步场(Sync Byte 0x55)
  • 发送标识符场(PID)
  • 管理调度表
  • 唤醒总线

说白了,没有主节点发号施令,从节点一个字都不能说。我刚开始做LIN时觉得这太霸道了,后来发现这种设计反而简单可靠——没有总线仲裁,没有冲突。

从节点(Slave)

从节点是听话的执行者。它只能:

  • 等待主节点发问
  • 根据PID决定是发送还是接收
  • 在指定时隙内完成响应

避坑指南:我曾经遇到一个从节点,因为晶振偏差太大(超过±2%),导致同步场解析失败。LIN的从节点必须能根据主节点发送的同步场自动校准波特率。如果你的从节点用内部RC振荡器,一定要确保校准范围足够。

2.4 LIN总线收发器

收发器是物理层的关键器件。它负责把逻辑电平转换成总线电平,反过来也一样。市面上常见的LIN收发器有TJA1020、MCP2003等。

收发器的核心功能:

  • 发送:将TXD引脚的逻辑信号转换为总线上的显性/隐性电平
  • 接收:将总线电平转换为RXD引脚的逻辑信号
  • 斜率控制:限制信号上升/下降时间,减少EMI
  • 总线故障保护:对地短路、对电源短路、总线断线等

我习惯用一个表格来对比收发器的工作模式:

模式TXD总线状态RXD
休眠高阻隐性高阻
待机高电平隐性反映总线状态
发送显性低电平显性(~0V)低电平
发送隐性高电平隐性(~Vbat)高电平

嗯,这里有个细节:斜率控制。LIN规范要求上升/下降时间在3.5μs到22.5μs之间(20kbps时)。太快了EMI超标,太慢了信号质量差。我一般选中间值,大概10μs左右。

选型建议

  • 如果节点在发动机舱(高温环境),选耐温125°C以上的收发器
  • 如果对功耗敏感(如BCM模块),选带休眠模式的收发器
  • 如果总线长度超过10米,选带增强型斜率控制的型号

最后说一句,收发器的布局也很重要。我建议收发器尽量靠近LIN总线连接器,走线要短而粗。曾经有个同事把收发器放在PCB角落,走线绕了大半个板子,结果辐射发射测试直接超标。

好了,物理层就讲到这里。下一节咱们进入数据链路层,看看帧结构是怎么组织的。