MCU中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,可不设置)
这里写图片描述
这里写图片描述
之后在发送数据时会自动产生高电平,数据发送完变为电平,变为接收状态。
下图是我在实际使用过程中抓取到波形图。
这里写图片描述

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值