汽车LIN通讯协议编写资料王晓辉wxh_haust@126.comLIN总线原理与应用LIN的主要技术特点LIN的通信任务和报文帧类型LIN的报文通信标准LIN协议的格式2.1LIN概述LIN(LocalInterconnectNetwork局部互联网)是面向汽车低端分布式应用的低成本(0.5美元)、低速率(20kbps)、串行通信总线。2.1LIN概述LIN(LocalInterconnectNetwork局部互联网)是面向汽车低端分布式应用的低成本(0.5美元)、低速率(20kbps)、串行通信总线。由汽车行业开发,用作经济高效的子总线系统;是CAN的下层网络;属于SAE规范的汽车A类网络;是CAN总线的补充,适用于对总线性能要求不高的车身系统,如车门、车窗、灯光等智能传感器、执行器的连接和控制。LIN实现了一种具有成本效益的智能传感器和执行器的通讯方式。2.1LIN概述LIN的目标为现有的汽车网络(CAN网络)提供辅助功能在不需要CAN总线的带宽和多功能的场合使用,降低成本。将开关、执行元件和传感器从子总线连接到主总线(如CAN总线)。Lin总线广泛应用的原因:目前,高/低速CAN和J1850总线已经成为标准的车用网络总线。这些总线速度极高,具有高抗电磁干扰性和高传输可靠性等优越的性能,但价格也较高。大量的车身和安全性能方面的应用对车用网络总线的性能要求并不太高,只需要一种性价比更高的标准车用网络总线,而LIN总线正好可以满足这一需求。因此,目前LIN总线技术正被越来越广泛的应用到车身电子中。LIN起源和发展LIN联盟成立于1999年,并发布了LIN1.0版本。最初的成员有奥迪,宝马,克莱斯勒,摩托罗拉,博世,大众和沃尔沃等2000年,LIN联盟再次发布了1.1版本。2001年,第一辆采用LIN1.1版本的量产汽车面世。2003年,2.0版本出现。2006年,2.1版本面世并沿用至今。LIN的市场LIN总线产品已经成为汽车总线的第二大市场;第一大市场是CAN总线,其在2006年已经达到顶峰。LIN接口由两部分组成:协议控制器、线路接口LIN节点LIN线路接口采用+UARTLINRXTX通信媒介(铜线)LIN协议控制器协议控制器集成在微控制器中的一个标准UART上实现,微控制器软件负责管理LIN协议,实现以下功能:(1)发送/接收8位字节;(2)构成请求帧,接收为应帧;(3)发送帧线路接口:(1)负责将LIN总线的信号翻译成无干扰的RX信号传入LIN协议控制器;(2)或将协议控制器的RX信号进行翻译传入LIN总线物理层采用单线连接,两个电控单元间的最大传输距离为40m其总线驱动器和接收器的规范遵从改进的ISO9141单线标准。低成本LIN是基于SCI/UART(通用异步收发接口的单总线串行通信)协议;目前几乎所有的微控制器芯片上都有SCI/UART接口。低传输速率。小于20kb/s采用NRZ编码。•LIN总线融合了I2C和RS232的特性:像I2C总线那样,LIN总线通过一个电阻上拉到高电平,而每一个节点又都可以通过集电极开路驱动器将总线拉低;像RS232那样通过起始位和停止位标识出每一个字节,每一位在时钟上异步传输。单主/多从媒体访问、无需仲裁。在总线拓扑结构的LIN网络中,由主节点控制对传输介质的访问,从节点只是应答主节点的命令。不需要仲裁和冲突管理机制。LIN总线的网络节点数不能超过16,否则,节点增加将会减少网络阻抗,导致环境条件变差。每增加一个节点,就会降低3%的阻抗同步机制简单LIN通信中的从节点采用简单的自我同步机制(不需要晶体或陶瓷共鸣器)。主节点在报文帧的头部发送同步间隙,标记报文帧的开始。从节点根据此间隙与总线同步,无需专门的时钟同步装置,降低硬件成本。通信确定性。主节点控制整个网络的通信,控制不同节点的传输时间;每个报文帧的长度是预知的;采用调度表,可保证信号的周期性传输、保证总线不会出现超负载现象报文的数据长度可变。LIN应答帧报文的数据域长度可在0~8个字节之间变化,便于不同任务的通信应用。采用奇偶校验和求和校验相结合的双重校验机制。LIN网络由数据链路层和物理层构成数据链路层逻辑链路控制子层(LLC)报文滤波、恢复管理、报文确认等媒体访问控制子层(MAC)是LIN的核心对来自LLC的报文封装串行化;对来自物理层的数据进行解串、错误检测、错误标定等操作;由故障界定管理实体进行监控;物理层定义了信号如何在总线媒体上传输;定义物理层的驱动器/接收器特性。几个概念主机节点:控制网络中各节点通信的节点一个LIN网络上的通讯总是由主发送任务所发起的在主节点上可执行主通信任务和从通信任务可控制整个总线网络和协议;主通信任务:在主节点上运行的,用于控制总线上所有的通信,负责报文的进度表、发送报文头的任务称为主任务。常见主任务:如定义传输速率,发送同步时间间隔、同步场、标识符ID场,监控并通过检查校验和(checksum)验证数据的有效性。SchoolofElectricalandInformation几个概念从节点:是总线上的2-16个成员,它们在主节点发送适当的ID后接收或发送数据从通信任务从节点从事的任务都称为从通信任务;但主节点也会执行从任务节点接收来自主通信任务的ID节点根据ID决定做什么。–接收数据–或发送数据–或什么都不做发送数据时,节点:–发送2、4或8个数据字节–发送检验字节SchoolofElectricalandInformationLIN协议是一主多从结构,通信只能由主节点中的主任务发起,一个完整的LIN报文帧的传输是由主任务和从任务共同实现的,主任务发送“报头”,从任务发送或接收“响应”。LIN通信:•在总线上发送的信息,有长度可选的固定格式。•每个报文帧都包括2、4或8个字节的数据以及3个字节的控制、安全信息(同步场、标识符场和校验场)。•通过主机控制单元中的从机任务,数据可以被主机控制单元发送到任何从机控制单元。•相应的主机报文ID可以触发从机-从机通信。(二)报文帧类型:有6种类型无条件帧:携带数据信息;事件触发帧:处理偶发的事件;偶发帧:保证在调度表确定性的条件下为系统动态行为的灵活性而设定的。上述3中帧的报文标识符的范围为0~59(0x3b)诊断帧(命令帧、应答帧):携带8个字节的诊断信息或组态信息,主节点诊断请求帧的标识符为60(0x3c),从节点诊断应答帧的标识符为61(0x3d)用户自定义帧:可携带用户自定义的任何信息,标识符为62(0x3e),在调度时可给用户自定义帧分配报文帧时隙,每当时隙到来时发送用户自定义帧的帧头。保留帧:保留帧标识符63(0x3f),在LIN2.0中没有被使用。报文传输是由报文帧的格式表示和控制。报文帧格式:一个主机节点发送的报文头;一个主机或从机节点发送的响应组成。2.3LIN的报文传输•报文头包含同步间隙、同步字节和报文标识符(0~63)。•响应报文由1-9个字节构成:•其中2、4或8个字节的数据场和•1个校验和场。•报文帧之间有帧间间隔分隔;•报文与响应之间有帧内响应空间分隔;•最小帧间间隔和帧内响应空间均为0;•最大长度收到报文帧的最大长度FRAME_max限制。字节场格式:说明:每一个字节场的长度由10个定时位定时(BITTIME);起始位(STARTBIT)是一个“显性”位,标志字节的开始;8为数据位,先发送最低位;停止位(STOPBIST)是一个“隐性”位,标志着字节场的结束。报文头(HEADERFIELDS)同步间隔(synchronisationbreak)作用:标识报文的开始,由主节点发送;使得所有的从机任务和总线时钟信号同步。同步间隔:至少13bit的显性位,之后紧随至少1bit隐性值的同步界定符。同步界定符的作用:用来检测接下来的同步域(SynchField)的起始位。2.3LIN的报文传输—报文结构报文头(HEADERFIELDS)同步场(SYNCHFIELD)包含了时钟的同步信息。格式为0x55,表现为8个位定时中有5个下降沿(隐性到显性的跳变)报文头(HEADERFIELDS)标识符场(IDENTIFIERFIELD)定义了报文的内容和长度。6个标识符位(ID0~ID5)和2个标识符奇偶校验位(P0P1);ID4和ID5定义了数据场的数据长度;报文头(HEADERFIELDS)标识符场(IDENTIFIERFIELD)ID4和ID5与数据长度的关系数据长度;ID5ID4数据场的数量0020121041182.3LIN的报文传输—报文结构报文头(HEADERFIELDS)标识符场(IDENTIFIERFIELD)引入奇偶校验位。其中ID6是ID0、ID1、ID2、ID4的奇校验,ID7是ID1、ID3、ID4、ID5的偶校验。校验公式如下,其中“⊕”代表“异或”运算,“¬”代表“取非”运算。P0=ID0⊕ID1⊕ID2⊕ID4P1=¬(ID1⊕ID3⊕ID4⊕ID5)由公式可以看出,PID不会出现全0或全1的情况,因此,如果从机节点收到了“0xFF”或“0x00”,可判断为传输错误。2.3LIN的报文传输—报文结构数据场(DATEFIELDS)由多个8位的字节场组成,传输由LSB开始2.3LIN的报文传输—报文结构校验和场(CHECKSUMFIELDS)校验和域是数据域所有字节的和的反码。校验和按“带进位加(ADDC)”方式计算,每个进位都被加到本次结果的最低位(LSB)。这就保证了数据字节的可靠性。所有数据字节的和的补码与校验和字节之加的和必须是“0xFF”。►0x3C(ID60)表示主节点请求帧(诊断帧),以便从主节点向从节点发送命令和数据。►0x3D(ID61)表示从响应帧,该帧触发从节点向主节点发送数据。过程:标识符为0x3c一个的“主机请求帧”,主机向从机发送数据和命令;标志符为0x3dD的“从机相应帧”触发一个从机向主机发送数据。命令帧中的第一个数剧场为0x00~0x7F,其用法由LIN协会定义;剩下的命令帧用户可以自行分配.总线有两种状态:睡眠模式:从主节点发送睡眠模式命令后到总线上出现唤醒信号结束,没有任何总线活动的这种模式。唤醒模式:被唤醒信号唤醒之后的总线处于唤醒模式,可以有总线活动。睡眠模式命令:是第一个数据字节为0x00的命令帧总线的睡眠模式可以通过任何节点的从任务发送一个唤醒帧来终止。8bit4bit唤醒过程某一个节点的从任务发送唤醒信号后,所有的节点都运行启动过程并等待主机任务发送一个同步间隔场和同步场;若等待超时(TIME_OUT),请求第一个唤醒信号的节点再一次发送新的唤醒信号;上述情况最多出现3次,此后,若还没将总线唤醒,则等待3个TIME_OUT时间,再发送唤起信号。8bit=4bit►0x3E(ID62)表示用户定义的扩展帧,后跟任意数量的数据字节。►0x3F(ID63)预留供将来使用。报文帧以一个同步间隔作为开始,以校验和域作为结束。报文帧中的字节域用字节间空间和帧内响应空间分隔。字节间空间和帧内响应空间的长度没有定义,但限制了整个报文帧的长度。最小的帧长度TFRAME_MIN是传输一个帧的所需要的最小时间(字节间空间和帧内响应空间应为0);最大的帧长度TFRAME_MAX是传输一个帧的最大时间。时间名字时间/Tbit最小报文帧长度TFRAME_MIN10*Ndata+44最小报文头长度THEADER_MIN34最大报文头长度THEADER_MAX(THEADER_MIN+1)*1.4最大报文帧长度TFRAME_MAX(TFRAME_MIN+1)*1.4总线空闲超时TTIME_OUT2500“+1”的条件使TFR