自动收发串口转RS485设计注意事项

文章目录

  • 自动收发串口转RS485设计注意事项
    • 1. 传统的串口转RS485设计
    • 2. 自动收发串口转RS485设计
    • 3. 自动收发串口转RS485设计优缺点

1. 传统的串口转RS485设计

传统的485应用电路如下所示(懒得画了,找个现成的,此图截取自安富莱电子),RS#、DE分别是控制接收和发送,具体来说

RE#: 0接收使能,1接收禁止;

DE: 1发送使能,0发送禁止;

RS#、DE是反向逻辑,因此我们常将RS#、DE连在一起,当MCU要发送数据的时候,就将RS#/DE引脚拉高,当MCU发送完成后,就将引脚拉低,来等待外部485数据。

对于上图的R2和R4,我们一般都是要焊接的,R3一般用于远距离或抗干扰,平时的时候一般会选择120欧姆,或者不焊接。

这种设计的优势:这是485芯片厂商推荐的电路画法,稳定可靠,不需要增加硬件成本,且RS485的驱动能力比较高。

缺点:MCU除了提供RX、TX引脚外,还需要提供一个GPIO引脚,用于控制接收和发送,增加了编程的控制RS#、DE环节考量。

2. 自动收发串口转RS485设计

正是因为传统的串口转RS485设计增加了一个GPIO的消耗,因此网上有了一个取巧的设计,设计图如下:

这个图的R46和R47是绝对不可缺的。对于R48,若mcu的RX没有上拉输入功能,那这个电阻也是不可以少,终端120欧电阻一般不添加

为什么R46和R47是绝对不可缺的,我们先分析一下它的工作原理:

  1. 当tx为高电平,RS#/DE引脚为低,此时RE#有效,此时485A和485B由于上下拉电阻的作用,485A为高,485B为低,485芯片处于发送高电平状态或者处于接收状态。
  2. 当tx为低电平,RS#/DE引脚为高,此时DE有效,485芯片处于发送状态,因为DI引脚接地,因此485芯片输出低电平。

现在会发现,当tx为高的时候,485输出电平是由485的AB相的上下拉电阻来完成的,串口的收发恰好可以和485的高低电平对应上,因此这个自动收发串口转RS485设计是可以使用的。

为什么说RX的上拉电阻R48不可缺少,公司曾将设计过这样一个电路,如下:

在描述一下这个电路板,这个rx和tx在pcb上的走线大约10厘米左右,应该对数据的传输也有些影响,但我认为距离不是主要因素,设计才是主要原因。

这个uart_rx没有接上拉电阻,当我用示波器分别触碰tx和rx的测试点,然后mcu发送数据,tx线电平如下:

发现很正常,也很规整,完全没有问题,但是当tx发送数据的同时,rx测试点竟然也有了电平变化,如下图:

这将导致我mcu发数据的时候会同时收到数据,有的时候收到的和发送的一致,有的时候是乱码。

经过分析,我发现了问题,后来我在mcu配置的时候,将RX的GPIO配置成了上拉输入,后再测试,rx测试点波形如下:

发现还是有电平变化,但是很窄,因此也不会被串口误识别有输入,串口输入误判问题得到解决。

因此对于自动收发型电路,rx引脚的上拉电阻很重要,不可缺少,当然若MCU的rx支持上拉,这个电阻也可以忽略。

同时这个也进一步证明了这种自动收发型的RS485设计不适合高速的串口通信,同时抗干扰能力也比传统的差,至于是不是和你的项目需要自己去验证。

3. 自动收发串口转RS485设计优缺点

优点:最主要是节省IO,同时还捎带的降低了程序编写的工作量。

缺点:

  1. 通信速度慢:

    三极管有电容效应,导致关断时间较长,导致RS#/DE从低到高电平变化出现比较大的斜坡.同时485输出高电平,是依靠上下拉来完成的,会导致上升沿不够迅速,因此上下拉的阻值选择也是影响速度的关键。

  2. 驱动能力弱:

    由于当tx为高,485电平是由其上拉电阻完成的,因此弱提高驱动能力,就要减小电阻,由于485芯片驱动能力有限,电阻太小会导致tx为低的时候,485芯片无法将485总线拉低,因此总线上所有上拉电阻的并联值不应该小于375欧。还用当接入120欧的终端电阻的时候,AB两相的电压差由终端电阻和上下拉分压得到,会导致AB两相的电压差变小,因此自动收发串口转RS485设计不太适合添加终端电阻。

串口转RS485:自动收发串口转RS485设计注意事项相关推荐

  1. linux485串口发送状态,RS485自动方向切换模式

    RS485通信的时候,再应用程序中,可以进行对485设置为自动方向切换模式.防止由于我们手动切换引脚时,存在的时间问题,因为我们手动切换的时候,每次写串口的时候,都要将引脚拉高或拉低来切换成写模式,调 ...

  2. TTL转RS485电路(自动收发)---分享原理图及参考资料

    RS485串口经常用到,本文分享下RS485协议方面基本点,并介绍一种简单的串口TTL(3.3V)电平转换为RS485电平的电路,这个电路是经过制板验证过的. 先简单介绍下RS485一些协议方面的基本 ...

  3. 串口助手-简易串口助手-带时间戳的串口助手-极简串口助手-V1.5 自动保存配置参数 能显示收发时间方便调试

    1.串口助手 2.带时间戳的串口助手,每次收发指令带上了时间戳,方便调试 3.极简串口助手 4.简单易用 高速稳定 5.每次修改的参数都能自动保存,免去了重复配置的工作 软件下载地址:https:// ...

  4. Modbus RS485 设备的串口调试

    Modbus RS485 设备的串口调试 准备 Modbus功能码 二.使用步骤 1.接线 2.串口调试 温湿度的计算 准备 硬件设备: 电脑 RS485 温湿度传感器 RS485 土壤温湿度传感器 ...

  5. rs485转rs232串口转换器常见的故障剖析

    在实际应用中,rs485串口.rs232串口可能会用于同一个传输线路上,但这两个接口的电气特性不一致,数据不能从这两个串口中相互传输或是rs232串口功能不足需要额外用到rs485串口,这两种情况都可 ...

  6. 鸣志驱动器与研华工控机RS485/422 com串口接线方法

    鸣志驱动器与研华工控机RS485/422 com串口接线方法

  7. 搭建机器人电控系统——通信协议——串口通信USART/UART、RS232、RS485及其实例

    通信协议 串口通信详解 IIC通信详解 SPI通信详解 CAN通信详解 文章目录 通信协议 什么是串口? 串口分类 USART/UART.RS232.RS485的区别 串口协议原理 传输协议 需要定义 ...

  8. STM32F407+Cubemx学习应用[4]——DMA收发ModbusRS485数据——RS485温度传感器

    STM32F407+Cubemx学习&应用[4]--DMA收发ModbusRS485数据--RS485温度传感器 硬件 串口参数 Cubemx配置工程 Keil中代码 测试 本<STM3 ...

  9. Qt实现串口通信(C++实现串口通信小助手)---串口收发及串口数据解码、串口通信模拟器。

    Qt实现串口通信示例 前言:以下串口通信示例,参考了现有网上前辈们的资源,最后结合部分个人的思想,所以下述博客会将实现的原理及代码的案例进行公开. 这里我们先上效果图: 一.串口通信简介 串口通信是上 ...

最新文章

  1. 用PaddlePaddle打比赛!
  2. Exception from HRESULT: 0x800736B1
  3. c语言程序朴素贝叶斯分类器,生成式学习算法(四)之----朴素贝叶斯分类器
  4. ap6212 Linux 蓝牙,替代正基AP6212、AP6330的SDIO WiFi+UART蓝牙组合
  5. 校验输入的两次密码是否一致的问题
  6. 如何在不同开发语言中使用绑定变量_linux C/C++服务器后台开发面试题总结(编程语言篇)...
  7. python字符串join和+_Python字符串通过'+'和join函数拼接新字符串的性能测试比较
  8. 粤嵌GE6818实现识别触摸坐标的识别
  9. 别等找工作时才明白:程序员只会敲代码是不行的!不看后悔!
  10. 关于Ip地址分配规则(IPV4)
  11. 计算机管理创建新用户,win7系统添加新用户名的方法和win7系统计算机管理中没有本地用户和组的解决方法...
  12. [置顶]       jBPM4工作流开发实战 之 第二部分 jBPM4开发入门
  13. python爬虫淘宝视频_python爬虫视频教程:一篇文章教会你用Python爬取淘宝评论数据...
  14. win下编译TNN安卓库(静态或者动态) + android studio ndk调用
  15. mac系统 环境变量配置
  16. Node.js meitulu图片批量下载爬虫1.06版
  17. java两个字符串的重复率检查
  18. 高效上网教程---如何下载音乐素材
  19. VerilogHDL正弦信号发生器
  20. centos大小写混乱问题

热门文章

  1. 分布式系统为什么需要 Tracing?
  2. django开发一个管理系统基于Python实现的酒店住房管理系统
  3. python中bind的用法_Python socket.bind方法代码示例
  4. 511遇见易语言计次循环首九九乘法表
  5. 标签上的 title属性与 alt属性的区别
  6. 值班c语言程序,c语言编程,实验楼值班排班系统。
  7. 上位机开发——数据库系列问题一网打尽
  8. QCustomPlot绘图并设置游标,双游标
  9. Android开发——进程间通信之AIDL(一)
  10. 分级渲染--百度地图路段红黄绿功能