LIN总线协议——从入门到实战(基于S32K142)

1.前言

学习LIN是非常痛苦的,因为从我拿到开发板的时候,就是一个巨大的坑。开发板是NXP的K144EVB,结果下载了两天,程序下不进去,直到我找同事问才知道芯片焊的是K142。之后大半个月使用官方例程,和CANoe进行通讯,没有一点反应,于是我不停的改代码。后来用示波器发现连帧头都没发出来,然后再改代码,还是没有帧头波形,整郁闷了都。

讲这些废话是想说,底层配置,一定要先验证硬件连接没问题,先验证最简单的连接是否成功,比如LIN先用示波器测是否能发送帧头。而不是像我这种傻缺,拿一堆代码直接干。当然,这种天坑事件也是极少能遇到的,

2.理论学习

首先是学习LIN的理论知识,CSDN上有很多文章,我就不赘述,当然看完也只是简单了解。最最重要的是,这份《LIN入门》资料,非常详细,而且我发现大多数文章都源自于这份资料。仔细阅读,大致明白运行原理。15d720d534b84e4e9bcb3b763cebc966.png

3.S32DS IDE使用

因为我使用的是K142芯片,所以用S32DS IDE。

1.新建工程

点击File,然后点击New,然后点击S32DS Project from Example。

f9d54f3c5ae441189189d2eccb9e31b3.png

出现下面这个页面,首先搜索你使用的芯片型号,比如我是用的K142。然后下拉找到S32SDK S32K1xx RTM这一栏,往下找会有LIN的例程。

1540ff67cc6e4b5f83131aca4016b91e.png

选择例程,建议是Lin组件例程,比较简单一点。一共两个,master是主机,slave是从机。

第一种是Lin组件的例程,不含Lin协议栈。

c722e6d76bed4b96add1f802f2b5d811.png

 

第二种是LinStack组件的例程,包含完整的Lin协议栈。需要配置LinStack组件,配置协议栈。内容挺多的,后续单独讲。

26b1b9e1189f4b1b975a6c24b5b26620.png

2.配置LIN引脚

在左下角找到这个pin_mux:PinSettings,点击。

ecd33cfcba6245b1863f3d89139e3e26.png

找到LPUART,配置对应串口的TX引脚和RX引脚。

66a02befbe5c400884ef3d8bba8bb15a.png

4.代码构成

f5fbeac8518a460f8aa218d25add191d.png

5.阅读手册

阅读手册,阅读手册,阅读手册,重要的事情说三遍。这个手册指的是对应芯片手册。比如S32K1xx的芯片手册,会有许多讲解和例程,各种外设,但是唯独没有LIN的,额,就很无语。不过有官方例程代码。

为什么强调这个,因为LIN有一个收发器芯片,在K142EVB开发板里面,是TJA1027T的Lin收发器。因为很少使用官方开发板,如果你使用的是公司自己的开发板,一定要注意这个Lin收发器是否配置正确。如果Lin的TX有波形,而Lin线没有,基本上就是Lin收发器没有配置正确。具体配置需要阅读相应型号的Lin收发器芯片手册。

a9e67605f82e462ebbab34b9967b95bc.png

6.码字不易,不喜勿喷。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值