LIN的同步机制,你了解多少?
发布日期:2022-08-09 13:37

LIN总线作为一种辅助的总线网络也是存在同步机制的,但是LIN在作为接收节点接收数据时是有自动修正总线上通讯的波特率偏差的能力的。那这是怎么做到的呢?本文将与大家深入探讨。


LIN(Local Interconnect Network)是一种低成本的串行通讯网络,用于实现汽车中的分布式电子系统控制。LIN的目标是为现有汽车网络(例如CAN总线)提供辅助功能,因此LIN总线是一种辅助的总线网络。在不需要CAN总线的带宽和多功能的场合,比如智能传感器和制动装置之间的通讯使用LIN总线可大大节省成本。LIN 通讯是基于SCI(UART)数据格式,采用单主控制器/多从设备的模式。仅使用一根12V信号总线和一个无固定时间基准的节点同步时钟线。


LIN帧结构


LIN帧(frame)包含帧头(Header)和应答(Response)两部分。帧头包括同步间隔段、同步段以及PID(Protected Identifier,受保护ID)段,应答包括数据段和校验和段,如图1所示,其中值“0”为显性电平(Dominant),值“1”为隐性电平(Recessive)。


图1 LIN帧结构


UART的基本时序


再介绍LIN同步机制之前,我们需要介绍一下UART的基本时序,了解一下底层信号是怎么传送的。


以波特率9600为例,可以理解为将1s分解为9600等份,对于发送端来说,每bit电平的维持时间是1/9600s,对于接收端来说,在1/9600s内要完成数据的采样。因此对于不同时间源的设备,如何实现这个发送“节拍”以及设置接收采样频率非常重要。


图2 波特率示意图


UART的基本时序:


发送端:

图3 发送端


接收端:

图4 接收端


UART的每一帧数据一般有10位,分别为初始位、8位数据和结束位。对于发送端,将待发送的数据存入发送寄存器,产生起始位,即将电平拉低,随后每1/9600s将寄存器中的数据一位一位的发送出去。当数据发送完毕后,将电平拉高等待下一次的发送。对于接收端来说首先要检测是否有数据来,它采用下降沿检测的方式来检测起始位。对于数据位的采样,选取数据位的中点位置的电平作为采样数据,因为中点位置的电平较为稳定。假设采样间隔为N,那么当采样8N后,就可以停止采样了。


LIN同步机制


LIN总线协议规定,LIN网络主机节点必须采用较高精度时钟,作为LIN网络时间基准,保证位速率的准确性,而从机节点可以使用较低精度时钟,所以主从节点的时钟就会有频率偏差,需要进行调整同步,否则难以保证数据的正确收发。若不进行LIN同步会有多大的影响呢?我们可通过控制器对同步间隔段识别的阈值来量化。


图5 同步间隔段


同步间隔段由同步间隔(Break)和同步间隔段间隔符(Break Delimiter)构成,如图5所示。同步间隔是至少持续13位(以主机节点的位速率为准)的显性电平,由于帧中的所有间隔或总线空闲时都应保持隐性电平,并且帧中的任何其它字段都不会发出大于9位的显性电平(LIN报文以字节域格式通讯),因此13位的同步间隔可以标志一个帧的开始,而能否识别这13位的同步间隔段就显得尤为重要,这完全依赖于节点的一个参数-识别阈值,其计算方法如下:


假设从机节点所选择的时钟(精度不高的时钟)精度为±14%时,(13–11.18)/13 = 14%,即是说当精度为±14%时,主机节点发送13个位数据,从机节点最差只能接收到11.18位(此值为上限),因此,只有当识别阈值设置为小于11.18时,才能识别到同步间隔,若识别阈值高于11.18位,就会出现主机发送同步间隔,而从机检测不到的情况。由于在除同步间隔段以外,帧中任何其余部分都不会发送超过9位的显性电平,(10.26 - 9) / 9 = 14%,即是说主机节点发送9个位数据时,从机节点可能最多收到10.26位(此值为下限),因此,为了避免将其他字段识别为同步间隔,判断阈值必须大于10.26位,综上,识别阈值可设为11。


假设从机节点选择的时钟(精度较高的时钟)在容限范围内(±1. 5%)时,按照上面的计算方法,识别阈值应设在9.135位(由(9.135 - 9) / 9 = 1.5%计算而来)到12.805 位(由(13–12.805) / 13 =1.5%计算而来)之间。具体设定阈值会随着所选时钟的精度,取值范围在9.135位到12.805位之间浮动。


LIN同步是以帧为单位,每帧进行一次同步。LIN接收节点在接收数据时,可以自动修正总线上通讯的波特率偏差,因为协议中带有一个字节域的同步段(如图6所示),采用固定的字节055(转换为二进制为01010101b),会自动根据同步段计算主机节点的波特率来调整自身的时钟,达到同步的效果。


图6 LIN同步段


主机节点发送位速率计算公式如下:



通过计算,可以得到主机节点实际传输1位所用的时间,即位速率。

当计算出位速率之后,就可以使用这个速率,基于UART采集原理,获取到LIN的报文数据。


总结


其实LIN的本质就是基于串口的通讯,常规串口需要知道波特率,但是在LIN通讯中,只有主机能够设置通讯波特率,从机需要解析报文得到波特率,所以,LIN的同步其实就是解析波特率的过程。



CANDTU系列车载CAN-bus数据记录仪,集成了1-2路符合ISO11898标准的独立CAN-bus通道,可以长时间记录CAN2.0A或CAN2.0B格式的CAN报文信息。另外,设备集成1路LIN总线接口,可支持LIN总线的数据收发测试。


关键词:LIN 同步机制 CAN-bus数据记录仪
浏览量:10273
来 源:ZLG致远仪器
编辑:清风
声明:凡本网注明"  来源:仪商网"的所有作品,版权均属于仪商网,未经本网授权不得转载、摘编使用。
经本网授权使用,并注明"来源:仪商网"。违反上述声明者,本网将追究其相关法律责任。
本网转载并注明自其它来源的作品,归原版权所有人所有。目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。如有作品的内容、版权以及其它问题的,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
本网转载自其它媒体或授权刊载,如有作品内容、版权以及其它问题的,请联系我们。相关合作、投稿、转载授权等事宜,请联系本网。
QQ:2268148259、3050252122。
展开全文