假设从机节点所选择的时钟(精度不高的时钟)精度为±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总线的数据收发测试。