1.前言
学习LIN是非常痛苦的,因为从我拿到开发板的时候,就是一个巨大的坑。开发板是NXP的K144EVB,结果下载了两天,程序下不进去,直到我找同事问才知道芯片焊的是K142。之后大半个月使用官方例程,和CANoe进行通讯,没有一点反应,于是我不停的改代码。后来用示波器发现连帧头都没发出来,然后再改代码,还是没有帧头波形,整郁闷了都。
讲这些废话是想说,底层配置,一定要先验证硬件连接没问题,先验证最简单的连接是否成功,比如LIN先用示波器测是否能发送帧头。而不是像我这种傻缺,拿一堆代码直接干。当然,这种天坑事件也是极少能遇到的,
2.理论学习
首先是学习LIN的理论知识,CSDN上有很多文章,我就不赘述,当然看完也只是简单了解。最最重要的是,这份《LIN入门》资料,非常详细,而且我发现大多数文章都源自于这份资料。仔细阅读,大致明白运行原理。
3.S32DS IDE使用
因为我使用的是K142芯片,所以用S32DS IDE。
1.新建工程
点击File,然后点击New,然后点击S32DS Project from Example。
出现下面这个页面,首先搜索你使用的芯片型号,比如我是用的K142。然后下拉找到S32SDK S32K1xx RTM这一栏,往下找会有LIN的例程。
选择例程,建议是Lin组件例程,比较简单一点。一共两个,master是主机,slave是从机。
第一种是Lin组件的例程,不含Lin协议栈。
第二种是LinStack组件的例程,包含完整的Lin协议栈。需要配置LinStack组件,配置协议栈。内容挺多的,后续单独讲。
2.配置LIN引脚
在左下角找到这个pin_mux:PinSettings,点击。
找到LPUART,配置对应串口的TX引脚和RX引脚。
4.代码构成
5.阅读手册
阅读手册,阅读手册,阅读手册,重要的事情说三遍。这个手册指的是对应芯片手册。比如S32K1xx的芯片手册,会有许多讲解和例程,各种外设,但是唯独没有LIN的,额,就很无语。不过有官方例程代码。
为什么强调这个,因为LIN有一个收发器芯片,在K142EVB开发板里面,是TJA1027T的Lin收发器。因为很少使用官方开发板,如果你使用的是公司自己的开发板,一定要注意这个Lin收发器是否配置正确。如果Lin的TX有波形,而Lin线没有,基本上就是Lin收发器没有配置正确。具体配置需要阅读相应型号的Lin收发器芯片手册。
6.码字不易,不喜勿喷。