历史上的今天

今天是:2024年11月14日(星期四)

2019年11月14日 | 技术文章—RS-485总线电平异常解决方案解析

发布者:EEWorld资讯 来源: EEWORLD关键字:电平异常  STM32 手机看文章 扫描二维码
随时随地手机看文章

摘要:各位工程师是否会遇到这样的情况,测试单个RS-485设备数据无异常,但设备组网后,就出现通讯数据异常或连接失败等情况。出错的原因是什么?本文将从门限电平为你揭秘RS-485组网异常。

 

RS-485总线是具有结构简单、通信距离远、通信速度高、成本低等优点,广泛应用于工业通讯、电力监控以及仪器仪表等行业。若总线上接有终端电阻,则在总线空闲状态时,RS-485总线AB差分电压可能处于门限电平(±200mV)之内,这时可能会导致通信出错,那么,出错的原因是什么?MCU接收到的数据会发生什么样的变化?

 

1、    数据出错的原因

 

如图 1所示为8位数据位无校验位的UART时序图,当使用UART进行通信时,MCU在检测到起始位后开始接收其后的数据。

 

说明: 无校验位串口协议

 

图 1  无校验位,8位数据位,串口时序图

 

如图 2所示为STM32串口外设检测到起始位的条件,当检测到下降沿(3个高电平+1个低电平)并且采样序列1和采样序列2均为0时,STM32检测到一个起始位。

 

每个位采样16次,采样点的间隔时间为tbit/16,tbit为每个位的时间,例如通信波特率为115.2kbps,则tbit=1/115.2k=8.68us,则采样点的间隔时间为8.68us/16=0.5425us。

 

说明: STM32串口采样序列

 

图 2  STM32串口外设检测到起始位的条件

 

下面以RSM485PCHT的门限电平为例进行说明,当AB差分电压处于±200mV之内时,模块RXD引脚输出状态不确定。

 

当总线变为空闲时,若RXD引脚输出低电平,则可能导致MCU接收到错误数据或MCU在正常数据后误接收1个0x00。

 

说明: 485PCHT单节点应用图

 

图 3  RSM485PCHT门限电平

 

2、    数据发生了什么变化?

 

如图 4所示,收发器1在AB差分电压处于±200mV门限电平之内时输出高电平,收发器2在AB差分电压处于±200mV门限电平之内时输出低电平,可以看出,收发器2可能导致MCU接收到错误的数据,并且在数据后误接收到1个0x00数据。

 

说明: 图4

 

图 4  数据后多0x00

 

如图 5所示,若总线上持续存在数据信号或连续发送多个字节数据,在数据之间存在的空闲状态可能会被收发器2识别为1个起始位,从而导致数据连续错误。

 

说明: 图5

 

图 5  数据连续错误

 

3、    解决方案

 

总线空闲时若AB差分电压处于门限电平之内,则可能导致数据出错,可以使用如下方法避免总线空闲时AB差分电压处于门限电平之内。

 

方案一:在总线组网距离偏长时,为避免因为总线信号反射而导致通讯异常的情况,都会增加终端电阻来解决总线反射问题,但此时总线电平会被拉低,从而增大总线空闲时AB差分电压处于门限电平之内的风险,具体入下图6所示。面对此类应用可使用致远电子RSM(3)485PCHT模块,RS-485接口设计时可通过外置一个较小值的上下拉电阻调节空闲状态时的电压值,使电平处于门限电平外,具体的幅值变化如下图7所示。

 

说明: 1572491404(1)

 

图6  终端电阻对总线电平影响

 

说明: 1572503999(1)

 

图7  RSM(3)485PCHT实物及应用连接图

 

方案二:组网中增加终端电阻后,同样可使用致远电子RSM(3)485ECHT模块,RSM(3)485ECHT具备极高的总线兼容性门限电平为-40mV~-20mV,具体如下图8所示,在总线电平被终端电阻拉低时(最坏情况总线高电平幅值为0V)仍可识别总线电平,保证通讯的稳定性。

 

说明: 1572504115(1)

 

图8  RSM(3)485ECHT实物图及门限电平参数


关键字:电平异常  STM32 引用地址:技术文章—RS-485总线电平异常解决方案解析

上一篇:测试系统开发考虑要点
下一篇:最后一页

推荐阅读

从事机器人开发业务的日本RT公司日前开发出了即使不处于特殊作业环境,也能将炸鸡块等食物装入饭盒的人型机器人。借助头部的摄像头和传感器,机器人能以三维模式识别食物的形状等,然后夹起食物并移动。RT公司预定自11月起在盒饭工厂启动验证试验,力争2020年开始销售。机器人的身高可配合工作台的高度在130-150厘米范围内调整,肩宽为39厘米,可利用头部...
如果要节省单片机IO口,可以用一个按键,通过判断按下的时间来执行不同的子程序,自己闲来无事随意写了个,可能不够精简,但是功能都有,proteus仿真能出来,三种按键时间,短时间按下LED1亮,中等长度时间LED2亮,长时间按下LED3亮,具体按多久,自己稍微体会下就能把握单片机长短按键仿真原理图如下单片机源程序:#include<reg52.h>#include<intrins.h>#...
集微网消息,随着新冠疫情的持续蔓延,很大程度上加速了线上办公模式转移,从而也催化了服务器储存市场规模。根据TrendForce集邦咨询旗下半导体研究处最新调查,在新冠疫情之下,除了智能终端装置的普及间接带动云端需求外,企业数字转型更加速云端服务的渗透率,加上数字经济如社群媒体互动与网络消费模式的黏着度提升,使云端供应商得以汇聚大量消费者数...

史海拾趣

问答坊 | AI 解惑

LCD Scope 40MSPS

网上找到的一个示波器网站 http://www.eosystems.ro/…

查看全部问答∨

有调通过marvell wifi 8686 sdio接口驱动来讨论下???

正在调sdio接口的wifi 8686驱动,sdio确认好的,读写寄存器,加载固件都没问题。有以下问题: 1. 我是直接把驱动放在bsp中编的,wince启动后自动加载wifi驱动, 并且这个wifi驱动会自行搜索热点。我的理解是wifi驱动加载固件启动完wifi芯片注册网络 ...…

查看全部问答∨

protel 99se中,sp232E在哪个库中?

如题。 protel 99se中,SP232E所在的库叫什么?…

查看全部问答∨

看看我的成果

本人长期从事单片机开发应用,积累了一定的经验。本人将毕生研究心得集成了文字,放在我的博客里,希望大家光临指导,并给点意见。我的博客地址;http://blog.mcuol.com/user/Article/500.html…

查看全部问答∨

STM32的FLASH使能和禁止半周期访问对运行有什么区别吗

                                 如题…

查看全部问答∨

f2812AD转换波动很大,不知是什么原因?

用电位器输出一个电压值,从我watch窗口看到的ADCresult值都在变化,变化比较大。如0xabc0,b为都会能差4,帮忙分析一下可能那里设置不对。谢谢!…

查看全部问答∨

LM3S811使用心得之ADC

从参加抢LM3S811的活动后,每天都期待啊,终于在4.26的下午,顺风快递发来信息去取快递,其实已经料到是811到啦,好兴奋的跑到校门口外迎接顺风,领到包裹后,回寝室迫不及待的打开它,没错是811 。用811把我以前的LCD有重新驱动了起来,下面是我这 ...…

查看全部问答∨

对于一段教程的程式觉得有问题!

下面是一段简单的完整通讯程序,实现功能:将接受的数据原样送回。但是觉得南航教程中以下这段程序是不是少了一个子程,就是用于接收PC机发给MSP430的数据,并将接收到的数据放至发送缓存器? #include <msp430x44x.h>void main(void){WDT ...…

查看全部问答∨

ez430-rf2500遇到了问题。。求指点

 想请问你一下 那个ez430-rf2500为什么ed连上电池两个灯还是不闪。。ap的红灯在闪烁。。并且PC上温度只有一个ap温度显示。。就是说ed的没有反应。。好像是没有连接到网络。。后来又折腾了一下。。现在ap的红绿灯都在闪。。但是ed还是没反应。 ...…

查看全部问答∨
小广播
最新测试测量文章
换一换 更多 相关热搜器件
更多往期活动
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved