低速通信之王:LIN总线工作原理入门

embedded/2025/4/2 6:36:15/

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的对比

指标LINCAN
媒体访问控制方式单主方式多主方式
典型速率(Kbit/s)2.4-19.662.5-500
信息标识符(bit)611/29
典型节点数2-104-20
位/字节编码方式NRZ 8N1(UART)NRZw位填充
每帧信息数据量(Byte)1-80-8
每4字节发送时间(ms)3.5(20Kbit/s时)0.8(125Kbit/s 时)
错误检测8位累加和15位CRC
物理层单线,12V双绞线,5V
石英/陶瓷振荡器主节点要,从节点不需要每个节点都要
网络相对成本0.51

说明:

  1. 每帧信息数据量(Byte)的意思是每次发送的数据凉的大小,LIN至少需要发送1个字节的数据,不能只发送报文头,最多发送8个字节,CAN最少发送0个字节,最多发送8个字节,所以CAN可以只发送报文头不发送数据。
  2. 因内部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.01999-07-01Initial Version of the LIN Specification
LIN 1.12000-03-06
LIN 1.22000-11-17
LIN 1.32002-12-13
LIN 2.02003-09-16Major Revision Step
LIN 2.12006-11-24Clarifications, configuration modified, transport layer enhanced and diagnostics added.
LIN 2.22010-12-31Updated document according to LlN 2.1 Errata sheet 1.4 Softened bit sampling specification
LIN 2.2A2010-12-31Corrected 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

http://www.ppmy.cn/embedded/178220.html

相关文章

GET 和 POST 有什么区别

GET 和 POST 是 HTTP 协议中两种最常见的请求方法,它们在用途、安全性、数据传递方式等方面有显著的区别。以下是它们的主要区别: 1. 用途 • GET: • 用于从服务器获取资源(数据)。 • 是一种无状态的操作&#xf…

EF Core表达式树

文章目录 前言一、表达式树与委托的区别二、动态构建表达式树示例1示例2示例3高级技巧:表达式合并 三、ExpressionTreeToString安装方法基本用法支持的格式化风格 四、注意事项总结 前言 在 Entity Framework Core 中,表达式树(Expression T…

力扣经典算法篇-4-删除有序数组中的重复项 II(中等)

题干: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下…

【Bug】记录2025年遇到的Bug以及修复方案

--------------------------------------------------------分割线 2025.3.25-------------------------------------------------------windows环境下通过命令行终端(必须是命令行下,直接赋值传递,代码正常)的形式传递字符串时&a…

uv vs pip 速度实测

前文 使用 uv 管理 Python 项目 介绍了 uv 的主要使用过程. 相较于传统的 pip 不仅是功能更丰富, 速度也是嘎嘎快. 本文就来做一个实际速度测试对比. 以下测试均使用清华大学 pypi 镜像, 在 Docker 环境中分别启动新的容器进行无本地缓存的冷安装. 使用 Docker 镜像 public.ecr…

【工具变量】上市公司供应链稳定性数据两个维度(2013-2023年)

供应链稳定性是指供应链在面对各种内外部因素的冲击和不确定性时,能够保持持续、顺畅运作的能力,而供应链稳定性指数是用于评估企业在其供应链管理中保持稳定性的一个重要指标。本分享数据参考钟涛(2022)、董浩和闫晴(…

`git commit --amend` 详解:修改提交记录的正确方式

文章目录 git commit --amend 详解:修改提交记录的正确方式1. 修改提交信息2. 补充遗漏的文件3. 结合 --amend 进行交互式修改4. 已推送提交的修改总结 git commit --amend 详解:修改提交记录的正确方式 git commit --amend 用于修改最近一次的提交&…

基于 GEE 的研究区 1986-2024 年年均归一化植被指数 NDVI 时间序列分析

目录 1 代码解析 1.1 初始化与地图设置 1.2 数据预处理函数 1.3 云去除函数 1.4 NDVI计算函数 1.5 数据集加载与处理 1.6 年均NDVI计算与导出 1.7 时间序列影像集合 1.8 绘制时间序列图表 2 完整代码 3 运行结果 1 代码解析 1.1 初始化与地图设置 var roi = table…