打印
[学习笔记]

7801的软件LIN master模式简化程序

[复制链接]
1122|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
RunningX|  楼主 | 2020-11-12 11:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
7801芯片没有硬件LIN外设,但是有UART0跟UART1可以配置成LIN模式。相对于硬件LIN来说,软件LIN的处理会稍多一些,需要根据LIN帧格式来拆分发送,这里做了一个简化版的LIN主机程序,方便用户理解并使用
首先看主函数,这里做了一个软件LIN的初始化配置,波特率为19200,然后主循环里面执行每100ms发送一次LIN数据

再看发送LIN数据这里,首先发送break域,然后按帧格式顺序填充同步域0x55,校验ID:0x50,8个数据,校验和;然后通过串口通信发出去。(这里的数据位可以自定义,因为是全局变量,也可以放在外面自己定义变化的数据)

附上波形:


工程如下:
UART_LIN_MASTER.rar (777.83 KB)




使用特权

评论回复

相关帖子

沙发
chenjun89| | 2020-11-16 08:10 | 只看该作者
学习了,感谢楼主分享。

使用特权

评论回复
板凳
chenlei1910| | 2020-11-16 21:40 | 只看该作者
学习一下,有没有从机接收的程序

使用特权

评论回复
地板
数据采集存储| | 2020-11-17 15:31 | 只看该作者
这个学习了,确实学习了,不错的帖子,分享出来很棒。

使用特权

评论回复
5
维修超人| | 2020-12-4 17:09 | 只看该作者
lin简单的解释,作为主机,其实就是uart的基础加上break域(最少13位的低电平+1位的高电平),break域由主机控制,我的理解break域就是用来清场子的,连续的低电平让从机们无法在总线上发数据,转为接收(大佬要开始说话了的意思)。然后是同步场0x55就更好理解了,就是8位连续变化的高低电平,用来同步时钟即波特率。然后是ID。
作为从机,简单的做法就是普通uart就可以了,一直监听串口数据,主机发送的break域、同步域和ID,对uart来说就是0x00 + 0x55+ID。当判断此时ID是自己从机的ID,则把从机要告诉主机的数据发送上去即可。
这是简单的做法,正确的做法应该是要break域监测的,这个STM32的串口支持

使用特权

评论回复
6
weifeng90| | 2020-12-6 21:15 | 只看该作者
不错,感谢楼主分享。

使用特权

评论回复
7
guijial511| | 2020-12-7 08:02 | 只看该作者
LIN没有用到过。

使用特权

评论回复
8
huquanz711| | 2020-12-7 22:49 | 只看该作者
感谢楼主分享经验

使用特权

评论回复
9
天意无罪| | 2020-12-8 08:15 | 只看该作者
LIN总线能跑多大的通信速率?

使用特权

评论回复
10
liangshuang95| | 2020-12-10 08:00 | 只看该作者
LIN总线貌似汽车上面用的多

使用特权

评论回复
11
liangshuang95| | 2020-12-10 08:01 | 只看该作者
LIN总线貌似汽车上面用的多

使用特权

评论回复
12
嵌入小菜菜| | 2020-12-17 20:34 | 只看该作者
感谢楼主分享,感谢,不错的,不错的。

使用特权

评论回复
13
2334566436| | 2020-12-18 14:29 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

223

帖子

4

粉丝