速看:一文读懂RS-232、RS-422及RS-485串行数据标准的选择及使用
标准的奇妙之处在于有如此之多的选择,这同样也适用于电气接口标准。随着不同行业内串行数据标准的独立发展,我们拥有的标准从未如此之多。
【资料图】
PC和电信应用领域最成功的串行数据标准可能就是RS-232。相类似,RS-485和RS-422也在工业应用领域最成功的标准之列。这些标准并不直接兼容。然而,对于控制和仪器仪表应用,往往必须在不同标准之间进行通信。本文讨论不同的标准(物理层指标),介绍如何将一种标准转换为另一种标准,并演示如何在相同应用中组合不同的标准。
RS-232链路最初用于支持IBM PC上的调制解调器和打印机应用。然而,该标准现在支持各种外设与PC通信。RS-232标准定义为单端标准,用于以较低波特率(<20kbps)提高串行通信距离。多年以来,该标准几经变化,以支持较快的驱动器,例如MAX3225E,该器件能提供1Mbps数据传输速率。为了兼容RS-232,MAX3225E等收发器必须满足表1所列的电气指标。从典型连接(图1)可看出,利用硬件握手来控制数据流。
表 1. RS-232标准的主要电气指标汇总
图1. 典型的RS-232连接。
典型RS-232信号(图2,CH1)的摆动范围为正和负。注意左侧坐标轴上0V踪迹标记的相对位置。尽管RS-232数据为反相,从TTL/CMOS到RS-232然后再返回至TTL/CMOS的转换恢复了数据的原始极性。RS-232的典型传输距离很少超过100英尺。原因有两个:首先,发送电平(±5V)和接收电平(±3V)之差只允许有2V的共模抑制;第二,较长电缆的分布电容可能超过规定的最大负载(2500pF),从而降低摆率。由于RS-232被设计为点对点接口,并非多节点接口,所以其驱动器的指标为3kΩ至7kΩ单负载。因此,多节点接口应用通常采用菊链的连接方法(图3)。
在菊链配置中,RS-232信号经过第一个接收器,并环回至发送器。对数据发送线中之后的器件重复该配置。该项技术的主要问题是电缆断裂。如果从机1和从机2之间发生断裂,妨碍所有下行器件发送或接收数据。另一种多节点RS-232技术涉及到预缓冲或RS-232输出升压驱动(使其驱动多个并联的5kΩ输入)。
为避免菊链网络相关的问题,ADI开发了MAX3322E/MAX3323E,专门设计用于多节点应用。这些独特的器件采用了5kΩ逻辑开关输入电阻。器件未被选中时,其输入电阻保持为高阻态,允许与共用总线上的其它器件继续通信。
另一种解决菊链网络问题的方案是将RS-232 Rx和Tx信号转换为RS-422信号(见表2)。RS-422为差分标准,允许传输距离长得多。RS-422较高的输入阻抗,与其较高驱动能力相结合,允许连接多达10个节点(图4)。RS-422的另一种优势是独立的发送和接收通路,无需方向控制。可以利用软件(XON/OFF握手)或硬件(一组独立的双绞线)实现器件之间必要的握手。MAX3162提供了RS-232和RS-422之间进行信号转换的经济途径。更多信息请参见下文的RS-232/RS-485协议转换器部分。
RS-422和RS-485收发器往往容易混淆,往往将其中一个当做另一个的全双工版本。然而,其共模范围及接收器输入电阻方面的电气差异使得这些标准适合于不同的应用。由于RS-485满足所有的RS-422规范(表3),RS-485驱动器可用于RS-422应用。然而,相反则不成立。RS-485驱动器的共模输出为-7V至+12V,而RS-422的共模范围仅为±3V。RS-422驱动器的最小接收器输入电阻为4kΩ,而RS-485驱动器则为12kΩ。
为降低接线费用以及达到较长的线长,RS-485收发器已经成为销售终端、工业及电信应用领域广泛采用的标准。RS-485较宽的共模范围也支持较长的线长和较高的每节点输入电阻,允许总线上连接较多的节点(图5)。
图5. 与RS-422相比,RS-485连接较高的输入阻抗和较宽的共模范围,支持较长的线长。
差分RS-485传输(图6)在双绞线电缆的每一根线上产生相反的电流和磁场,交叉抵消每根线周围的反向磁场,从而将辐射电磁干扰(EMI)降至最小。为了在较长电缆或较高数据率下进行传输,电缆作为传输线,并应利用电缆的特征阻抗进行端接。RS-485连接的这个方面容易引起混淆。传输线需要端接吗?如果需要,应如何端接?如果设计者不是最终用户,这些问题应该留给安装方来解决吗?对于大多数RS-485收发器,数据资料标出了电缆作为传输线时不端接和简单点对点端接之间的简单选择(图7)。A-B端子之间的端接电阻是无害的。默认情况下,应该在总线上最后一个收发器处对传输进行端接。
图6. RS-485线上的反极性信号交叉抵消了彼此的磁场,从而将EMI降至最小。以上示波器截屏上的GND基准经过搬移(偏移),清晰显示RS-485输出信号的相反极性。
图7. 传输线端接电阻的选择取决于具体应用。
确定是否需要端接电阻仅仅是实现RS-485系统时面临的问题之一。正常情况下,如果A比B大+200mV或更多,RS-485接收器输出为“1”;如果B比A大200mV或更多,收发器输出为“0”。在半双工RS-485网络中,主机收发器在向从机发送消息后,将总线置于三态。所以,如果没有信号驱动总线,接收器输出状态则无定义,因为A和B之差趋向于0V。如果接收器输出RO为“0”,从机将其解释为新的开始位,并尝试读取随后的字节。由于不会发生停止位,所以结果就是成帧错误。总线变为无主,网络停顿。
MAX3162为一款很独特的器件,包括RS-232和RS-485接收器和发送器。宽范围通信器件包含在单片IC中,支持在RS-232和RS-485信号之间双向独立转换。图8所示的电路中,MAX3162配置为在点对点应用中双向转换RS-232和RS-485信号。
图9所示为MAX3162配置为RS-232/RS-485多节点协议转换器。转换方向由RTS信号R1IN控制。单端RS-232接收器输入信号转换为差分RS-485发送器输出;类似地,差分RS-485接收器输入信号转换为单端RS-232发送器输出。R2IN上接收的RS-232数据在Z和Y上作为RS-485信号发送;A和B上接收的RS-485信号在T1OUT上作为RS-232信号发送。
RTS线为共用线,用于控制转换RS-232和RS-485的电路总线方向。该线在RS-232端口上控制RS-485收发器作为发送器还是接收器(图9)。注意,系统不确定UART发送缓冲器中的数据字节是否已发送,除非系统监测RS-485驱动器的输入DI。也就是说,系统必须允许固定延时或主动监测DI输入,然后再使用DE输入来改变总线方向。
其它方向控制技术包括使用微控制器以及利用数据驱动DE输入,同时轮询A-B线电压差(利用上拉电阻将A连接至5V,利用下拉电阻将B连接至地)。这些电阻的值随电缆电容变化,但典型值为1kΩ。