2019/9/16应用开发部(FAE)WGPXX电子(上海)有限公司2019/9/16主要内容•LIN是什么•LIN总线的技术特点•LIN收发器芯片特征、工作模式及典型应用•LIN协议总线特性•电气连接•LIN通信概念•报文传输•报文协议•错误检测•低功耗休眠模式•EUSART与UART实现LIN的区别•LIN主从节点代码介绍2019/9/16是什么•LIN(LocalInterconnectNetwork)是一种低成本、短距离、低速网络的串行通讯网络,用于实现汽车中的分布式电子系统控制。•主要其用途是传输开关设置状态以及对开关变化响应,因此通信事件是在百毫秒以上时间内发生,为现有汽车网络(例如CAN总线)提供辅助功能在不需要CAN总线的带宽和多功能的场合,比如智能传感器和制动装置之间的通讯,使用LIN总线可大大节省成本。•由于LIN协议的突出特点是协议对硬件的依赖程度低,可以基于普通单片机的通用串口USART\EAUSART模块用于通信和Timer0模块用于总线和帧时序硬件资源以软件方式实现,成本低廉。2019/9/16总线的技术特点包括:•⑴单主机,多从机结构(没有总线仲裁);•⑵基于普通UART/SCI接口的低成本硬件、低成本软件或作为纯状态机;•⑶带时间同步的多点广播接收,从节点无需石英或陶瓷振荡器;•⑷确定性的信号传输;•⑸低成本的单线实现;•⑹速率可达20kbit/s;•⑺总线长度≤40m;•⑻保证信号传输的延迟时间;•⑼可选的数据场长度0~8bytes;•⑽灵活性的配置;•⑾数据校验和的安全性和错误检测;•⑿网络中故障节点的检测;•⒀使用最小成本的半导体元件(小尺寸,单芯片系统);•⒁不需改变LIN从节点的硬件和软件即可在网络上增加节点;•⒂通常一个LIN网络节点数小于16个。2019/9/16其规范包括了三个主要部分:•一是LIN协议规范部分介绍了LIN的物理层和数据链路层;•二是LIN配置语言的描述部分介绍了LIN配置文件的格式,LIN配置文件用于配置整个网络并作为OEM和不同网络节点的供应商之间的通用接口;•三是LINAPI部分介绍了网络和应用程序之间的接口。2019/9/16分层结构如下•(1)物理层定义了信号如何在总线媒体上传输,本规范中定义了物理层的驱动器/接收器特性。•(2)MAC(媒体访问控制子层)是LIN协议的核心,它管理从LLC子层接收到的报文,也管理发送到LLC子层的报文,MAC子层由故障界定这个管理实体监控。•(3)LLC(逻辑链路控制子层)涉及报文滤波和恢复管理的功能。2019/9/16收发器芯片•带稳压器的LIN收发器MCP201\MCP2021\MCP2022•主要特征:1、符合LIN1.3、2.0和2.1总线规范,并符合SAEJ2602规范2、43V负载突降保护、自动热关断3、宽供电电压,连续情况下可为6.0V-18.0V最大输入电压为30V4、在板稳压器-在温度范围内,输出电压为5.0V,误差为±3%-在温度范围内,替代输出电压可为3.3V,误差为±3%-内部过热保护-内部短路电流限制-外部元件仅需滤波电容和负载电容5、两种低功耗模式:-接收器开,发送器关,稳压器开(85μA)-接收器监视总线,发送器关,稳压器关(16μA)6、PICEUSART接口和标准USART接口2019/9/16典型应用2019/9/16总线特性•LIN协议支持在单根线上进行双向通信。它采用廉价、由RC振荡器驱动的单片机,这样可以省去晶振或陶瓷谐振器的成本。此协议实际上是以时间和软件上的代价换取精密硬件上成本的节约。该协议的每一条报文都包含自动波特率调节的过程。支持最高20K波特率的传输速率,以及低功耗休眠模式,休眠模式下总线被关闭以避免消耗电池,然而总线可由总线上的任一节点进行供电。•LIN总线融合了I2C和RS232的特性。与I2C类似,LIN总线通过电阻拉为高电平,每一个节点通过一个集电极开路驱动器拉为低电平。然而,由于没有时钟线,故又像RS232那样,通过起始位和停止位来标识每个字节,而各个位采用异步时序进行传输。•LIN相对于CAN的成本节省主要是由于采用单线传输、硅片中硬件或软件的低实现成本和无需在从属节点中使用石英或陶瓷谐振器。2019/9/16电气连接——典型的LIN协议配置当任何一个节点将总线拉低时,总线处于低电平,标志着总线进入显性状态(占用状态)。当总线电平为VBAT(9-18V)且要求所有节点都使总线处于悬空状态时,则意味着总线处于隐性状态(非占用状态Recessivestate)。在空闲状态下,总线通过上拉电阻悬空为高电平。总线工作电压为9V至18V,但总线上的器件必须能够承受40V的电压。通常,单片机通过线路驱动器/接收器与总线电平隔离。这样能使单片机工作于5V电压条件下,而总线工作于更高的电压。总线上的每个节点都端接到VBAT。主节点通过1KΩ电阻端接,而从节点通过20-47KΩ电阻端接。总线最大长度设计为40米2019/9/16的操作基于一主多从的拓扑结构总线的通讯由单个主机控制,分成两个独立的部分:从任务、主任务。主机任务:每个报文帧都用一个分隔信号起始,接着是一个同步场和一个标识符场,这些都由主机任务发送,负责决定何时传输哪个帧。从机任务:则是发回数据场和校验场,提供将通过LIN总线传输的数据,并允许通过节点从低功耗模式中唤醒LIN集群。通过主机控制单元中的从机任务,数据可以被主机控制单元发送到任何从机控制单元。相应的主机报文ID可以触发从机-从机的通信。2019/9/16报文传输•报文传输是由报文帧(通过LIN总线传输的数据单位)的格式形成和控制。•报文帧由主机任务向从机任务传送同步和标识符信息,并将一个从机任务的信息传送到所有其他从机任务。•主机任务位于主机节点内部,它负责报文的进度表、发送报文头(HEADER)。•从机任务位于所有的(主机和从机)节点中,其中一个(主机节点或从机节点)发送报文的响应(RESPONSE)。2019/9/16报文协议•主节点通过查询从节点实现与总线其余部分的数据共享。从节点仅在接收到主节点命令后才进行数据发送,从而在无须进一步仲裁的情况下进行双向通信。•报文传送以主节点发送同步间隔开始,随后发送同步字段和报文字段。•每条报文的第二个字节是标识字节,用于告诉总线随后将发送什么数据,并指明哪个节点应该应答以及应答的长度。只有一个从节点可以响应给定的命令。•从节点仅在主节点的控制下才能在总线上发送数据。一旦数据出现在总线上,任何节点都可以接收该数据。因此,从节点之间的通信不需要主节点进行控制。•所有从机节点在主机节点发布报文头之后都应能检测到间隔场的存在,并且在正确地接收同步字节场后,准确计算出主机节点将要发送数据的波特率,并以此波特率作为下一步要发送或接收数据的波特率的设定值。这样,经过了间隔场和同步字节场的接收,所有的从机节点达到了与主机节点的同步。2019/9/16、字节协议的格式就是通常的“SCI”或“UART”串行数据格式(8N1编码)。2、每个字节场的长度是10个位定时(BITTIME)。起始位(STARTBIT)是一个“显性”位,它标志着字节场的开始。接着是8个数据位,首先发送最低位,停止位(STOPBIT)是一个“隐性”位,它标志着字节场的结束。2019/9/16同步间隔•同步间隔场是由主机任务发送。它使所有的从机任务与总线时钟信号同步。•同步间隔场有两个不同的部分,第一个部分是由一个持续TSYNBRK13Tbit或更长时间(即最小是TSYNBRK,不需要很严格)的显性总线电平。接着的第二部分是最少持续TSYNDEL1Tbit时间的隐性电平作为同步界定符,这将告知从节点即将有报文传输第二个场允许用来检测下一个同步场(SYNCHFIELD)的起始位。2019/9/16时钟同步•LIN协议使用控制器中的低成本RC振荡器。为了使每个节点在时钟出现漂移的情况下仍能正常工作,从节点必须在每次传输时检测主节点的波特率并据此调整自身的波特率,使从任务能与主时钟同步。•因此,每一个事务都由同步字段(Synchronisationfield)开始。同步字段是一个字节0x55(交替的0和1)。这使得每个从节点能检测8个位时间。通过计算这些跳变、将其除以8并作取整处理,使得每个从节点根据主节点调整自身的时序。2019/9/16标识字段•标识字段又被分为3个字段:最低4位(bit0-3)用来对总线上的器件进行寻址;中间2位(bit4-5)指示此后报文的长度;最后2位(bit6-7)用于奇偶校验。标识字段的4个地址位可以寻址最多16个从节点,每个从节点又可发送2、4或8字节响应,这样总共有64种不同的报文。•除了休眠命令外,LIN协议规范并没有定义每条报文的内容。而是留在具体应用程序中定义。节点间可直接传送报文,如同在主节点控制下一样。数据无须被主节点接收后再重新发送到接收节点。相反,任何报文都可被任何节点接收并处理。2019/9/16数据字段•数据字段传输1到8个字节的数据,通过报文帧传输,由多个8位数据的字节场组成。传输由LSB开始2019/9/16检验和字段•校验和场是数据场所有字节的和的反码,校验和按“带进位加”(ADDC)方式计算,每个进位都被加到本次结果的最低位(LSB)。这就保证了数据字节的可靠性。所有数据字节的和的补码与校验和字节之和必须是“0xFF”。2019/9/16响应部分传输的数据内容有三种类型:•信号-响应的数据字段中包含的梯状值或字节阵列。在这种情况下,帧的ID必须在0x00和0x3B之间。注意,数据段中信号的位置对带有相同PID的帧来说是固定的。•诊断信息-用来传输诊断或配置数据。这些信息总是8位长,并带有预留的ID号。0x3CID用于主请求,而0x3D用于从响应。•保留信息-可用于用户定义的扩展名(这种情况下ID等于0x3E)或预留用于未来的协议改进(ID设为0x3F)。2019/9/16、位错误向总线发送一个位的单元同时也在监控总线,当监控到的位的值和发送的位的值不同时则在这个位定时检测到一个位错误。2、校验和错误所有数据字节的和的补码与校验和字节之加的和不是“0xFF”时,则检测到一个校验和错误。3、标识符奇偶错误标识符的奇偶错误(即,错误的标识符)不会被标出。通常LIN从机应用不能区分一个未知但有效的标识符和一个错误的标识符。然而,所有的从机节点都能区分ID场中8位都已知的标识符和一个已知但错误的标识符。2019/9/16错误报告•不存在直接错误报告机制。然而,每个从节点都应能跟踪自己的错误。这样主节点可请求将错误状态作为正常报文协议的一部分。2019/9/16低功耗休眠模式•主节点通过发送标识码0x80使所有节点进入休眠模式。这是LIN协议规范中定义的唯一报文ID。休眠命令后的数据字节内容没有定义。接收到休眠命令的从节点应当对自身进行设置,以便当总线状态发生改变时能唤醒,并关闭自身的电源以使电流消耗最低。总线悬空为高电