RS-232、RS422和RS-485均属于UART,是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)。而由于各自使用的电平有所不同,因此由UART转换为RS-232、RS422或RS-485时,需要经过一个SP3232E、SP3485(或则其他转换芯片)。
一、RS-232接口
RS-232是美国电子工业协会EIA制定的一种串行物理接口标准。RS-232一般只使用RXD(2)、TXD(3)、GND(5)三条线。
硬件原理
首先涉及到了电平的变化,UART使用的芯片自身输出的电压;然后由UART的两条信号线 TX和RX转换为RX-232的TX和RX;RX-232接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。传输速率较低,在异步传输时,波特率为20Kbps。接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。RS-232接口可以实现点对点的通信方式,但这种方式不能实现联网功能;于是,为了解决这个问题,一个新的标准RS-485产生了。
二、RS-422和RS485
RS-485的数据信号采用差分传输方式,也称作平衡传输,使用一对双绞线;RS-422的电气性能与RS-485完全一样,主要的区别在于:
RS-422有4根信号线:两根发送、两根接收。由于RS-422的收与发是分开的所以可以同时收和发(全双工),也正因为全双工要求收发要有单独的信道,所以RS-422适用于两个站之间通信,星型网、环网,不可用于总线网。RS-485只有2根信号线,所以只能工作在半双工模式,常用于总线网。
硬件原理
注意:485的两条信号线需要做差分等长。
三、三者性能比较:
1.通信能力:RS-485接口在总线上是允许连接多达128个收发器,用户可以利用单一的RS-485接口方便地建立起设备网络。RS-232只允许一对一通信;RS-422可支持10个节点,RS-485支持32个节点,因此多节点构成网络(网络拓扑一般采用终端匹配的总线型结构,不支持环形或星形网络)。
2.信号线:RS485接口组成的半双工网络,一般只需二根信号线。RS-232口一般只使用RXD、TXD、GND三条线 。
3.电气电平值:RS-485的逻辑”1”以两线间的电压差为+(2-6)V表示;逻辑”0”以两线间的电压差为-(2-6)V表示 。在RS-232-C中任何一条信号线的电压均为负逻辑关系:逻辑”1”,-5- -15V;逻辑”0 ” +5- +15V。
4.传输速率:RS-232传输速率较低,在异步传输时波特率为20Kbps。RS-485的数据最高传输速率为10Mbps 。
5.抗干扰性:RS485接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好。RS232接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰。
RS-485信号
四、RS-485上下拉电阻的选择
1.为什么需要加上下拉电阻?
根据RS-485标准,当485总线差分电压大于+200mV时,485收发器输出高电平;当485总线差分电压小于-200mV时,485收发器输出低电平;当485总线上的电压在-200mV~+200mV时,485收发器可能输出高电平也可能输出低电平,但一般总处于一种电平状态,若485收发器的输出低电平,这对于UART通信来说是一个起始位,此时通信会不正常。当485总线处于开路(485收发器与总线断开)或者空闲状态(485收发器全部处于接收状态,总线没有收发器进行驱动)时,485总线的差分电压基本为0,此时总线就处于一个不确定的状态。同时由于目前485芯片为了提高总线上的节点数,输入阻抗设计的比较高,例如输入阻抗为1/4单位阻抗或者1/8单位阻抗(单位阻抗为12kΩ,1/4单位阻抗为48kΩ),在管脚悬空时容易受到电磁干扰。因此为了防止485总线出现上述情况,通常在485总线上增加上下拉电阻(通常A接上拉电阻,B接下拉电阻)。若使用隔离RS-485收发模块(例如RSM485PCHT),由于模块内部具有上下拉电阻(对于RSM485PCHT,内部上下拉电阻为24kΩ),因此在模块外部一般不需要增加上下拉电阻。
2.什么情况下需要加上下拉电阻?
当遇到信号反射问题时,通常会通过增加匹配电阻来避免信号反射,以1对1通信为例,如图1所示。由于485总线通常使用特性阻抗为120Ω的双绞线,因此在485总线的首尾两端增加120Ω终端电阻来避免信号反射问题。
图1:两个RSM485PCHT模块通信电路
根据RSM485PCHT的具体参数(如表1)可以得到如图2所示等效电路,其中RPU、RPD为模块内部在485总线上加的上下拉电阻,RIN为模块的输入阻抗。
表1 RSM485PCHT参数
图2:RSM485PCHT通信等效示意图
当两个模块都处于接收状态时,可以根据基尔霍夫电流定律对节点A和节点B列出下列公式:
根据上述公式可以计算AB之间的差分电压为
此时模块已处于不确定状态,模块接收器可能输出为高电平,也可能输出为低电平,这时就需要在模块外部增加上下拉电阻保证模块在空闲时不处于不确定状态。
3.上下拉电阻如何取?
假设模块的输出电源电压VO相同,由于RGND接在一起,因此可以认为模块内部的上拉电阻是并联在一起的,为了方便解释,对图2的电路进行整理,如图3所示,在模块外部增加上下拉电阻可以选择只增加一组,也可以选择在每个模块都增加上下拉电阻,为了解释方便,我们在485总线上增加一组上下拉电阻。
图3:RSM485PCHT通信等效电路图
其中:
RPU为模块内部上拉电阻,RPD为模块内部的下拉电阻,本例中为24kΩ;
RIN为模块接收器输入阻抗,本例取最小值为120kΩ;
RT为终端电阻,本例取120Ω;
RPU_EX为模块外部所加的上拉电阻,RPD_EX为模块外部所加的下拉电阻。
由于RSM485PCHT的门限电平为-200mV~+200mV,一般留有100mV或200mV的电压裕量,本例留有100mV的电压裕量。根据前面所推导的差分电压公式,可以得到下面计算公式:
由于RSM485PCHT在供电电压范围为4.75V~5.25V,取VO=4.75V(最低输入电压VCC=4.75V情况下),可得:
由RPU=24kΩ,可得RPU_EX=RPD_EX=461.9Ω,由于计算出的电阻值为最大值,因此可以选择在485总线上仅加一组410Ω或390Ω的上下拉电阻,或者加两组910Ω上下拉电阻。
4.如何验证上下拉电阻取值?
上述计算仅考虑了485总线空闲状态时不处于不确定状态,并没有考虑485收发器的驱动能力和所用元器件的功耗等问题。外部所加上下拉电阻越小,可以将485总线空闲状态差分电压保持的越高,但与此同时,终端电阻和上下拉电阻的功耗也越大,对485收发器的驱动能力要求也越高,当超过485收发器的驱动能力时,也会导致通信失败。
根据RS-485标准,当接收器的输入阻抗为单位阻抗时(最小为12k),总线上最多可以接32个节点,485的差分负载最大为54Ω,此时差分输出电压最小为1.5V。
图4:485总线连接32个节点等效示意图
如图4所示,我们可以看到当485总线上接有32个节点时,总线A或B的共模负载为:
由此可见,对于RS-485的标准来说,A总线或B总线的最大共模负载为375Ω。
图5:485总线增加终端电阻等效示意图
当增加终端电阻后,可以发现485总线的共模负载没有发生变化,但差模负载急剧减小,差模负载为:
因此当485总线的节点数达到最多以及增加终端电阻后,485总线的差模负载仍大于54Ω,根据RS-485的标准,差分输出电压最小为1.5V。
图6:RSM485PCHT 64个节点等效示意图
以RSM485PCHT为例说明增加上下拉电阻的情况,如图 6所示,总线A或B的共模负载为:
实际测试上述情况,驱动输出的最小差分电压3.02V,这个电压远大于RS-485标准规定的最小差分输出电压1.5V。
图7:RSM485PCHT 64个节点增加终端电阻示意图
当在485总线上增加终端电阻时,可以看出总线A或B的共模负载并没有发生变化,而差分阻抗有了较大的变化,此时差模负载为:
计算出的差模负载要略大于RS-485标准规定的最大负载为54Ω;对RSM485PCHT进行实际测试,其输出差分电压1.58V,略大于标准规定的最小电压。
当差模负载为54Ω(485总线接两个120Ω终端电阻并且上拉电阻/下拉电阻与收发器内阻的并联值为270Ω)时,RSM485PCHT的差分输出电压为1.52V(实测值),基本和RS-485标准相同。当差模负载为41.54Ω(485总线接两个120Ω终端电阻并且上拉电阻/下拉电阻与收发器内阻的并联值为135Ω)时,RSM485PCHT的差分输出电压在1.17V左右(实测值),在这种情况下可以通信。
5.总结
1)通信线应选用屏蔽双绞线,屏蔽层应单点接大地;
2)当我们没有遇到信号反射问题时,尽量不要使用终端电阻;
3)如果使用终端电阻,我们可以通过上下拉电阻调节485总线在空闲状态的电压值,保证不处于门限电平(-200mV~+200mV或-200mV~-40mV)范围内;
4)当我们增加上下拉电阻时,上拉电阻(下拉电阻)与收发器输入阻抗的并联值应大于375Ω。
五、串口RS-422的多种设计方法
RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)。RS-422的最大传输距离为4000英尺(约1219米),最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。
RS-422需要终接电阻,要求其阻值约等于传输电缆的特性阻抗。在短距离传输时可不需终接电阻,一般在300米以下不需终接电阻。终接电阻接在传输电缆的最远端。
串口协议:
接口设计:
DB9母头,适配大多数串口线缆
1.MAX3490ESA
The MAX3490 transmit at up to 10Mbps。
2.ADM2582EBRWZ
提供±15KV ESD保护、电源隔离收发器;最大速率16Mbps。
3.AM26LV31EIPWR
最大速率32Mbps。
4.AM26LV32EIPWR
最大速率32Mbps。
5.SIT3491EESD
最大速率12Mbps。
六、二线485与四线422连接
RS422收发器可以作为RS485网络使用,但是RS485收发器不能反过来用于RS422网络。RS422收发器作为RS485使用时需要同时控制两个控制引脚处于相同电平,保证收发器工作在半双工模式。信号连接示意图如下:
MAX3070EESD为一款RS485/RS422转TTL标准的电平转换芯片,RS485通常为二线,RS422为四线;差异在于RS485只有A B两个与外界通讯的引脚,半双工通讯(由/RE,DE两个引脚控制方向);RS422有A B Y Z四个与外界通讯的引脚,全双工通讯,A B负责接收数据,Y Z负责发送数据。RO与CPU的RXD相连,DI与CPU的TXD相连,这两个引脚负责与CPU使用TTL标准通讯。
四线422与二线485连接方法:A Y接485+,B Z接485-,使用/RE与DE控制方向,0为接收,1为发送。
485的接口有两种接法:一种是2线的、一种是4线的。2线的是半双工的,但是可以组成485网络,4线的是全双工的,但是只适用于点对点通讯。具体是用2线的还是4线的,还要看设备的支持。