在嵌入式系统中,经常使用UART接口实现通讯、调试日志数据等功能,但UART是一种异步通信协议,并未定义物理层的电气接口标准。
在板件通信时,UART接口之间通常基于IO直接连接进行通信(TTL/CMOS电平标准,3.3V电源系统时,一般认为电平3.3v表示1,电平0v表示0),但对于长距离通信或工业可靠通信场景下,通常使用RS232、RS422、RS485接口进行连接通信。RS232\RS422\RS485本质为RS是一种物理层协议,定义了数据传输过程中的电气标准,基于RS232\RS422\RS485一般传输UART协议,当然也可以走其他各类自定义协议。
RS-232是串行数据接口标准,最初都是由美国电子工业协会(Electronic Industry Association,EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到1219米(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。由于EIA提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,习惯将上述几个标准称为RS232、RS422、RS485。
一、RS232
RS232总线标准设有25条信息线,包括一个主通道和一个辅助通道,在多数情况下主要使用主通道。该标准规定采用一个25个脚的DB-25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。后来IBM的PC机将RS232简化成了DB-9连接器,从而成为事实标准。对于一般双工通信,仅需要几条信号线就可以实现:发送线(TXD)、接收线(RXD)及地线(GND)。
RS-232标准规定了数据传输的速率为50、75、100、150、300、600、1200、2400、4800、9600、19200 bit/s,可以灵活适用于不同速率的设备。另外RS232标准规定,驱动器允许有2500pF的电容负载,通信距离将受此电容限制。
在传送逻辑上面,RS232标准规定逻辑“1”的电平为-5v~-15v,逻辑“0”的电平为+5v~+15V。该电气方式的目的是为了提高抗干扰能力,增大通信距离。RS232的噪声容限为2V,意味着接收器能够识别+3V的的信号作为逻辑“0”,-3V的信号作为逻辑“1”。
但RS232属于单端信号传送,存在共地噪声和不可抑制的共模干扰等问题,因此一般用于20m以内的通信,且随着通信速率上升,通信距离会进一步的缩短。
二、RS422
为了弥补RS232通讯距离短,且不能进行多台设备同时通讯的问题。指定了RS422的电气标准。RS422标准全称为:平衡电压数字接口电路的电气特性。RS422规范定义采用4线(两组双绞线)、全双工、差分传输、多点通信的数据传输接口标准。
对发送端,要求双绞线T-、T+间的电压差在+2~+6V时表示高电平“1”,电压差在-2~-6V时表示低电平0;对接收端,当双绞线R-、R+间的电压差在+200mV时表示高电平“1”,电压差在-200mV时表示低电平0;
RS422比RS232有更强的驱动能力,因此允许在传输线上挂载多个接收节点,最多可解10个节点。即一个主设备多个从设备。主设备可以与从设备进行双向通信,但从机之间不允许互相通信。
相对于RS232,RS422最大传输距离可以到4000英尺(约1219米),最大传输距离为10Mb/s。与RS232传输特性类型,随传输速率增加,传输距离会降低。在100kb/s速率下,才能达到最大传输距离;一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。
RS422总线需要接一终端电阻,要求其阻值约等于传输电缆的特性阻值,接到传输电缆的最远端。在短距离传输时可不接终端电阻(一般指小于300米以下时)。
三、RS485
RS422提升了传输距离和传输速度,但由于需要使用两组双绞线(4根线,R+、R-、T+、T-),布线成本较高,使用越来越少,不少应用场景逐渐使用RS485接口进行代替。
于RS422类似,RS485使用半双工、差分传输的方式,并且仅使用1组双绞线,使用请求/响应的方式实现主机与设备之间的通讯,在任一时刻只能有一点处于发送状态(因此发送电路需要有使能信息控制,通常RS485芯片会支持实现该功能)。对发送端,RS485双绞线AB之间的电压差在+2~+6V时表示高电平“1”(B > A),电压差在-2~-6V时表示低电平0(B < A);对接收端,当双绞线AB间的电压差在+200mV时表示高电平“1”(B > A),电压差在-200mV时表示低电平0(B < A)。
RS485和RS422一样,最大传输距离为4000英尺(约1219米),最大传输速率为10Mb/s。RS-485需要2个终接电阻,其阻值要求等于传输电缆的特性阻抗。在矩距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。终接电阻接在传输总线的两端。
基于RS485的特性,用于多点互连时非常方便:基于双绞线就可以构建通信网络。应用RS485可以联网构成分布式系统,基本RS485驱动芯片特性,一般最少允许并联32台驱动器和32台接收器。
附:DB9接口
作为串行通信的默认接口,DB9接口常用于RS232信号通信,也支持RS422、RS485信号的通信。