LIN总线协议
文章目录一、LIN总线简介二、LIN总线基础2.1 定义2.2 特点2.3 与 CAN 的区别三、LIN总线协议3.1 帧结构3.1.1 字节段3.1.2 同步间隔段3.1.3 同步段3.1.4 受保护ID段/标识符段3.1.5 数据段3.1.6 校验和段3.2 帧类型3.2.1 无条件帧3.2.2 事件触发帧3.2.3 偶发帧3.2.4 诊断帧3.3 进度表3.4 通信工作原理3.4.1 网络拓补3.4.2 通信流程一、LIN总线简介LIN 是 Local Interconnect Network 的缩写是基于 UART/SCI(Universal Asynchronous Receiver-Transmitter / Serial Communication Interface通用异步收发器/串行通信接口)的低成本串行通信协议。可用于汽车、家电、办公设备等多种领域。本文主要针对 LIN 在分布式的汽车电子网络系统中的应用。1996 年Volvo和Volcano通讯(VCT)为Volvo S80 系列开发了一种基于UART/SCI的协议即Volcano Lite。1997 年Motorola与Volvo和VCT合作帮助它们改进Volcano Lite协议以满足各种不同需求(比如无需晶振的从机设备自动同步)并制定可以支持各种半导体产品的开放标准。1998 年 12 月Audi、BMW、Daimler Chrysler和Volkswagen也加入进来由此形成了LIN协会(http://www.lin-subbus.org)。开发LIN标准的目的在于适应分层次车内网络在低端(速度和可靠性要求不高、低成本的场合)的需求。二、LIN总线基础2.1 定义LINLocal Interconnect Network针对汽车分布式电子系统而定义的一种低成本的串行通讯网络是CAN总线的补充实际应用中针对某一ECU可以根据使用场景选择使用CAN和LIN总线的其中之一。应用场景车顶湿度传感器、光敏传感器、信号灯控制、天窗等车门车窗玻璃、中枢锁、车窗玻璃开关、后视镜等车头传感器、小电机、车灯组件等车内组合开关、雨刷电机、无线电、空调座椅座椅电机、转速传感器、控制面板等其他雨刮、雨量传感器、转速传感器、压力传感器等可以看出使用领域很符合LIN总线的特征主要应用于车身低速率的ECU通信领域。2.2 特点主从架构网络由一个主机节点和多个从机节点构成。延迟时间信号传输具有确定性传播时间可以提前计算出。最高速率LIN 具有可预测的 EMC(ElectroMagnetic Compatibility电磁兼容性)性能。为了限制EMI(ElectroMagnetic Interference电磁干扰)强度LIN 协议规定最大位速率为20kbps。支持诊断LIN 提供信号处理、配置、识别和诊断四项功能。节点增减无需改变其他节点的硬件电路即可灵活增加或减少从节点。节点数目根据总线的电气特性每条LIN总线最多连接16个从节点。2.3 与 CAN 的区别指标LINCAN媒体访问控制方式单主方式多主方式典型速率(Kbit/s)2.4-19.662.5-500信息标识符(bit)611/29典型节点数2-104-20位/字节编码方式NRZ 8N1(UART)NRZ加位填充每帧信息数据量(Byte)1-80-8每4字节发送时间(ms)3.5(20Kbit/s时)0.8(125Kbit/s时)错误检测8位累加和15位CRC物理层单线12V双绞线5V石英/陶瓷振荡器主节点需要从节点不需要每个节点都要网络相对成本0.51三、LIN总线协议3.1 帧结构LIN的拓扑结构为单线总线总线电平为12V,传输速率最高为20kbps,一个LIN网络最多可以连接16个节点主机节点有且只有一个从机节点有1到15个。主机任务可以发送帧头和数据从机任务不能主动发送数据需要接收主机发送的帧头根据帧头包含的信息判断(1)发送应答(2)接收应答(3)忽略应答。LIN采用UART功能传输传输时需要包含一位起始位和一位停止位共10位数据按照**LSB低位先行**方式传输。帧包含帧头和应答两部分。帧头包含同步间隔段、同步段以及受保护ID段应答部分包含数据段和校验和段。其中值**“0为显性电平,值1为隐形电平**总线上实行线与”当总线上有大于等于一个节点发送显性电平时总线呈显性电平所有的节点都发送隐形电平或不发送信息时总线才呈隐形电平即显性电平起主导作用。每个字节之间存在字节间隔报头与响应之间存在响应间隔间隔的目的是留给MCU足够的处理时间如果MCU得性能较差响应间隔可以增大所以实际的帧长度可能增加。3.1.1 字节段基于SCI的通信格式发送一个字节需要10个位的时间先发一个显性位低电平八个位发完后再跟一个高电平的隐性位表示字节发送结束。3.1.2 同步间隔段间隔段由主节点发出表示一帧报文的起始由至少13个显性位组成间隔界定符至少由1个隐性位组成。3.1.3 同步段同步场的作用是确保所有从节点使用与主节点以相同的波特率进行发送和接收数据使用下降沿来进行数据同步从数据表示来看表示的字节数据是0x55。3.1.4 受保护ID段/标识符段用来发送6位LIN报文ID和两位的奇偶校验位P0 ID0 ⊕ ID1 ⊕ ID2 ⊕ ID4P1 ¬(ID1 ⊕ ID3 ⊕ ID4 ⊕ ID5)整个八位称为报文的PID。3.1.5 数据段数据场长度为1-8字节低位低字节先发如果超过一个字节就划分成多个字节发送。3.1.6 校验和段**经典校验和计算方法**校验和场是数据场所有字节的和的反码。算法Classical累加所有字节。对每次加和进行判断如果和大于0xFF那么就把高八位的1与低八位相加。得到最后的结果后取其反码我们就得到了最后的校验和。计算下边4字节数据的奇偶校验和DATA 0x4A、0x55、0x93、0xE50x4A0x55 0x9F再加0x93 0x132很明显超过了0xFF分解为0x1和0x32突出的高8位删除加到低8位中0x10x320x33。再加0xE5 0x118又超了0x10x180x19。取反Not0xE6。3.2 帧类型3.2.1 无条件帧无条件帧是具有单一发布节点无论信号是否发生变化帧头都被无条件应答的帧。这是LIN最常用、最基本的通信模式用于周期性数据交换。理论主机发送帧头含PID指定从机回复数据或主机发送完整帧含数据向从机下达命令。实践场景正常控制步骤a (主机问从机答)BCM发送帧头PID0x21查询开关状态。开关模块从机1响应数据Data0x02二进制00000010表示“副驾升起”按钮被按下。步骤b (主机发命令)BCM解析后发送一个完整帧PID0x32控制副驾车窗 Data0x02命令上升。副驾模块从机2接收并执行不产生总线响应。步骤c (主机确认)BCM发送帧头PID0x33查询车窗状态。副驾模块响应Data[50, 0x00]位置50%状态正常。沟通方式纯粹的“发布-订阅”模型。BCM“订阅”了开关状态开关模块“发布”该状态。副驾模块“订阅”了控制命令BCM“发布”该命令。3.2.2 事件触发帧用于处理多个从机可能发生、但通常不会同时发生的事件以节省带宽。理论主机发送一个公共PID多个从机被配置可响应它但只有状态发生变化的从机才会实际回复。若多个从机同时回复导致冲突主机会退回到轮询模式。实践场景防夹功能激活副驾车窗在上升过程中遇到障碍物电机电流陡增模块检测到阻力过大判定为防夹事件。传统方式低效BCM需要不断轮询每个车门的状态帧PID0x33,0x34,0x35…来检查是否有异常即使大部分时间都没有事件发生这浪费了总线带宽。高效方式事件触发帧BCM发送一个公共的询问帧谁有事谁回答。过程如下BCM发送一个特殊的Header其PID0x40。这个PID在LDF中被定义为事件触发帧它对应着一组可能发生事件的从机状态比如副驾车窗状态、天窗状态、尾门状态等都属于“事件源”。多个从机副驾模块、天窗模块…都配置为可以响应这个PID。此时天窗模块状态无变化它选择保持沉默。副驾模块因为刚刚触发了防夹功能状态发生了重要变化它立刻在响应时隙内回复数据。它回复的数据就是它自身的状态数据例如Data [75, 0x01]位置75%防夹触发标志位为1。BCM接收到响应解析后知道是副驾车窗发生了防夹它可能会记录事件、甚至让仪表盘显示一个警告提示。冲突处理如果极端情况下副驾车窗和天窗同时发生事件并都回复会导致总线冲突和校验和错误。BCM检测到错误后就会退出事件触发模式转而逐一发送每个从机专属的PID0x33问副驾0x34问天窗…来精确定位所有事件源。3.2.3 偶发帧偶发帧是当主节点自身信号发生变化时向总线发送的帧。当存在多个关联的应答信号发生变化时通过事先设定的优先级来仲裁。偶发帧的传输可能出现三种情况当关联的无条件帧没有信号发生变化时该时隙保持沉默主节点连帧头都不需要发送当其中一个关联的无条件帧包含的信号发生了变化则发送该关联的无条件帧的应答部分如果有两个或两个关联的无条件帧包含的信号发生了变化则按照事先规定好的优先级优先级较高的关联的无条件帧获得发送权优先级较低的要等到下一个偶发帧的帧头到来时才能发送应答。由于主机节点是唯一的发布节点所以主节点事先就知道各个关联信号的优先级别这样在传输时就不会产生冲突。核心思想这是一种优化带宽的高级调度策略。主机Master不会死板地周期性地发送每一个帧而是只在确信该帧所携带的数据有可能会更新时才在调度表中插入这个帧。为什么需要它想象一下车窗从完全关闭到完全打开需要5秒钟。如果BCM以100ms的周期去查询车窗位置PID0x33那么在5秒内会发送50次查询但回复的位置值可能只是从0, 2, 4, 6… 慢慢变到100。很多次查询返回的数据变化极小这是一种带宽浪费。“偶发”如何工作条件触发主机BCM知道只有当你按下开关PID0x21有变化或者收到事件触发帧PID0x40报告了事件时车窗位置才会开始快速变化。动态插入当BCM检测到上述“触发条件”时它就会在接下来的几个调度周期里临时、高频地插入查询车窗位置的帧PID0x33。停止查询当BCM发现位置数据在连续几次查询中不再变化比如车窗已经到达目标位置它就会停止发送这个查询帧从而节省出带宽给其他任务。场景举例优化后的调度常态车窗静止BCM的调度表主要循环发送0x21问开关、0x22问门锁… 它不发送0x33问车窗位置因为位置没变化问了也是白问。按下开关BCM通过0x21得知用户命令。动态调整BCM立即修改调度表在未来5秒内高频循环0x21-0x32发命令-0x33问位置-0x21-0x32-0x33…恢复常态BCM通过0x33的响应发现位置已达到100%且不再变化于是从调度表中移除0x33恢复到此前的低频查询模式。所以“偶发帧”不是一种新帧它仍然是无条件帧只是它的发送时机是“偶发的”、“有条件的”而非周期性的。这是一种主机软件的智能调度算法。3.2.4 诊断帧诊断帧包括主机请求帧和从机应答帧。主机请求帧帧ID0x3C应答部分的发布节点为主节点从机应答帧帧ID0x3D应答部分的发布节点为从机节点。数据段规定为8个字节采用标准型校验和。3.3 进度表进度表是帧的调度表规定总线上帧的传输次序以及各帧在总线上的传输时间进度表位于主机节点根据应用层需要进行调度。进度表可以有多个一般情况下轮到某个进度表执行的时候从该进度表规定的入口处开始顺序执行到进度表的最后一个帧时如果没有新的调度表启动则返回到当前的进度表第一个帧循环执行也有可能在执行某个进度表当中发生中断执行另一个进度表后再返回例如事件触发帧的解决过程。进度表除规定了帧ID的传输次序外还规定了帧时隙的大小。帧时隙是进度表规定的一个帧的帧头起始到下一个帧的帧头起始的时间每个帧的帧时隙可以不同。3.4 通信工作原理3.4.1 网络拓补LIN网络的典型拓扑结构图如下在上图中可以看出每个LIN子网的节点都是在一起的在实车网络中这些节点的位置通常也是在一起的每个LIN子网都有一个主节点这个主节点作为网关与主干CAN总线网络相连LIN的主节点也是一个CAN-LIN的网关。一个LIN网络由一个主任务和若干个从任务组成主节点既有主任务又有从任务从节点只有从任务主任务负责决定总线上的报文负责报文头的内容从任务负责每一帧数据的具体内容。3.4.2 通信流程LIN通信的主要过程是主节点发送报头同步段标识符然后从节点来填充响应数据帧。主节点将报文头发送到总线上来依次询问每个从节点询问结束后其中一个从节点(这个节点可以是主节点自己)将最多8个字节的数据填到数据响应中然后向另一个节点发送数据可以是主节点也可以是其余从节点

相关新闻