MCU中RS485接口设计

举报
TopSemic嵌入式 发表于 2021/10/20 00:17:12 2021/10/20
【摘要】 RS485接口具有抗干扰性强,适合长距离传输和多站点通讯等特点,因此在工业控制中被普遍使用。MCU只有UART接口,如果需要使用RS485通讯,需要外面加一个Transceiver。由于RS485工作在半...

RS485接口具有抗干扰性强,适合长距离传输和多站点通讯等特点,因此在工业控制中被普遍使用。MCU只有UART接口,如果需要使用RS485通讯,需要外面加一个Transceiver。由于RS485工作在半双工模式,因此发送和接收的方向切换是设计过程中的一个重要问题。通常的接口电路有以下三种:
1)第一种方式是将MCU的UART TXD端通过控制三极管进行信号反转,然后接到Transceiver的输出使能端DE和接收使能端RE,并将Transceiver的A端接上拉电阻,B端接下拉电阻。电路图如下图所示:
这里写图片描述
该电路的控制原理是:默认情况下UART TXD为1,这时Transceiver的输出使能端DE和接收使能端RE为0,Transceiver工作在接收状态。当UART有信号输出时,TXD 首先会有一个低电平产生(起始位),这时Transceiver的输出使能端DE和接收使能端RE为1,Transceiver切换到发送状态,这时会把这个低电平发送出去。看到这里你肯定会有一个疑问,当发送的数据位为高电平时该如何发送出去呢?
由Transceiver的发送真值表可以看出,在发送过程如果DE变为0,那么输出时高阻态,因为这里在A、B端加了上拉和下拉电阻,所以这时输出为高电平。
这里写图片描述
该设计使得RS-485芯片的方向切换不需要在软件里做任何处理,减轻了软件调试的工作量,不过在硬件上需要在A、B端加上拉和下拉电阻。
2) 另外一种更常用的方式是通过MCU的GPIO去控制DE和RE
这里写图片描述
这种方法需要在软件中去控制GPIO的高低电平变化。当需要发送时控制GPIO为高电平,当需要接收时控制GPIO为低电平。
3)还有一种比较好的方法是通过UART的RTS引脚来控制DE和RE,当然这种方法的前提是MCU 的UART硬件流控功能才可以。Cortex-M4内核Kinetis MCU才具有。
这里写图片描述
这种方法的好处是在使用UART进行数据发送时它会自动产生流控信号。
在使用这个功能时在初始化时将UARTx_MODEM的TXRTSE设置为1,
TXRTSE置位0(默认就是0,可不设置)
这里写图片描述
这里写图片描述
之后在发送数据时会自动产生高电平,数据发送完变为电平,变为接收状态。
下图是我在实际使用过程中抓取到波形图。
这里写图片描述

文章来源: blog.csdn.net,作者:TopSemic嵌入式,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/wangwenxue1989/article/details/45050315

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。