1. LIN总线简介
1.1 为什么需要LIN总线
随着汽车电子系统复杂度提升,ECU节点数的增加,CAN总线通信的重要性与日俱增,同时在车载网络中也有一些低成本通信需求,这些通信需求的数据量不大,实时性要求也不高,这时候如果依然使用CAN总线通讯的话成本会增加很多,也会造成资源浪费,这时候产生了LIN总线通信,LIN总线是CAN总线的补充,所以与CAN相比,LIN的可靠性与成本都更低。
1.2 LIN总线的定位
定义:LIN(Local Interconnect Network),针对汽车分布式电子系统而定义的一种低成本的串行通讯网络,是CAN总线的补充,实际应用中针对某一ECU可以根据使用场景选择使用CAN和LIN总线的其中之一。
应用场景:
- 车顶:湿度传感器、光敏传感器、信号灯控制、天窗等;
- 车门:车窗玻璃、中枢锁、车窗玻璃开关、后视镜等;
- 车头:传感器、小电机、车灯组件等;
- 车内:组合开关、雨刷电机、无线电、空调
- 座椅:座椅电机、转速传感器、控制面板等;
- 其他:雨刮、雨量传感器、转速传感器、压力传感器等
可以看出使用领域很符合LIN总线的特征,主要应用于车身低速率的ECU通信领域。
1.2 LIN与CAN的对比
指标 | LIN | CAN |
---|---|---|
媒体访问控制方式 | 单主方式 | 多主方式 |
典型速率(Kbit/s) | 2.4-19.6 | 62.5-500 |
信息标识符(bit) | 6 | 11/29 |
典型节点数 | 2-10 | 4-20 |
位/字节编码方式 | NRZ 8N1(UART) | NRZw位填充 |
每帧信息数据量(Byte) | 1-8 | 0-8 |
每4字节发送时间(ms) | 3.5(20Kbit/s时) | 0.8(125Kbit/s 时) |
错误检测 | 8位累加和 | 15位CRC |
物理层 | 单线,12V | 双绞线,5V |
石英/陶瓷振荡器 | 主节点要,从节点不需要 | 每个节点都要 |
网络相对成本 | 0.5 | 1 |
说明:
- 每帧信息数据量(Byte)的意思是每次发送的数据凉的大小,LIN至少需要发送1个字节的数据,不能只发送报文头,最多发送8个字节,CAN最少发送0个字节,最多发送8个字节,所以CAN可以只发送报文头不发送数据。
- 因内部RC振荡器精度和稳定性不足,无法满足LIN协议对主节点长期同步的要求,所以主节点必须外接陶瓷/晶体振荡器;从节点依赖主节点同步机制,短期精度要求低,内部RC振荡器已足够,所以无需外部振荡器。
2. LIN总线基础
2.1 技术特性
串行通信:线间干扰小,节省线束,传输距离长;
单线传输:单线,总线电压12V;
最高速率:20kbps (满足车身大部分低速应用需求);
主从架构:单一主节点控制通信时序,不存在冲突,无需仲裁;
硬件结构:基于通用UART/SCI的低成本接口硬件,几乎所有MCU具备LIN总线的硬件基础;
信号同步:利用报头里的同步场实现同步,大幅度降低成本,从节点无须晶振或陶瓷震荡器就可以实现同步;
节点增减:无需改变其他节点的硬件电路即可灵活增加或减少从节点;
延迟时间:信号传输的延迟时间可计算,因为所有的LIN信号都是通过主节点进行调度的,所有通信信息都是设计好的,所以LIN的网络通信具有可预测性。
节点数目:根据总线的电气特性,每条LIN总线最多连接16个从节点;
支持多报文传输:基于ISO15765-2的传输层规范;
支持诊断功能:支持ISO14229的诊断服务。
2.2 LIN协议的版本演进
版本 | 时间 | 描述 |
---|---|---|
LIN 1.0 | 1999-07-01 | Initial Version of the LIN Specification |
LIN 1.1 | 2000-03-06 | |
LIN 1.2 | 2000-11-17 | |
LIN 1.3 | 2002-12-13 | |
LIN 2.0 | 2003-09-16 | Major Revision Step |
LIN 2.1 | 2006-11-24 | Clarifications, configuration modified, transport layer enhanced and diagnostics added. |
LIN 2.2 | 2010-12-31 | Updated document according to LlN 2.1 Errata sheet 1.4 Softened bit sampling specification |
LIN 2.2A | 2010-12-31 | Corrected wakeup signal definition in chapter 2.6.2 |
1.0到1.3版本主要是物理层的一些更改,最大的更改是1.3到2.0的更改,最主要的是对LIN报文校验类型的更改。
2.3 LIN协议规范
LIN报文的数据帧由报头和数据组成,主任务发送报头,从任务用响应来补充报头形成完整的报文。
LIN报文的数据帧结构如下图所示:
- 报头分为三个场,间隔场,同步场和标识符场,响应分为两个场,数据场和校验和场;
- 每个字节之间存在字节间隔,报头与响应之间存在响应间隔,间隔的目的是留给MCU足够的处理时间,如果MCU得性能较差,响应间隔可以增大,所以实际的帧长度可能增加;
2.3.1字节场
基于SCI的通信格式,发送一个字节需要10个位的时间,先发一个显性位(低电平),八个位发完后再跟一个高电平的隐性位表示字节发送结束。
2.3.2间隔场
间隔场由主节点发出,表示一帧报文的起始,由至少13个显性位组成,间隔界定符至少由1个隐性位组成,是唯一一个不符合字节场格式的场,从节点需要检测到至少11个连续的显性位才认为是间隔信号。
2.3.3同步场
同步场的作用是确保所有从节点使用与主节点相同的波特率进行发送和接收数据,使用下降沿来进行数据同步,从数据表示来看表示的字节数据是0x55。
2.3.4标识符场
用来发送6位LIN报文ID和两位的奇偶校验位,P0 = ID0 ⊕ ID1 ⊕ ID2 ⊕ ID4,P1 = ¬(ID1 ⊕ ID3 ⊕ ID4 ⊕ ID5),整个八位称为报文的PID。
2.3.5数据场
数据场长度为1-8字节,低位低字节先发,如果超过一个字节就划分成多个字节发送。
2.3.6校验和场
校验和场的作用是验证接收到的数据是否正确,在LIN2.0(不包括LIN2.0)之前的版本会用经典校验,仅校验数据场,在LIN2.0(包括LIN2.0)之后的版本使用增强校验,校验标识符场和数据场,对于诊断报文,由于标识符场是固定的0x3C和0x3D,所以只使用经典校验。
3. LIN通信工作原理
3.1 网络拓扑
LIN网络的典型拓扑结构图如下:
在上图中可以看出,每个LIN子网的节点都是在一起的,在实车网络中这些节点的位置通常也是在一起的,每个LIN子网都有一个主节点,这个主节点作为网关与主干CAN总线网络相连,LIN的主节点也是一个CAN-LIN的网关。
- 一个LIN网络由一个主任务和若干个从任务组成;
- 主节点既有主任务又有从任务;
- 从节点只有从任务;
- 主任务负责决定总线上的报文,负责报文头的内容,从任务负责每一帧数据的具体内容。
3.2 通信流程
LIN通信的主要过程是主节点发送报头(同步场+标识符)然后从节点来填充响应数据帧。主节点将报文头发送到总线上来依次询问每个从节点,询问结束后其中一个从节点(这个节点可以是主节点自己)将最多8个字节的数据填到数据响应中,然后向另一个节点发送数据(可以是主节点,也可以是其余从节点)
4. LIN开发与调试
4.1 硬件设计要点
LIN的典型的硬件结构如上图所示,没有LIN外设的MCU一般由MCU的SCI(串行通信接口 Serial Communication Interface)通信模块和芯片外部的LIN收发器芯片组成,有些芯片会带有LIN外设,会把收发器芯片集成到MCU内部,这时候芯片pin脚就可以直接连接到LIN总线上了,拿LIN收发器芯片TJA1020举例,如下图所示:
从左边MCU引出三根线至TJA1020,作用分别是发送信号,休眠信号和接收信号,右边通过TJA1020的6号口接入LIN总线,8号口INH与芯片的休眠有关,这里无需关注。
4.2 软件开发基础
再议。
4.3 常用工具链
示波器与LIN分析仪(如Vector CANoe)
诊断工具与UDS协议集成
5. 参考资料
- https://www.bilibili.com/video/BV1ey4y1k7u4/
- https://www.bilibili.com/video/BV1f54y1v7X5/
- https://www.bilibili.com/video/BV197XgYdEym