基于LIN2.1协议的车窗控制系统的应用
图4 基于TLE9832的防夹车窗系统原理图
3.3 LIN通信部分的软件设计
LIN通信部分的程序流程如图5所示。可将车窗控制器中LIN通信部分的程序分为两个部分:
图5 LIN通信部分程序流程
① 第一部分为初始化,在每次重新上电后,程序都会首先读取Flash中的数据,若0x8000中的数据为0x78,则判断产品在出厂后执行过保存配置的功能。所以程序会将存储在Flash中的NAD和帧ID读出来,作为当前的NAD和帧ID。接着是初始化LIN模块,包括设置与LIN通信相关的定时器和 UART等外设,设置从节点的各个参数、波特率等。
② 第二部分则放在定时器中断里面,在每次中断时进行节点配置、数据的发送和接收。首先是根据帧ID判断有无节点配置任务,若有则根据SID执行各种节点配置任务;接着根据收到的数据帧内容控制车窗的自动上升和自动下降;最后将车窗信息,包括电枢电流、车窗位置等发给主节点。
4 LIN通信的测试结果
本测试借助Kvaser公司出品的LIN通信测试工具Leaf Professional LIN及其配套软件CANLab完成。测试时测试工具设置为主节点,TLE9832单片机设置为从节点,比特率设置为19 200 bps。初始NAD设置为0x06,初始帧ID为无条件帧0x00、0x01和诊断配置帧0x3C、0x3D,SupplierID和Function ID都为0x0000。
首先测试节点配置的各个功能:先测试分配NAD功能,将NAD修改为0x03;接着测试有条件分配NAD功能,将NAD修改为0x08;然后测试分配一系列帧ID功能,并保存设置;最后重新上电,并读取从节点信息。节点配置功能的测试结果如图6所示。
图6 节点配置功能的测试结果
然后通过LIN总线控制车窗自动上升和下降,测试结果如图7所示。
图7 车窗自动上升下降功能的测试结果
最后通过LIN总线获得车窗上升过程中电枢电流的数据,并转换成图形,如图8所示。其中电流值为经过A/D转换后的结果。
图8 车窗上升过程中的电枢电流值
结语
本文基于LIN2.1协议设计了防夹车窗控制系统中的通信模块。可以看出,该模块可以很好地满足用户在数据传输和诊断等方面的需求。LIN总线自身的发展必将推动车身控制领域的进一步发展。
评论