RS-485是一种应用十分广泛的通信协议。其显著特点是信号采用“差分”的方式传输,因此抗干扰能力很强,通信距离也比RS-232远得多。RS-485通信一般是半双工的,仅需要2根信号线,也可以是全双工的,需要4根信号线。

如何解读差分方式传输?

差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的单端信号传输,差分传输在这两根线上都传输信号,这两个信号的振幅相同,相位相反。在这两根线上的传输的信号就是差分信号。信号接收端比较这两个电压的差值(这样获得幅值翻倍的信号)来判断发送端发送的逻辑状态。在电路板上,差分走线必须是等长、等宽、紧密靠近、且在同一层面的两根线。

差分信号与传统的一根信号线一根地线(即单端信号传输)走线的做法相比,其优缺点分别是:

优点:

抗干扰能力强。干扰噪声一般会等值、同时的被加载到两根信号线上,而其差值为0,即,噪声对信号的逻辑意义不产生影响。

能有效抑制电磁干扰(EMI)。由于两根线靠得很近且信号幅值相等,这两根线与地线之间的耦合电磁场的幅值也相等,同时他们的信号极性相反,其电磁场将相互抵消。因此对外界的电磁干扰也小。

时序定位准确。差分信号的接收端是两根线上的信号幅值之差发生正负跳变的点,作为判断逻辑0/1跳变的点的。而普通单端信号以阈值电压作为信号逻辑0/1的跳变点,受阈值电压与信号幅值电压之比的影响较大,不适合低幅度的信号。

RS485收发控制方法

RS485属于半双工总线,在实际使用时一般采用主机轮询或令牌传递的方法来分配总线控制权,RS485设备需要进行发送和接收的方向转换。比较通用的做法是,每个RS485设备在平时均处于接收状态,只有在自己有数据要发送时才转换到发送状态,数据发送完毕后再次切换回接收状态。

第一种:程序换向控制(三线制)

最常用的RS485收发换向方法是程序换向,即由MCU的一个I/O端口控制RS485收发器件的收发使能引脚,在平时使RS485收发器件处于接收状态,当有数据需要发送时,MCU将RS485收发器件引脚置于发送状态,完成数据发送后,再把RS485收发器件切回接收状态。

这种方式简单易行,不需增加额外成本,这种方法很多人都会知道并且基本上都用的方法。

硬件发送完成后最好上报一个发送完成的中断出来,这样便于切换到接收状态(应用层的数据发送完毕了,只代表应用层将数据搬运到硬件数据寄存器了,不代表硬件上也发送出去了,如果没有等待硬件发送完成中断,则可能导致最后一个字节发送失败)。如果硬件没有上报硬件中断的机制,那么就只能靠驱动层根据波特率做延时,否则立即切换到接收状态可能会导致最后一个字节没有被发送。

通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是一个逻辑状态,负电平在-2~-6V,是另一个逻辑状态。另有一个信号地C,在RS-485中还有一“使能”端,使能端是用于控制发送驱动器与传输线的切断与连接。当使能端起作用时,发送驱动器处于高阻状态,称作第三态,即它是有别于逻辑1和0的第三态。

接收器也做与发送端相对的规定,收、发端通过平衡双绞线将AA与BB对应相连,当在接收端AB之间有大于+200mV的电平时,输出正逻辑电平,小于-200mV时,输出负逻辑电平。接收器接收平衡线上的电平范围通过在200mV至6V之间。

TTL是Transistor-Transistor Logic的缩写,逻辑门电路。

第二种:自动换向(两线制)

但是,当我们采用某种硬件平台的工控主板或核心板进行二次开发时,由于工控主板或核心板上没有预留出足够的I/O端口,使得RS485收发的程序换向方法无法实现。在某些特定的情况下,开发平台的底层驱动未对外开放,难以对底层进行二次开发,这种情况下即便有足够的I/O端口也无法实现程序换向。为此,我们需要采用另外一种换向技术,即自动换向技术。自动换向其实就是对使能引脚不需要单独的I/O口来控制,而是由发送引脚发送数据时候顺便控制了。

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

这个图的R46和R47是绝对不可缺的。对于R48,若mcu的RX没有上拉输入功能,这个电阻也是不可以少,终端120欧电阻一般不添加。为什么R46和R47是绝对不可缺的,我们先分析一下它的工作原理;

1,当TX为高电平,RS/DE引脚为低,此时RE有效,此时485A和485B由于上下拉电阻的作用,485A为高,485B为低,485芯片处理发送高电平状态或者处于接收状态;(A高B低,芯片处于发送高电平状态,处于接收状态)

2,当tx为低电平,RS/DE引脚为高,此时DE有效,485处于发送状态,因为DI引脚接地,因此485芯片输出低电平。

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

上拉电阻:就是把口线通过一个电阻拉到正极电压上。一个作用就是保持信号不被干扰,稳定在高电平,也可以起到电压转换,两个不同电压芯片通讯,可以输出高时,通过上拉实现。

在某信号线上,通过电阻与一个固定的高电平VCC相接,使其电压在空闲状态保持在VCC电平,此时电阻被称为上拉电阻。

下拉电阻:就是把口线接一个电阻到负极电压上。将某信号线通过电阻接在固定的低电平GND上,使其空闲状态保持GND电平,此时的电阻被称为下拉电阻。

简单概括为:电源到器件引脚上的电阻叫上拉电阻,作用是平时使该引脚为高电平,地到器件引脚上的电阻叫下拉电阻,作用是平时使该引脚为低电平。低电平在IC内部与GND相连接;高电平在IC内部与超大电阻相连接。上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用,下拉同理。

上拉是对器件注入电流,下拉是输出电流;强弱只是上拉或下拉电阻的阻值不同,没有什么严格区分。

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

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

缺点

  • 通信速度慢

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

  • 驱动能力弱

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

二极管:二极管是最常见的电子元件之一,它最大的特性就是单向导电,也就是电流只可以从二极管的一个方向流过。首先二极管可以做开关元件,二极管在正向电压作用下电阻很小,相当于一只接通的开关,在反向电压作用下电阻很大,如同一只断开的开关,利用二极管的开关特性,可以组成各种电路。

三极管:三极管具有电流放大作用,能以基极电流微小的变化量来控制集电极电流较大的变化量,也用作无触点开关。逻辑取反,如下图所示,使用NPN三极管进行取反,十分方便,输入为高电平时,输出为低;输入为低电平时,输出为高(5V)

总述

总的来说,485芯片处于高电平时为接收状态,处于低电平时为发送状态。三线制的情况下,AB两条线上的信号只表示数据传输。

A高B低表示接收状态,此状态发送的电平差值不是固定的1吗?

三线制和两线制总结

UART与RS485

RS485是半双工通信,不能同时收/发,收/发时需要切换。

A B是两条通信线的接线端,通常标有A+,B-,是指电平的高低,并不是正负电压的意思。

多个RS485设备的A B要对应接上,即A对A,B对B的接。

ttl信号就是电平信号,是指用电平值表示的信号。TTL电平信号规定,+5V等价于逻辑“1”,0V等价于逻辑“0”(采用二进制来表示数据时)。这样的数据通信及电平规定方式,被称做TTL(晶体管-晶体管逻辑电平)信号系统。

DATA+ 就是 A

DATA- 就是 B

RS485就是靠这两根线颠倒电平,来传输和识别数据的。

RS485芯片只是把来自数据源UART的0-3.3V或者0-5V的TTL信号变成颠倒翻转的AB线信号。仅此而已。这样做也是为了更好的驱动线缆和增加信号共模抗干扰能力。

RS485地线的作用

很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的A/B端连接起来,而忽略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患,这有二个原因:

  • 共模干扰问题

RS-485接口采用差分方式传输信号,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了,但人们往往忽视了收发器有一定的共模电压范围,RS485收发器的共模电压范围为-7~+12V,只有满足上述条件,整个网络才能正常工作。当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口。(共模干扰指的是干扰电压在信号线及其回线(一般称为信号地线)上的幅度相同,这里的电压以附近任何一个物体(大地、金属机箱、参考地线板等)为参考电位,干扰电流回路则是在导线与参考物体构成的回路中流动。)

  • EMI问题

发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式放回源端,整个总线就会像一个巨大的天线向外辐射电磁波。

UART与RS485都是异步通信,不需要时钟线,都是异步。同步通信在数据传输过程中,需要一根时钟线同步。

RS232只支持点对点通讯(1:1),不能实现联网通信;RS485支持总线形式通讯(1:N),即可以实现联网通信。

在两个UART之间传输数据只需要两根线。数据从发送UART的Tx引脚流向接收UART的Rx引脚:

而RS485接线是A对A,B对B。

RS485三线制和两线制差别相关推荐

  1. 非平衡电桥电阻计算_热电阻四线制、三线制、两线制的区别

    热电阻工作原理 热电阻的测温原理是基于导体或半导体的电阻值随温度变化而变化这一特性来测量温度及与温度有关的参数.热电阻大都由纯金属材料制成,目前应用最多的是铂和铜,现在已开始采用镍.锰和铑等材料制造热 ...

  2. 二线制和四线制传感器的区别_热电阻四线制、三线制、两线制的区别对比分析...

    热电阻(thermal resistor)是中低温区最常用的一种温度检测器.热电阻测温是基于金属导体的电阻值随温度的增加而增加这一特性来进行温度测量的.它的主要特点是测量精度高,性能稳定.其中铂热电阻 ...

  3. 非平衡电桥电阻计算_什么是RTD热电阻?两线制和三线制RTD有什么不同?

    RTD的英文全称为"Resistance Temperature Detector",因此准确来说,它应该翻译为"电阻温度检测器".RTD是一种特殊的电阻,其阻 ...

  4. 两线怎么接三线插座图_什么是RTD热电阻?两线制和三线制RTD有什么不同?

    RTD的英文全称为"Resistance Temperature Detector",因此准确来说,它应该翻译为"电阻温度检测器".RTD是一种特殊的电阻,其阻 ...

  5. 二线制和四线制传感器的区别_两线制、三线制、四线制传感器的区别和原理

    原标题:两线制.三线制.四线制传感器的区别和原理 两线制.三线制.四线制,是指各种输出为模拟直流电流信号的变送器,其工作原理和结构上的区别,而并非只指变送器的接线形式.否则热电偶配毫伏计测量温度可称为 ...

  6. 【电子电路】PT100 四线制高精度采样原理图和两线制和三线制接线办法

    实际原理图 仿真图 四线制接线说明和两线制三线制接线办法 实际接线说明: A 接原理图P2 1脚 C接原理图P2 2脚 B 接原理图P2 4脚 D 接原理图P2 3脚 工程代码和原理PCB

  7. 浅谈仪表的两线制、三线制、四线制

    一.传感器与变送器的区别 传感器和变送器本是热工仪表的概念.传感器通常由敏感元件和转换元件组成,能够使非电物理量如温度.压力.液位.物料.气体特性等转换成电信号或把物理量如压力.液位等直接送到变送器的 ...

  8. 热电阻的两线制、三线制与四线制接法

    1.两线制接法,如图1所示,r为引线电阻,Rt为Pt电阻,由欧姆定律可得: 当Rr=Rt(电桥平衡)时,Vo=-I2×2r.可见由引线电阻引起的测量误差比较大 图1 2.三线制接法,如图2所示, Vo ...

  9. 二线制和四线制传感器的区别_畅谈两线制、三线制、四线制其工作原理和结构上的区别...

    畅谈两线制.三线制.四线制,是指各种输出为模拟直流电流信号的变送器,其工作原理和结构上的区别,而并非只指变送器的接线形式. 因此最先出现的 是 四线制的变送器:即两根线负责电源的供应,另外两根线负责输 ...

最新文章

  1. 强烈推荐一款Python可视化神器!
  2. 汽车自动泊车APA简介
  3. jquery 子元素过滤器 Child Filters
  4. 如何为网站设置站点图标
  5. JavaWeb(三)——Maven的安装、配置及在IDEA中的使用
  6. 3-间隔插入排序C实现(希尔排序铺垫)
  7. 5_jfoenix_运行jfoenix官方演示,切换片段,部署
  8. vue2.0 点击跳转传参--vue路由跳转传参数
  9. 关联查询数据重复怎么办_在设计数据表的时候,是一个宽表好,还是多个维度表好?...
  10. 在MFC中显示Jpg格式图片的简单实现方法
  11. 伪元素在父元素中居中_web前端Html5开发CSS之元素五大居中方式,实用又简单!...
  12. 计算机网络-自顶向下方法笔记-滑动窗口协议
  13. Outlook-没有自动回复-使用规则创建外出邮件
  14. 南邮——计算机图像学——会动的立方体(变换)
  15. JavaScript中for、for...in、for...of、forEach的区别和用法
  16. oracle字段长度不足位数补零
  17. One-move Checkmate (ZOJ 1598)
  18. Echart饼图-圆形图修改重新绘制
  19. 如何在巨头笼罩下的社区团购中引领新零售突围
  20. 希捷服务器硬盘型号,希捷硬盘有哪些型号?

热门文章

  1. 自定义Android日期选择器
  2. python 读取图像发生自动旋转的原因
  3. 美团Java面试题,java找不到工作要不要先去干别的
  4. keepalive部署--双VIP
  5. Python openjudge练习:015:计算邮资
  6. SQL中怎么创建外键和删除外键
  7. Ubuntu 查看系统资源占用(CPU、内存、网络)
  8. PhotoShop学习心得分享------(三)通道和图层蒙版
  9. Linux 离线安装Ruby和RubyGems环境
  10. 代码规范工具-Checkstyle使用手册