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,可不设置)


之后在发送数据时会自动产生高电平,数据发送完变为电平,变为接收状态。
下图是我在实际使用过程中抓取到波形图。

MCU中RS485接口设计相关推荐

  1. RS485接口电磁兼容设计方案

    概述 RS485接口组成半双工网络,采用平衡驱动器和差分接收器的组合方式,使用屏蔽双绞线传输,抗共模干扰能力强.RS485的电气特性:两线之间的电压差为+(2V---6V) 表示逻辑"1&q ...

  2. 工业接口RS-485的设计应用指南

    作为上世纪80年代早期批准的一个平衡传输标准,RS-485似乎已成为工业界永不过时的接口标准.关于它的文献有很多,但对于很少接触接口设计的系统工程师而言,如此海量的文献就有些让人吃不消了. 本文旨在讨 ...

  3. linux嵌入式 控制io口,基于ARM9嵌入式的RS485总线接口设计,自动控制IO口实现通信方向控制...

    描述 随着ARM处理器应用的范围的不断深入,根据需求的不同ARM提供的外设也越来越丰富,常用的通信接口有RS232.RS485.CAN.以太网等.RS485总线凭其传输距离远.抗干扰能力强.价格低廉等 ...

  4. C# API中的模型和它们的接口设计

    \ 关键要点 \\ 可变模型应该具备自我验证的能力,并实现验证接口.\\t 在共享对象时(特别是在跨线程共享时),考虑使用不可变模型.\\t 考虑支持MVVM风格UI的单层和多层撤消.\\t 在实现属 ...

  5. PHP/TP5 接口设计中异常处理

    PHP提供 Exception 类来处理异常 new Exception('错误信息(默认为空)','错误代码(默认0)','异常链中前一个异常') 然后可以通过 e -> getMessage ...

  6. 【RESTful风格】软件接口设计中RESTful风格

    REST = Representational State Transfer 表述性状态转移,是一种软甲接口设计风格.总之就是一种风格 REST基于:HTTP.HTML.JSON.XML.URI 这些 ...

  7. JAVA设计一个电视机类_漫谈Java程序设计中的接口应用

    Java语言提供了一种接口(interface)机制.这种接口机制使Java的面向对象编程变得更加灵活.我们可以用接口来定义一个类的表现形式,但接口不能包含任何实现.在<Thinking in ...

  8. 接口设计中,如何封装对json格式的数据签名

    目录 一.背景介绍 二.遇到的问题 三.解决方案 1.设计一个HttpServletRequestWrapper 2.设计一个filter 四.其他辅助设计 1.定义一个注解 2.定义一个拦截器 一. ...

  9. 微型计算机控制系统设计方法,第3章 机电一体化中微型计算机控制系统及接口设计...

    第三章机电一体化中微型计算机控制系统及接口设计 1.微型计算机控制系统的设计主要是解决选用微机.设计接口.选用控制形式和动作控制方式的问题. 2.在微型计算机控制系统的设计中,首先会遇到的问题是:(1 ...

  10. 软件接口设计中的版本兼容问题处理

     最近在项目中经常遇到软件版本升级后不兼容旧版本的问题,本文根据以往经验,从软件接口设计.实现等方面整理了一些兼容性设计思路. 1. 优化设计 1)接口返回值的定义 有的人喜欢用0.1等较小的数字标 ...

最新文章

  1. python 将数组中部分转入新数组_python – 如何将掩码从一个数组应用到另一个数组?...
  2. 大数据实战项目之海量人脸特征检索解决方案演进
  3. 写日历的一些总结(二)
  4. 中怎么构建ebug模式_自动挡中的“手自一体”,该怎么用?多少人把手动模式当成摆设?...
  5. C++ static_cast dynamic_cast const_cast reinterpret_cast使用总结
  6. 动荡之秋,谁能用 AI 制衡全球
  7. java优先级 六级和七级_百度知道六级和七级得区别是什么?如何升到七级?
  8. ios- 音乐播放器(1)
  9. 吾爱破解python百度文库下载源码_python版百度音乐下载软件和源码
  10. 简单又好用得高效工具分享
  11. 瑞幸突击2018,一场互联网向咖啡发起的进攻 | 一点财经
  12. 大数据相关资料论文小结
  13. 中秋节快到了,一起用MATLAB绘制一款2.5D月饼叭
  14. 五年磨一剑,灵雀云的蜕变
  15. 6种优秀的浏览器兼容性测试工具
  16. questasim的傻瓜式安装与仿真教程
  17. linux系统的界面是什么样的,Linux系统是什么样子的
  18. 京东华为P20手机评论数据抓取
  19. java如何使用live2d_使用live2d web驱动(网页看板娘)
  20. WPF使用第三方的字体(TTF文件)

热门文章

  1. BusHound详解
  2. MovieLens推荐系统数据集官方文档+解释
  3. 前端H5面试题CSS:如何解决 margin“塌陷”?
  4. 产品读书《产品经理面试攻略》
  5. PHP: ThinkPHP获取客户端IP地址
  6. 3D打印Gcode文件命令详解
  7. 易鲸捷数据库常用优化方法
  8. 斐波那契堆(Fibonacci heap)原理详解
  9. 爆炸性环境电气设计选型
  10. 唐诗赏析html网页制作,【毕业论文】古诗词鉴赏网站的设计与实现.doc