嵌入式 MCGS 串口通信快速入门及编程实例
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3 串行通信接口标准

在数据通信、计算机网络以及分布式工业控制系统中,经常采用串行通信来交换数据和信息。串行通信接口标准经过长期使用和发展,已经形成几种成熟的标准和规范,如EIA RS-232C、RS-422A、EIA RS-423A和EIA RS-485。

1969年,RS-232C作为串行通信接口的电气标准定义了数据终端设备(Data Terminal Equipment,DTE)和数据通信设备(Data Communication Equipment,DCE)之间按位串行传输的接口信息,合理安排了接口的电气信号和机械要求,在世界范围内得到了广泛的应用。但它采用单端驱动非差分接收电路,因而存在着传输距离不太远(最大传输距离15m)和传送速率不太高(最大位速率为20kbit/s)的问题。而远距离串行通信必须使用MODEM,增加了成本。在分布式控制系统和工业局部网络中,传输距离常介于近距离(<20m)和远距离(>2km)之间,这时RS-232C(25脚连接器)不能采用,用MODEM又不经济,因而需要制定新的串行通信接口标准。

1977年,美国电子工业协会制定了RS-449。它除了保留与RS-232C兼容的特点外,还在提高传输速率、增加传输距离及改进电气特性等方面作了很大努力,并增加了10个控制信号。与RS-449同时推出的还有RS-422和RS-423,它们是RS-449的标准子集。

为改进RS-232通信距离短、速率低的缺点,RS-422标准规定采用平衡驱动差分接收电路,将传输速率提高到10Mbit/s,传输距离延长到4000ft1(速率低于100kbit/s时),并允许在一条平衡总线上连接最多10个接收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。

RS-423标准规定采用单端驱动差分接收电路,其电气性能与RS-232C几乎相同,两者均是全双工的。并设计成可连接RS-232C和RS-422。它一端可与RS-422连接,另一端则可与RS-232C连接,提供了一种从旧技术到新技术过渡的手段。同时又提高位速率(最大为300kbit/s)和传输距离(最大为600m)。

为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485 标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。因RS-485为半双工的,当用于多站互连时可节省信号线,便于高速、远距离传送。许多智能仪器设备均配有RS-485总线接口,将它们联网也十分方便。

串行通信由于接线少、成本低,在数据采集和控制系统中得到了广泛的应用,产品也越来越丰富多样。

3.3.1 RS-232C标准

RS-232C标准的全称是EIA-RS-232C标准,其中EIA(Electronic Industries Alliance)代表美国电子工业协会,RS(Recommended Standard)代表推荐标准,232是标识号,C代表RS-232的最新一次修改(1969年),说明在此之前有RS-232A和RS-232B两个标准。RS-232C标准的全名是“数据终端设备和数据通信设备之间串行二进制数据交换接口技术标准”。它是目前最常用的一种串行通信接口,1969年正式公布实施,1970年由美国电子工业协会联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定。该标准规定了串行通信接口的连接电缆、机械特性、电气特性、信号功能及传送过程。最初,该标准规定采用一个25针引脚的DB-25连接器,对连接器的每个引脚的信号内容加以定义,还对各种信号的电平加以规定,适合于数据传输速率在0~20000bit/s范围内的通信;之后,IBM的PC机将RS-232简化成了DB-9连接器,从而成为事实标准;而工业控制的RS-232一般只使用RxD、TxD和GND三条线。

RS-232C标准最初是为远程通信连接数据终端设备与数据通信设备而制定的。因此这个标准的制定,并未考虑计算机系统的应用要求,但目前它又广泛地被借来用于计算机(更准确地说,是计算机接口)与终端或外设之间的近端连接标准。显然,这个标准的有些规定和计算机系统是不一致的,甚至是相矛盾的。因此,有时RS-232C标准会出现计算机不兼容的问题。RS-232C标准中所提到的“发送”和“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,因此双方都能发送和接收。

由于设备厂商都生产与RS-232C标准兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。

3.3.1.1 电气特性

EIA-RS-232C对电气特性、逻辑电平和各种信号功能都作了规定。

在TxD和RxD数据线上:

逻辑1(MARK)=-3~-15V;

逻辑0(SPACE)=+3~+15V。

在RTS、CTS、DSR、DTR和DCD等控制线上:

信号有效(接通,ON状态,正电压)=+3~+15V;

信号无效(断开,OFF状态,负电压)=-3~-15V。

以上规定说明了RS-323C标准对逻辑电平的定义。对于数据(信息码),逻辑“1”(传号)的电平低于-3V,逻辑“0”(空号)的电平高于+3V;对于控制信号,接通状态(ON),即信号有效的电平高于+3V,断开状态(OFF),即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以被有效地检查出来,介于-3~+3V之间的电压无意义,低于-15V或高于+15V的电压也无意义。因此,实际工作时,应保证电平在±(3~15)V之间。

EIA-RS-232C在数据线上用+3~+15V表示0,-3~-15V表示1,而晶体管-晶体管逻辑集成电路(TTL)用3.3V高电平表示1,0.0V低电平表示0,两者对逻辑状态的规定正好相反,电平高低也不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换,实现这种变换的方法可用分立元件,也可用集成电路芯片。

目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTL../images/image12.jpgEIA双向电平转换,图3-21显示了MC1488和MC1489的内部结构和引脚。MC1488的引脚2、4、5、9、10和12、13接TTL输入。引脚3、6、8、11输出端接EIA-RS-232C。MC1489的1、4、10、13脚接EIA输入,而3、6、8、11脚接TTL输出。

图3-21 MC1488和MC1489芯片的内部结构和引脚示意图

具体连接方法如图3-22所示,图中的左边是微机串行接口电路中的主芯片,通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART),它是TTL器件,右边是EIA-RS-232C连接器,要求高电压。因此,RS-232C所有的输出、输入信号都要分别经过MC1488和MC1489转换器,进行电平转换和逻辑转换后才能送到连接器或从连接器送进来。

图3-22 TTL电平与EIA电平转换关系示意图

3.3.1.2 连接器的机械特性

(1)连接器 由于RS-232C并未定义连接器的物理特性,因此,出现了DB-25和DB-9各种类型的连接器,其引脚的定义也各不相同,下面分别介绍DB-25和DB-9两种主要连接器。

①DB-25连接器 PC和XT机采用DB-25型连接器,DB-25型连接器定义了25根信号线,分为4组:

a.异步通信的9个电压信号(含信号地SG,Signal Ground),即2,3,4,5,6,7,8,20,22;

b. 20mA电流环信号9个(12,13,14,15,16,17,19,23,24);

c.空引脚6个(9,10,11,18,21,25),备用;

d.保护地(Protective Earth,PE)1个,作为设备接地端(1)。

DB-25型连接器的外形及信号线分配如图3-23所示。

图3-23 DB-25型与DB-9型连接器的外形及信号线分配示意图

注意:20mA电流环信号仅IBM PC和IBM PC/XT机提供,AT机及以后机型,已不支持。

②DB-9连接器 在AT机及以后,不支持20mA电流环接口,使用DB-9连接器,作为提供多功能I/O卡或主板上COM1和COM2两个串行接口的连接器。它只提供异步通信的9个信号。DB-9型连接器的引脚分配与DB-25型引脚信号完全不同。因此,若与配接DB-25型连接器的DCE设备连接,必须使用专门的电缆线。通常,一些设备与PC机的RS-232口相连时,由于不使用控制信号,因此,只需三条接口线,即发送数据TxD、接收数据RxD和电源地GND。RS-232传输线采用屏蔽双绞线。

(2)最大直接传输距离 RS-232C标准规定,若不使用MODEM(Modulator and Demodulator),在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50ft),可见这个最大的距离是在码元畸变小于4%的前提下给出的。为了保证码元畸变小于4%的要求,接口标准在电气特性中规定,驱动器的负载电容应小于2500pF,此时的通信速率低于20kbit/s,其实,4%的码元畸变是很保守的,在实际应用中,约有99%的用户是按码元畸变10%~20%的范围工作的。因此,实际传输的最大距离会远超过15m。美国DEC(Digital Equipment Corporation)公司曾规定允许码元畸变为10%,采用两种电缆测得信号的最大传输距离,实验结果如表3-3所示。其中1#电缆为屏蔽电缆,内有三对双绞线,每对由22 AWG(American Wire Gauge)组成,外层覆以屏蔽网;2#电缆为不带屏蔽的电缆,内有22 AWG的四芯电缆。AWG指的是美国线标分类,数字越大,线越细,电阻越大。从实验结果可以看出,对于同一种电缆,随着距离的延长,电阻增加,信号衰减增强,传输波特率降低;外层覆屏蔽网的电缆对于信号的衰减起到缓冲作用,加屏蔽网的电缆传输距离明显优于未加屏蔽网的电缆,说明屏蔽电缆在串行通信中对高速波特率信号的传输起到了至关重要的作用。

表3-3 不同波特率下信号的最大传输距离

多年来,随着RS-232器件以及通信技术的改进,RS-232通信距离已经大大增加。采用RS-232增强器后可以将普通的RS-232口的通信距离直接延长到1000m;如果采用射频技术,其传输半径可以达到5000m。

3.3.1.3 RS-232C的接口信号

RS-232C标准接口有25条线,即4条数据线、11条控制线、3条定时线、7条备用线和未定义线,常用的只有9根。

(1)联络控制信号线 数据装置准备好(Data Set Ready,DSR)——有效时(ON)状态,表明MODEM处于可以使用的状态。

数据终端准备好(Data Terminal Ready,DTR)——有效时(ON)状态,表明数据终端可以使用。

这两个信号有时连到电源上,一上电就立即有效。这两个设备状态信号有效,只表示设备本身可用,并不说明通信链路可以开始进行通信了,能否开始进行通信要由下面的控制信号决定。这与家里的电话机非常相似,电话机有电可以打电话,但是拨的电话号码不一定通,相当于通信链路处于不确定状态。

请求发送(Request To Send,RTS)——用来表示DTE请求DCE发送数据,即当终端要发送数据时,使该信号有效(ON状态),向MODEM请求发送。它用来控制MODEM是否要进入发送状态。

允许发送(Clear To Send,CTS)——用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。当MODEM已准备好接收终端传来的数据,并向前发送时,使该信号有效,通知终端开始沿发送数据线TxD发送数据。

RTS/CTS请求应答联络信号用于半双工MODEM系统中发送方式和接收方式之间的切换。在全双工系统中,因配置双向通道,故不需要RTS/CTS联络信号,使其变高。

接收线信号检出(Received Line Detection,RLSD)——用来表示DCE已接通通信链路,告知DTE准备接收数据。当本地的MODEM收到由通信链路另一端(远地)的MODEM送来的载波信号时,使RLSD信号有效,通知终端准备接收,并且由MODEM将接收下来的载波信号解调成数字数据后,沿接收数据线RxD送到终端。此线也叫做数据载波检出(Data Carrier Dectection,DCD)线。

振铃指示(Ringing,RI)——当MODEM收到交换台送来的振铃呼叫信号时,使该信号有效(ON状态),通知终端,已被呼叫。

(2)数据发送与接收线 发送数据(Transmitted Data,TxD)——终端通过TxD将串行数据发送到MODEM,(DTE→DCE)。

接收数据(Received Data,RxD)——终端通过RxD线接收从MODEM发来的串行数据,(DCE→DTE)。

(3)地线 有两根线SG(Signal Ground)、PG(Protective Ground)——信号地和保护地信号线,无方向。

上述控制信号线何时有效、何时无效的顺序表示了接口信号的传送过程。例如,只有当DSR和DTR都处于有效(ON)状态时,才能在DTE和DCE之间进行传送操作。若DTE要发送数据,则预先将DTR线置成有效(ON)状态,等CTS线上收到有效(ON)状态的回答后,才能在TxD线上发送串行数据。这种顺序的规定对半双工的通信线路特别有用,因为半双工的通信需要确定DCE已由接收方向改为发送方向,这时数据才能开始发送。

如果将上述过程形容为打电话,DTE与DCE相当于通信双方的电话机;DSR和DTR相当于双方的电话机都处于上电状态;RTS和CTS相当于建立通话,确认对方是自己想要找的人;TxD和RxD相当于两人说话的具体内容。

3.3.2 RS-422与RS-485标准

RS-422、RS-485与RS-232不一样,其区别如表3-4所示。数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一根线定义为A,另一根线定义为B。通常情况下,发送驱动器A、B之间的正电平在+2~+6V之间,是一个逻辑状态,负电平在-2~-6V之间,是另一个逻辑状态。另有一个信号地C,在RS-485中还有一“使能”端,而在RS-422中这是可用可不用的。“使能”端用于控制发送驱动器与传输线的切断与连接。当“使能”端起作用时,发送驱动器处于高阻状态,称作“第三态”,即它是有别于逻辑“1”与“0”的第三态。

表3-4 RS-232、RS-422与RS-485接口标准间的比较

接收器也作与发送端相对的规定,收、发端通过平衡双绞线将AA与BB对应相连,在发送端,逻辑1表示AB两线之间的电压差为+2~+6V;逻辑0表示两线之间的电压差为-2~-6V。在接收端,当在AB两线之间有大于+200mV的电平时,输出正逻辑电平,小于-200mV时,输出负逻辑电平。接收器接收平衡线上的电平范围通常在200mV~6V之间。这样,随着线路的延长,电阻增加,传输信号在电线上开始衰减,由于采用差分电路,A与B上的信号同时衰减,两者之差很容易保持一个固定值,这是差分驱动与单端驱动的本质差别。

3.3.2.1 RS-422电气规定

RS-422标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。由于接收器采用高输入阻抗和发送驱动器,比RS-232具有更强的驱动能力,因此允许在相同传输线上连接多个接收节点,最多可接10个节点。即一个主设备(Master),其余为从设备(Salve),从设备之间不能通信,所以RS-422支持一点对多点的双向通信。接收器输入阻抗为4kΩ,故发送端最大负载能力是10×4kΩ+100Ω(终接电阻)。RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必需的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)实现。

RS-422的最大传输距离为4000ft(约1219m),最大传输速率为10Mbps。其平衡双绞线的长度与传输速率成反比,在100kbps速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高传输速率。一般100m长的双绞线上所能获得的最大传输速率仅为1Mbps。RS-422需要一终接电阻,要求其阻值约等于传输电缆的特性阻抗。在短距离传输时可不需要终接电阻,即一般在300m以下不需要终接电阻。终接电阻接在传输电缆的最远端。RS-422转换器与RS-422设备之间的4条导线最好是铜芯双绞线,如远传可适当增加导线直径。RS-422型转换器之间以及转换器与设备之间互连信号定义如表3-5所示。

表3-5 RS-422型转换器之间以及转换器与设备之间互连信号定义

3.3.2.2 RS-485电气规定

由于RS-485是在RS-422基础上发展而来的,因此RS-485许多电气规定与RS-422相似,如都采用平衡传输方式、都需要在传输线上接终接电阻等。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信。而采用四线连接时,与RS-422一样只能实现一点对多点的通信,即只能有一个主(Master)设备,其余为从设备,但它比RS-422有改进,无论是二线还是四线连接方式,总线都可以连接多达32个设备。

RS-485通信线由两根双绞线组成,它通过两根通信线之间的电压差的方式来传递信号,因此称之为差分电压传输。差模干扰在两根信号线之间传输,属于对称性干扰。消除差模干扰的方法是在电路中增加一个偏值电阻,并采用双绞线。RS-485的电气特性规定,在发送端,逻辑1以两线之间的电压差为+2~+6V表示;逻辑0以两线之间的电压差为-2~-6V表示;在传输过程中,由于电缆存在电阻,当距离增加时,电压在电缆上的压降增大,因此,在接收端,规定A线比B线高200mV以上即认为是逻辑1,A线比B线低200mV以上即认为是逻辑0,这样,传输信号的稳定性大大增强。

RS-485的最高传输速率为10Mbps,但是,由于RS-485常常与PC机的RS-232口通信,因此实际上一般最高只有115.2kbps,又由于太高的速率会使RS-485传输距离减小,因此往往以9600bps或更低速率传输。

在使用RS-485接口时,对于特定的传输线路,从发生器到负载,其数据信号传输所允许的最大电缆长度是数据信号速率的函数,这个长度数据主要受信号失真及噪声等影响。最大电缆长度与信号速率的关系曲线是使用24AWG铜芯双绞电话电缆(线径为0.51mm),线间旁路电容为52.5pF/m,终端负载电阻为100Ω时所得出。当数据信号速率降低到90kbps以下时,假定最大允许的信号损失为6dBV,则电缆长度被限制在1200m,实际上可达3000m。平衡双绞线的长度与传输速率成反比,在100kbps速率以下,才可能使用规定最长的电缆长度,只有在很短的距离下才能获得最高速率传输,一般100m长双绞线最大传输速率仅为1Mbps。

当使用不同线径的电缆时,计算得到的最大电缆长度是不相同的。例如:当数据信号速率为600kbps时,采用24AWG电缆,最大电缆长度是200m;若采用19AWG电缆(线径为0.91mm),则电缆长度可以大于200m;若采用28AWG电缆(线径为0.32mm),则电缆长度只能小于200m。RS-485的远距离通信建议采用屏蔽电缆,并且将屏蔽层作为地线。

RS-485接口采用平衡驱动器和差分接收器的组合,抗噪声干扰性好;而且,总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复;此外,RS-485接口在总线上允许连接多达128个收发器,即RS-485具有多机通信能力,这样用户可以利用单一的RS-485接口方便地建立起设备网络。因此,长距离传输和多站能力等优点使其成为首选的串行接口。RS-485采用半双工工作方式,任何时候只能有一点处于发送状态。因此,发送电路须由使能信号加以控制。RS-485一般只需两根信号线,均采用屏蔽双绞线传输,用于多点互连时非常方便,可以省掉许多信号线。

RS-485与RS-422的不同还在于其共模输出电压是不同的,RS-485在-7~+12V之间,而RS-422在-7~+7V之间;RS-485满足所有RS-422的规范,所以RS-485的驱动器可以用在RS-422网络中。RS-485需要2个终接电阻,其阻值要求等于传输电缆的特性阻抗。在短距离传输时可不需要终接电阻,即一般在300m以下不需要终接电阻。终接电阻接在传输总线的两端。RS-485型转换器之间以及转换器与设备之间互连信号定义如表3-6所示。

表3-6 RS-485型转换器之间以及转换器与设备之间互连信号定义

RS-485 的国际标准并没有规定RS-485的接口连接器标准,所以采用接线端子或者DB-9或DB-25等连接器均可。目前,RS-485接口是事实工业标准。