第一章RS-232C串行通信接口1.1并行通信与串行通信计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯两种方式。1.1.1并行通信计算机在同一时间内传送多个位,Centronics打印机接口是最常见的并行口。此外,IEEE488总线是使用并行通信的最典型例子。25针并行口插口的针脚功能:针脚功能针脚功能1选通(STROBE低电平出)10确认(ACKNLG低电平入)2数据位0(DATAO)11设备忙(BUSY入)3数据位1(DATA1)12缺纸(PE入)4数据位2(DATA2)13设备选择(SLCT处)5数据位3(DATA3)14自动换行(AUTOFEED低电平出)6数据位4(DATA4)15设备故障(ERROR低电平入)7数据位5(DATA5)16初始化设备(INIT低电平出)8数据位6(DATA6)17设备被选择输入(SLCTIN低电平入)9数据位7(DATA7)18-25地(GND)并行口与串行口的区别是交换信息的方式不同,并行口能同时通过8条数据线传输信息,一次传输一个字节;而串行口只能用1条线传输一位数据,每次传输一个字节的一位。并行口由于同时传输更多的信息,速度明显高于串行口,但串行口可以用于比并行口更远距离的数据传输。1.1.2串行通信与RS-232接口标准串行通信是一次一位地传送。大多数网络设备、键盘、鼠标、调制解调器和终端设备都采用串行通讯方式与其他设备交换信息。当使用串行通讯时,发送或接收的每一个字,(比如一个字节或者一个字符),实际上都是一次一位地传送的。每一位要么为on要么为off。以下将用术语mark表示on,space表示off。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232C接口(又称EIARS-232C)是目前最常用的一种串行通讯接口。RS-232接口标准在1962年被提出,在1969年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定了其第三个版本RS-232C,作为串行通讯的标准。它的全名是数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。一般只使用3-9条引线。在1987年出现了RS-232D。RS-232与CCITTV.24/V.28,X.20bis/X.21bis、ISOIS2110是相同的标准,只是名字不同。1.2串行通信接口标准RS232C1.2.1RS-232C接口的电气特性在RS-232-C中任何一条信号线的电压均为负逻辑关系。即:逻辑1为-5~-15V;逻辑0+5~+15V。噪声容限为2V。即要求接收器能识别低至+3V的信号作为逻辑0,高到-3V的信号作为逻辑11.2.2RS-232C接口的物理结构RS-232-C接口连接器一般使用型号为DB-25的25芯插头座,通常插头在DCE端,插座在DTE端。有些设备与PC机连接的RS-232-C接口,因为不使用对方的传送控制信号,只需三条接口线。即:发送数据、接收数据和信号地。所以采用DB-9的9芯插头座,传输线采用屏蔽双绞线。25针串行口具有20mA电流环接口功能,用9、11、18、25针来实现。其针脚功能如下:25针串行口的针脚功能针脚功能针脚功能1未用2发出数据(TXD)11数据发送(一)3接受数据(RXD)12-17未用4请求发送(/RTS)18数据接收(+)5清除发送(/CTS)19未用6数据设备准备好(/DSR)20数据终端准备好(/DTR)7信号地线路(SG)21未用8载波检测(DCD)22振铃指示(RI)9发送返回(+)23-24未用10未用25接收返回(一)9针串行口的针脚功能:RS-574针脚功能针脚功能1载波检测(DCD)6数据准备好(DSR)2接受数据(RXD)7请求发送(RTS)3发出数据(TXD)8清除发送(CTS)4数据终端准备好(DTR)9振铃指示(RI)5信号地线(SG)RS-232-C最常用的9条引线的信号内容如下所示DB-9123456789DB-2583220764522定义DCDRXDTXDDTRGNDDSRRTSCTSRI1.2.3RS-232C接口信号定义RS-232标准定义了18个不同的用于串口通讯的信号。其中仅有6个是在各种环境中普遍适用的。GND-逻辑地。严格地讲,逻辑地并不是信号,但是没有它其它的信号无法工作。逻辑地作为一个参考电压基准以使电器知道哪个电压是正,哪些是负。TXD-数据被发送。TXD信号承载从你的工作站发送到其它的机器或设备上的数据。mark电压表示1,space电压表示0。RXD-被接收的数据。RXD信号承载从其它机器或设备上向你的工作站发送数据。类似TXD,mark和space电压分别表示1和0。DCD-数据载波探测。DCD信号从串口电缆的另一端的机器或设备发送出来。串行线上的space电压表示机器或设备处于连线状态。很多情况下,DCD并不被使用。DTR-数据终端就绪。DTR信号是从你的工作站发送出来,告诉另一端的机器或设备你已经就绪或者尚未就绪,分别用space电压和mark电压表示。在PC机上,当串口被打开后,DTR一直处于激活状态。CTS-设备接收就绪,等待新的数据被发送。CTS信号来自串行电缆的另一端。space电压表示你可以从你的工作站上发送更多数据了。(以前接收的已经处理完毕)。CTS常用来调节计算机与串行线另一端设备之间数据传送的流量。RTS-请求发送。RTS信号被你的工作站置成space,用来表示有更多的数据等待发送。与CTS类似,RTS也是用来调节串行电缆两个终端之间的数据传送流量的。大多数工作站把这个信号一直置为space电压。1.2.4全双工和半双工串行通信全双工表示机器可以同时既发送数据又接收数据,有两个独立的数据通道(一进一出)。半双工表示机器不能在发送数据的同时又接收数据。通常这意味着仅仅有一个数据通道在使用。1.2.5RS-232C接口设备之间的连接当提到串口设备或者端口时,它们或者被标记为数据通信设备(DCE)或者数据终端设备(DTE)。两者的差异非常简单。当需要将两个DTE或者两个DCE接口连在一起时,可以使用一个串行的用来交换信号对的NULL-Modem电缆或适配器。1.2.6RS-232C接口传输电缆长度串行数据的速度经常用每秒位数(bps)或者波特率(baudrate)来表示。用来表示一秒中有多少1或者0被传送。在计算机发明的初期,300baud被认为是很快的,而今天计算机的RS232可以达到430,800baud的速度!当波特率超过1,000时,常会用千波特率概念,或kbps(例如9.6k,19.2k)。对于超过1,000,000的速率用兆波特率,或Mbps(例如1.5Mbps)。RS-232C标准规定在码元畸变小于4%的情况下,传输电缆长度应为50英尺。其实这个4%的码元畸变是很保守的,如果波特率足够低的话,信号还可以发送得更远些。在实际应用中,约有99%的用户是按码元畸变10-20%的范围工作的,所以实际使用中最大距离会远超过50英尺。美国DEC公司曾规定容许畸变为10%而得出下面实验结果。其中1号电缆为屏蔽电缆,型号为DECP.NO.9107723内有三对双绞线,每对有22#AWG(0.35mm2)组成,其外覆以屏蔽线。2号电缆为不带屏蔽的电缆。型号为DECP.NO.9105856-04是22#AWG(0.35mm2)的四芯电缆。DEC公司的实验结果波特率bps1号电缆传输距离(米)2号电缆传输距离(米)110150090030015009001200900900240030015048003007596007575经过许多年来RS-232器件以及通信技术的改进,RS-232的通信距离已经大大增加。RS-232增强器可以将普通的RS-232口的通信距离延长到1000米。1.2.7异步串行通讯与同步串行通信在异步模式下,串行数据直到有字符被发送前一直保持mark状态。在每个字符之前有一开始位,紧接着是数据位,一个可选的奇偶位和若干个停止位。起始位总是space,告诉机器串行数据已经准备好了。数据可以在任何时候被发送或接收,因此称之为异步的。可选的奇偶校验位是简单地统计数据中包含奇数个1还是偶数个1。如果有偶数个1,就置这位为0,称偶校验位。如果是奇数个1,就置该位为0,称奇校验位。通常还有spaceparity,markparity和noparity的说法。SpaceParity就是校验位总是0,markParity就是校验位总是1,NoParity表示不使用或不传输校验位。接着的那位是终止位。在字符之间可以有1,1.5或2个终止位,它们的值总是1。以前终止位是为了让机器有更多的时间去处理前一个字符,但现在仅仅是用于在机器接收字符时的同步。异步数据格式通常用诸如8N1,7E1等等表示。前者表示8个数据位,没有校验位,1个终止位。后者表示7个数据位,偶校验,1个终止位。与异步数据传输不同的是,同步数据传输是一种恒定的位流。为了从通讯线上读出数据,机器必须发送或者接收一个普通的位作为时钟,以达到发送端和接收端的同步。对于同步通信,机器必须标志数据的起始位置。实现它的最常见的方法是使用类似串行数据链路控制SDLC或者高速数据链路控制HDLC之类的数据包协议。每一个协议定义了固定的位顺序以表示数据包的开始和结束,同时也定义了被用来表示没有数据时使用的位顺序。机器根据这些位顺序可以知道数据包的开始位。因为同步通信协议不需要使用每个字符的同步位(起始和停止位),所以它们一般能比异步通讯提高至少25%的性能,适合远程网络和两个以上的串行接口的配置。尽管同步协议拥有速度优势,但大多数RS232C硬件仍然由于需要额外的硬件和必要的软件而没有支持它。1.2.8流量控制当在两个串行接口之间传输数据时通常有需要调节数据流量,这可能需要对设备之间的串行通讯联接(某个串行接口或者某个存储介质)实行一些限制。对于异步数据通常有两种方法。一是软件流量控制。即使用特殊的字符去标志数据流的开始(XON,DC1,八进制的021)或结束(XOFF,DC3,八进制的023).这些字符可以在ASCII中找到定义。然而当传输文本信息时这些字符拥有自身的含义,不能被使用。另一种是硬件流量控制,用RS232的/CTS和/RTS信号代替特殊字符用于控制。当接收方准备接收更多的数据时,设置/CTS为Space电压,反之设成Mark电压。对应地,当发送方准备发送更多的数据时,设置/RTS为space电压。由于硬件的流量控制使用独立的一套信号,比软件的实现更快,因为作同样的工作,后者需要发送或接收多位信息。遗憾的是,并不是所有的硬件或操作系统都支持CTS/RTS流量控制。此外,DTR/DSR信号也在某些系统中用于硬件流量控制。1.2.9中断/Break?一般而言,接收或者传输数据的信号线上总保持mark电平,直到开始传送一个新的字符。如果信号过了很长时间后才被降低到space电压,通常是1/4到1/2秒,我们称这种状态为break。Break有时被用来重置通讯线路或者改变诸如Modem的通讯设备的工作模式。UART的作用和功能分立的RS232接口芯片RS-232接口芯片的作用集成的RS232接口芯片ICL2321.2.10MCS-51单片机上的UART9位多机通信方式1.3ISO/OSIRS232C是最简单的通信接口,其功能远不能满足通信与网络系统使用需要。为了利用串行通信实现计算机系统的广泛互联,国际标准化组织(ISO)在20世纪70年代定义了一个适用性广泛的开放系统互联(OSI)分层模型。该模型共七层,从下至上分别是:物理层(一)数据链路层(二)网络层(三)传输层(四)会话层(五)表示层(六)应用层(