4. LIN协议层
LIN(Local Interconnect Network)是一种低成本、单主多从的串行通信总线,广泛用于车身电子中的车窗、雨刮、座椅、空调风门等对带宽要求不高的场景。理解LIN协议层,核心就是理解一帧报文如何被拆解、发送、接收和校验。LIN的一帧报文由报文头(Header)和响应(Response)两部分组成,报文头由主节点发出,响应可以由主节点或从节点发出。报文头包含同步间隔场、同步场和标识符场;响应包含数据场和校验和场。掌握这五个字段的时序与语义,是进行LIN节点集成、调试和排障的基础。
一、帧结构总览:报文头与响应的分工
LIN总线采用单线双向传输,逻辑电平以显性(Dominant,约0V)和隐性(Recessive,约电池电压)表示。一帧完整报文的结构如下:
- 同步间隔场(Break Field):至少13个显性位,用于唤醒并通知所有从节点一帧即将开始。
- 同步场(Sync Field):固定字节0x55,从节点据此测量主节点波特率并完成时钟同步。
- 标识符场(Identifier Field):6位ID加2位奇偶校验,决定帧类型、方向、长度和发布/订阅关系。
- 数据场(Data Field):1~8字节,承载实际信号,低字节先发。
- 校验和场(Checksum Field):1字节,分为经典校验和与增强校验和两种。
报文头与响应之间允许存在帧内响应空间,主节点发送完标识符后,目标从节点必须在规定时间内开始发送响应,否则主节点会判定为超时错误。
二、同步间隔场与同步场:从节点如何“对齐时钟”
同步间隔场是LIN帧的起始标志,长度至少为13个显性位,随后跟随至少1个隐性位作为间隔符。从节点检测到这一超长显性电平后,会进入接收准备状态。紧接着的同步场固定为0x55,其二进制为01010101,具有规律的方波特征。从节点通过测量0x55中下降沿之间的时间,计算出主节点的实际位时间,从而调整自身波特率。这一机制使LIN无需晶振也能实现可靠通信,是低成本节点设计的关键。
三、标识符场:ID、奇偶校验与帧类型
标识符场共8位,低6位为帧ID(0x00~0x3F),高2位为奇偶校验位P0和P1。ID不仅标识报文,还隐含了帧的长度、方向与发布者。LIN 2.x中,ID 0x3C和0x3D分别用于主请求帧和从响应帧,属于诊断帧;其余ID用于普通通信。奇偶校验计算如下:
P0 = ID0 ⊕ ID1 ⊕ ID2 ⊕ ID4
P1 = ¬(ID1 ⊕ ID3 ⊕ ID4 ⊕ ID5)
标识符字节 = P1 P0 ID5 ID4 ID3 ID2 ID1 ID0
从节点收到标识符后,先校验奇偶位,再根据ID查表确定数据长度和方向。若校验失败,从节点应忽略该帧,不发送响应。
四、数据场与校验和:信号承载与错误检测
数据场长度由ID决定,可为1~8字节,采用低字节先发、低位先发的顺序。数据场中承载的是信号,信号可以是布尔量、无符号整数、数组或带缩放因子的物理量。校验和场位于数据场之后,分为两种:
| 类型 | 计算范围 | 适用场景 |
|---|---|---|
| 经典校验和 | 仅数据场各字节 | LIN 1.x,诊断帧除外 |
| 增强校验和 | 标识符场 + 数据场 | LIN 2.x,诊断帧与普通帧 |
校验和采用带进位循环相加后取反的方式。接收节点计算校验和并与收到的校验和比较,不一致则丢弃该帧并记录错误。增强校验和把ID纳入计算,能发现标识符错误导致的误响应,因此在新设计中应优先使用。
五、案例:车窗从节点的一帧收发过程
假设主节点要控制左前车窗上升,使用ID 0x21,数据长度2字节,数据为0x01 0x64(方向上升、速度100)。主节点依次发送:同步间隔场、同步场0x55、标识符0x21(含奇偶位)、数据0x01 0x64、增强校验和。从节点收到后校验ID与校验和,执行动作,并在下一帧中通过另一ID回传车窗位置。若从节点未在帧内响应空间内启动响应,主节点会记录“响应超时”错误,并在调度表中重试或标记节点离线。
六、排障复盘清单
- 示波器测量同步间隔场是否≥13个显性位,间隔符是否足够。
- 确认同步场是否为0x55,从节点波特率是否与主节点一致。
- 检查标识符奇偶校验是否正确,ID是否与LDF文件一致。
- 核对数据长度与ID定义是否匹配,字节序是否正确。
- 确认校验和类型(经典/增强)与主节点一致。
- 检查响应是否在帧内响应空间内启动,是否存在超时。
掌握帧结构、报文头与响应的字段语义,以及同步、标识符和校验和的细节,才能在LIN节点集成中快速定位通信异常,并为后续调度表、LDF文件和网络管理打下基础。