打印
[APM32E0]

学习RS485驱动自动切换特性

[复制链接]
57|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
之前发了个帖子,今天上来看到好多热心 坛友做了回复。有些建议非常好!比如今天就学习了APM32E030的RS485方向控制引脚硬件自动切换功能特性。

在RS485通讯实验上,使用MCU的Uart外设,配上RS485收发芯片(如MAX485),以实现差分信号通讯传输数据,以有效抑制共模干扰带来的噪声,保证通讯数据传输正确性。为什么会有方向控制引脚?因为RS485通讯属于半双工通讯模式,即同一时刻只能接收或发送。

常见的RS485的典型电路图如下所示:



从上面的典型电路图可以看出有一个GPIO为方向控制引脚Uart_CON。其控制RS485的收发方向。在控制方向时,

1. 如果过早切换为发送模式,则接收数据将无法全部接收 。
2. 如果过早切换为接收模式,则发送数据将无法全部发送。

我上一个帖子遇到的问题就是过早切换为接收模式,导致发送的最后一个字节发送失败。这个就是我软件操作Uart_CON这个GPIO时出现的时机问题。我的解决方式是在发送完成后,再延时1ms,再切换为接收模式即可解决。

以上是我的软件控制方向引脚,但在极海APM32E030中,Uart外设集成了RS485方向控制引脚的硬件控制。这样,RS485的方向控制引脚将转由APM32E030控制,不再需要软件来操作GPIO。一方面,不再需要我们手动操作RS485的方向切换;另一方面,由硬件控制后,系统的整体性能和鲁棒性也极大提高。

这里还有另外两个寄存器也需要配置一下,USART_CTR1中的DDLEN[4:0]和DLTEN[4:0]。



DDLTEN[4:0]=16,代表一个字节的间隔。

这样,硬件将为我们在发送完成TXDATA之后的一个字节再将RS485方向控制引脚拉高,以保证发送完整。

简单说,简单了!功能交由硬件控制,软件只需要关心通讯协议了。

使用特权

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

本版积分规则

3

主题

15

帖子

0

粉丝