打印
[学习笔记]

7801x UART2 实现LIN通信方案简单介绍

[复制链接]
1144|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在汽车电子领域,LIN是一个不可缺少的总线。由于其实现成本极低,在通信速度低的场合大量使用,比如组合开关、控制面板、电动座椅、后视镜以及光线雨量传感器等等。
可能是因为LIN-BUS数量问题,或者其他想省money的想法,不得不在UART2上实现LIN通信时,你会去查找AC7801x的参考手册,你会发现,what !! UART2不支持LIN。
好了,该想想办法解决了,毕竟软件的功力可以弥补硬件上的短处呀。大家都清楚,LIN通信是基于UART, 在UART的基础上增加了一个Break信号的发送(LIN主机)与检测(LIN丛机)。UART2就是缺少了硬件发送Break与检测Break信号。但是在7801X上,还是有很多种方案可以解决break信号的发送与检测,从而实现LIN通信。

UART2发送Break信号思路:
将UART2_TX引脚切换为GPIO,把引脚拉低,启动13bit break信号时长定时器,待定时结束后将UART2_TX引脚拉高,并将UART2_TX引脚设置为UART的TX功能。
shuiyi
UART2检测Break信号思路:
检测UART2_RX引脚每个低电平的时间宽度,只要宽度在10-20bit之间,就认为是接收到break。
在这里原谅作者的无知,将break信号认为是10-20bit,因为LIN规范中没有看到break宽度的上限,在此先认为20先。

BREAK信号的发送与检测,都使用到了定时器。所以目前可实现的方案有三:
一、UART2模块+PWM捕获+1个捕获引脚。
将UART2_RX链接至PWM的捕获引脚上。发送时使用PWM定时发送Break信号,接收时使用PWM检测RX引脚上的低电平信号宽度。
二、UART2模块+PWDT脉宽检测+1个PWDT监测引脚。
将UART2_RX链接至PWDT检测引脚上。发送时使用PWDT定时发送Break信号,接收时使用PWDT检测RX引脚上的低电平信号宽度。
三、UART2模块+PWDT脉宽检测+CTU模块。
将UART2_RX通过CTU模块内联至PWDT。发送时使用PWDT定时发送Break信号,接收时使用PWDT检测RX引脚上的低电平信号宽度。

三种方案各有自己的优缺点,大家可以根据自己的外设使用情况选择适合自己的方案。


使用特权

评论回复

相关帖子

沙发
GrootBrain|  楼主 | 2020-11-27 11:46 | 只看该作者
CTU可以将UART2的RX引脚内联至PWDT模块

1606448675(1).png (79.86 KB )

1606448675(1).png

使用特权

评论回复
板凳
梅花香自123| | 2020-11-27 12:12 | 只看该作者
不错,成本较低。

使用特权

评论回复
地板
梅花香自123| | 2020-11-27 12:23 | 只看该作者
汽车电子

使用特权

评论回复
5
JasonLee27| | 2020-12-1 09:46 | 只看该作者
GrootBrain 发表于 2020-11-27 11:46
CTU可以将UART2的RX引脚内联至PWDT模块

这个方案可以,也不需要频繁的配置硬件,就是通信过程中PWDT会一直捕获产生中断,如果PWDT可以有个阈值中断就更好了

使用特权

评论回复
6
yangxiaor520| | 2020-12-2 07:17 | 只看该作者
LIN通信现在很少用了吧

使用特权

评论回复
7
天意无罪| | 2020-12-2 08:18 | 只看该作者
LIN通信,貌似现在也就汽车电子还会涉及到,其它地方很少看见它的身影了。

使用特权

评论回复
8
GrootBrain|  楼主 | 2020-12-2 08:48 | 只看该作者
天意无罪 发表于 2020-12-2 08:18
LIN通信,貌似现在也就汽车电子还会涉及到,其它地方很少看见它的身影了。 ...

在汽车电子领域,成本低,抗干扰也好,还有一席之地。在其他领域,20kbps的通信速率,那也太低了。

使用特权

评论回复
9
里面有晴雨| | 2020-12-3 09:46 | 只看该作者
学习了,不错的知识贴。

使用特权

评论回复
10
zhengshuai888| | 2020-12-7 22:59 | 只看该作者
学习下,感谢楼主分享使用经验。

使用特权

评论回复
11
嵌入小菜菜| | 2020-12-8 22:07 | 只看该作者
很棒的分享和讲解。

使用特权

评论回复
12
yangxiaor520| | 2020-12-9 08:30 | 只看该作者
LINE和CAN有什么区别?

使用特权

评论回复
13
zhouyong77| | 2020-12-9 21:01 | 只看该作者
LIN还真没用过

使用特权

评论回复
14
名字是啥样| | 2020-12-12 17:12 | 只看该作者
感谢分享,不错的知识贴,感谢。

使用特权

评论回复
15
fuqinyyy| | 2020-12-14 07:30 | 只看该作者
LIN现在也用得少了吧

使用特权

评论回复
16
GrootBrain|  楼主 | 2020-12-14 17:31 | 只看该作者
yangxiaor520 发表于 2020-12-9 08:30
LINE和CAN有什么区别?

从成本看,LIN的成本更低。因为LIN是基于串口发展过来的,有串口就可以通信,而且LIN的收发器非常便宜,甚至可以用独立器件完成收发器的功能。而带CAN的MCU和CAN收发器成本都比较高。
从通信速率来看,LIN的通信速率只能达到20kbps,而CAN20.B通信速率能达到1Mbps, CAN-FD更是能达到5Mbps(受收发器影响)。
从主从结构看,LIN模块是主从结构,所有通信必须由主机发起。而CAN没有主从之分,哪个节点都可以往外发送数据,接收总线上的数据。
从信号上看,LIN是12V的高低电平信号,而CAN是差分电平,有更强的容错能力,较好的EMC。同时CAN有强大的容错机制,可以保证CAN数据成功发送。

使用特权

评论回复
17
GrootBrain|  楼主 | 2020-12-14 17:33 | 只看该作者
fuqinyyy 发表于 2020-12-14 07:30
LIN现在也用得少了吧

在汽车里边,还有不少。比如光线雨量传感器、电动座椅、电动后视镜、组合开关等。

使用特权

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

本版积分规则

17

主题

92

帖子

2

粉丝