LIN总线开发:STM32F0 TJA1020

LIN总线协议最新版本是V2.2,历史版本有V1.0,V1.2,V1.3,V2.0,V2.1,V2.2。具体的区别请自行百度,这里只介绍对于写代码最需要关心的问题。

V1.0属于起初版本,各项定义都不完整,目前实际没有应用;

V1.2也没有应用,相对V1.0稍微完善了名称描述;

V1.3是比较完善的版本,目前存在比较旧版的汽车总线中,采用经典校验;

V2.0,V2.1是在V1.3基础上增加了诊断协议,直接继承自ISO15765-3(CAN协议中的诊断定义相同);采用增强型校验+经典校验两种;

V2.2版本没有明显修改,只是对各类文字描述做了修正。

-------------------------------------------------------------------------------------------

LIN的硬件比较简单,有些人认为LIN同RS232,485类似,直接用MCU的普通串口就能实现。但这是不对的,普通串口不完全能够支持LIN协议。因为LIN的帧结构中,对报文头的LIN Break时间长度有特别的要求:11bit长度的低电平.


然而用普通串口是怎么实现LIN Break的低电平长度的?发一个字节的0x00总共才8bit不够长,两个字节0x00又太长而且中间断开了不连续;就算切换低波特率来发送0x00,但是切换波特率比较耗时,高电平长度明显超过协议要求,不符合LIN协议要求。

因此普通串口作为LIN从模式还行,作为主模式完全不符合LIN的标准。作为主模式就必须使用增强型串口才能解决 LIN Break问题。

然后是软件问题,由于LIN总线是半双工通信的,通信效率低而且没有硬件过滤器,必然会对MCU的性能产生极大的影响。这种情况下采用RTOS必然是可选项,否则容易导致事件响应实时性问题。


未完待续!


先发个广告,LIN开发板:

https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.594c1debKlwobB&id=567670729920

你可能感兴趣的:(总线及方控,STM32)