1、7.5 串行通信与可编程串行通信接口8251A,许多I/O 器件与CPU,或计算机与计算机之间交换信息,是通过一对导线或通过信道来传送信息。这时,每一次只传输一位信息,每一位都占据一个规定长度的时间间隔,这种数据一位一位顺序传送的通信方式称为串行通信。与并行通信相比,串行通信具有传输线少、成本低的特点,特别适合于计算机与计算机、计算机与外部设备之间的远距离通信,其缺点是速度慢。,$7.5.1 串行通信基础 一、串行通信需要解决的问题 1. 同步与并行接口相比,实现串行传输首先要解决同步问题。 同步包括位同步、字节(帧)同步和数据块同步。 位同步就是生成接收数据的采样时钟,保证对每个数据比特的正
2、确接收,这是串行接收的首要条件。有了采样时钟,就可对接收数据进行串行到并行的变换; 字节同步或帧同步是保证对接收数据字节和数据块的正确划分,以便于把变换的并行数据按字节和块组织存放; 数据块同步是保证数据块按正确的顺序发送和接收,以免接收块多出或遗漏,这主要由软件解决。,2. 差错控制远距离通信必然存在差错(误码)。要保证通信的可靠,必须采用某种措施解决这个问题。有两种方法,即检错和纠错。 检错:在发送信息中加入冗余位,使接收端能识别接收信息的正确或错误。一旦发现错误,就采用措施补救,比如,重发出错的数据块,叫作出错自动请求重发,即ARQ。 纠错:在数据中假如有更多的冗余位,使接收端不但能检查
3、接收数据的正误,而且能纠正错误的数据位,这叫纠错编码技术。在计算机的数据串行传输中,一般采用的检错措施有奇偶校验(parity check)、校验和(sum check)以及循环冗余校验(CRC)。 3. 通信协议(规程)通信协议规定通信链路的建立和拆除、命令和响应以及出错时的恢复等各种约定。是双方保证可靠通信时必须遵守的协议。,二、串行通信数据传送方向在串行通信中,数据通常在两个站(如终端和微机)之间进行传送,按照数据流的方向可分为3种基本的传送方式:全双工、半双工和单工。 1. 全双工通信 如图1(a),两端分别用独立的发送器和接受器,及传输线来发送和接收信号,通信双方都能在同一时刻进行发
4、送和接收操作。这种方式称全双工通信。在全双工方式下,通信系统的每一端都设置了发送器和接收器,因此,能控制数据同时在两个方向上传送。全双工方式无需进行方向的切换,这样,没有切换操作所产生的时间延迟,这对那些不能有时间延误的交互式应用(例如远程检测和控制系统)十分有利。,2. 半双工通信如图1(b),若使用同一根传输线既作接收又作发送,虽然数据可以在两个方向上传送,但通信双方不能同时收发数据、只能交替进行,通过软件和接口的协调控制,实现传输换向。这种方式称半双工通信。采用半双工时,通信系统每一端的发送器和接收器,通过收/发开关转接到通信线上,进行方向的切换,因此,会产生时间延迟。收/发开关实际上是
5、由软件控制的电子开关。 3. 单工通信如图1(c),只允许一个方向传输数据,不能进行反方向传输。这种方式称单工通信。已很少采用。,三、串行通信数据的收发方式在串行通信中数据的收发可采用异步和同步两种基本的工作方式。 1. 异步通信方式 异步通信是以字符为独立信息单位传送的,每个字符为1帧数据。通信中相邻两帧间的时间间隔是不定的。而同一帧数据中的两个代码间的时间间隔是固定的。异步通信的数据格式如图2所示。第1位称起始位,它的宽度为1位,低电平;接着传送一个字节(58位)的数据及一位奇偶校验位;最后是停止位,宽度可以是1位,1.5位或2位。在两个数据组之间可有空闲位。,异步通信时字符是一帧一帧传送
6、的,每帧字符以起始位和停止位作为联络信号。传送开始后,接收设备不断检测传输线,看是否有起始位到来。当收到一系列的“1”(停止位或空闲位)之后,检测到一个下跳沿,说明起始位出现,起始位确认后,就开始接收所规定的数据位和奇偶校验位以及停止位。去掉停止位,把数据位整理成一个并行字节,并经奇偶校验无误才算正确地接收一个字符。接收设备继续检测传输线,接收下一个数据。,在异步通信中,发送器和接收器之间必须有两项共同的规定: 字符的格式即字符的编码形式,奇偶校验、起始位和停止位的规定。例如用ASCII码时,7位为字符,一位为偶校验位,一个起始位以及一个停止位,共10位为一帧。 波特率即传送数据位的速度。二进
7、制用位/秒(bit/s)来表示。例如,设数据传送的速率为120字符/秒,每个字符(帧)包括10位,则传送波特率为:10120=1200位/秒=1200波特通常,异步通信的波特率在509600波特之间,高速的可达19200波特。在串行通信中大都采用异步通信。它允许发送端和接送端的时钟误差或波特率误差达4%5%。,2. 同步通信在同步通信时所使用的数据格式根据控制规程分为面向字符及面向比特的两种。面向字符型的数据格式:面向字符型的同步数据格式可采用单同步、双同步及外同步3种数据格式,如图3所示。单同步是在传送数据之前先传送一个同步字符“SYNC”,双同步则先传送两个同步字符“SYNC”。接收端检测
8、到该同步字符后开始接收数据。外同步通信的数据格式中没有同步字符,而是用一条专用控制线来传送同步字符,使接受方及发送端实现同步。当每一帧信息结束时均用两个字节的循环控制码CRC为结束。,面向比特型的数据格式:根据同步数据链路控制规程(SDLC),面向比特型的数据以帧为单位传输,每帧由6个部分组成。第1部分是开始标志“7EH”;第2部分是一个字节的地址场;第3部分是一个字节的控制场;第4部分是需要传送的数据,数据都是位(bit)的集合;第5部分是两个字节的循环控制码CRC;最后部分又是“7EH”,作为结束标志。面向比特型的数据格式如图4所示。,在SDLC规程中不允许数据段和CRC段中出现6个“1”
9、,否则会误会认为是结束标志。因此要求在发送端进行检验,当连续出现5个“1”,则立即插入一个“0”,到接收端要将这个插入的“0”去掉,恢复原来的数据,保证通信的正常进行。通常,异步通信率要比同步通信的低。最高同步通信率可达800K位,因此适合用于传送信息量大,要求传送速率很高的系统中。,四、信号的调制与解调计算机的通信是一种数字信号的通信,它要求传输线的频带很宽。但在目前长距离的通信中,大都采用电话线进行信息传递,而电话线的频带又没有这么宽,所以,简单地直接使用电话线去传送数字信号,就会造成信号的畸变。为了保证信号的可靠性,在长距离通信中,常常采用调制/解调器来保证信号品质。调制器(Modula
10、tor)把数字信号转换为模拟信号,经过传输线传送到目的地后,再用解调器(Demodulator)检测此模拟信号,再把它转换成数字信号,如图5所示。通常把调制、解调电路做在一起,构成调制/解调器。在串行通信中,要用一对调制/解调器来实现信号转换。,调制/解调的实现方法很多,如FSK ( Frequency Shift Keying ) 移频键控式是其中常用的一种。它把数字信号的“1”和“0”调制成不同频率的模拟信号,这两种不同频率的模拟信号,分别由电子开关控制,在运算放大器的输入端相加,而电子开关由要传输的数字信号(即数据)控制。当信号为“1”时,控制上面的电子开关导通,送出一串低频模拟信号,于
11、是在运算放大器的输出端,就得到了调制后的信号。,五、串行通信接口标准 1. RS-232-C接口标准在串口通信接口标准中,通常采用RS-232-C接口。RS-232-C是EIA ( Electronics Industry Association Recommends Standard ) 推荐为国际通用的一种串行通信接口标准。它实际上是一个25芯的D型连接器(图6(b),其中一个引脚都有标准规定,且对信号电平也有标准规定。所以,对于任何具备RS-232-C接口的设备都可以不需要附加其他硬件而与计算机相连接。图6(a)是其最基本的常用信号规定。目前在普通微机中还常用9芯D型连接器,如图6(c)
12、所示。凡是符合RS-232-C接口标准的计算机或外设,都把它们往外发送的数据线连至25芯连接器的2号引脚,接收的数据线连到3号引脚,如图6(d)。显然,在插头连线时,一方的接收数据线与另一方的发送数据线相连。,在串行通信中,除了数据线和地线外,为了保证信息的可靠传送,还有若干联络控制信息线互相连接。这些联络控制线有: 请求发送 ( Request To Send ) 当发送器已经作好了发送的准备,为了了解接收方是否作好了接收准备,是否可以开始发送,就向对方输出一个有效的信号,以等待对方的回答。 准许发送( Clear To Send ) 当接收方做好了接收的准备,在接收到发送方送来信号后,就以
13、有效的信号作为回答。 数据终端准备好( Data Terminal Ready ) 通常当某一个站的接收器已做好了接收的准备,为了通知发送器可以发送,就向发送器发出一个有效的信号。 数据装置准备好( Data Set Ready ) 当发送方接收到接收方送来的有效的信号,在发送方做好了发送的准备后,就向接收方发出一个有效的信号作为回答。,振铃指示器RI和载波检测CD为作为调制解调器输出到接收方的信号,通知接收方准备接收数据。通常用于电话网路中。 RS-232-C除了对信号引脚的定义作了规定外,对信号电平标准也有规定,即采用负逻辑规定逻辑电平:5 15V 规定为“1”,而将+5V +15V 规定
14、为“0”。 可以实现TTL与RS-232-C标准之间电平转换的芯片有很多。目前较广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154芯片可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTL与EIA双向电平转换。图7采用的是ICL232,它的工作电源为单一+5V。在三线方式下(图6(d),一个ICL232芯片可以实现两组串口信号的电平变换。,2. RS-422A接口标准 在通信速率低于20Kb/s时,RS-232-C所能直接连接的最大物理距离为15m(50英尺)。为了实现在更大的距离和更高的速率上直接连接,E
15、IA在RS-232-C的基础上,制定了更高性能的接口标准。 RS-422A标准是一种平衡式传输。所谓平衡方式,是指双端发送和双端接收,所以,传送信号要用两条线AA和BB,发送端和接收端分别采用平衡发送器(驱动器)和差动接收器如图8所示。这个标准的电气特性对逻辑电平的定义是根据两条传输线之间的电位差值来决定,当AA线的电平比BB线的电平高于200mV时表示逻辑“1”;但AA线的电平比BB线的电平低于200mV时表示逻辑“0”。很明显,这种方式和RS-232-C采用单端接收器和单端发送器,只用一条信号线传送信息,并且根据该信号线上电平相对于公共的信号地电平的大小来决定逻辑的“1”和“0”是不同的。
16、RS-422A接口标准的电路由发送器、平衡连接电缆、电缆终端负载和接收器组成。他通过平衡发送器把逻辑电平变换成电位差,完成始端的信息传送;通过差动接收器,把电位差变成逻辑电平,实现终端的信息接收。RS-422A标准由于采用了双线传输,大大增强了抗共模干扰的能力。因此最大传输速率可达10Mb/s(传送15m时)。若传输速率降到90Kb/s时,最大距离可达1200m。该标准规定电路中只许有1个发送器,可有多个接收器。该标准允许驱动器输出为26V,接收器输入电平可以低到200mV。,为了实现RS-422A标准的连接,许多公司推出了平衡驱动器/接收器集成芯片,如MC3487/3486、SN75174/
17、75175等。 例如,在YSJC-A型微机远距离水位自动监测系统中,采用MC3487和MC3486分别作为平衡发送器和差动接收器,传输线采用普通的双绞线,在零MODE方式下传输速率为8Kb/s时,传送距离达到了1.5 km。 MC3487和MC3486的连接,如图9所示。,3. RS-485接口标准 它与RS-422A标准一样,也是一种平衡传输方式的串行接口标准,它和RS-422A兼容,并且扩展了RS-422A的功能。两者主要差别是,RS-422A标准只许电路中有一个发送器,而RS-485标准允许在电路中可有多个发送器,因此,它是一种多发送器的标准。RS-485允许一个发送器驱动多个负载设备,
18、负载设备可以是驱动发送器、接收器或收发器组合单元。 RS-485标准的特点特点有: a. 由于RS-485标准采用差动发送/接收,所以,共模抑制比高,抗干扰能力强。b. 传输速率高,它允许的最大传输速率可达10Mb/s(传送15m)。传输信号的摆幅小(200mV)。c. 传送距离远(指无MODEM的直接传输),采用双绞线,在不用MODEM的情况下,当100Kb/s的传输速率时,可传送的距离为1.2km,若传输速率下降,则传送距离可以更远。d. 能实现多点对多点的通信,RS-485允许平衡电缆上连接32个发送器/接收器对。RS-485标准目前已在许多方面得到应用,尤其是在多点通信系统中,如工业集
19、散分布系统、商业POS收款机和考勤机的联网中用的很多,是一个很有发展前途的串行通信接口标准。,4. 几种标准的比较 表1列出了RS-232C、RS-422A和RS-485几种标准的工作方式、直接传输的最大距离、最大数据传输速率、信号电平以及传输线上允许的驱动器和接收器的数目等特性参数。,$7.5.2 串行接口 串行传送数据是一位一位依次顺序传送的,而数据在计算机中却是并行的,为此要实现串行通信就必须解决串行到并行和并行到串行的转换的问题。通常的解决方法是用串行接口来实现。 一、串行通信接口的基本任务 1. 数据格式化 因为来自CPU的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下
20、的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前面加上同步字符。 2. 进行串 并转换 串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把并行的数据转换为串行的数据再传送。而在计算机接收由接收器送来的数据时,要先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串行接口电路的重要任务。,3. 控制数据传输速率 串行通信接口电路应具有对数据传输速率波特率进行选择和控制的能力。 4. 进行错误检测 在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他检验码。在接收
21、时,接口电路检查字符的奇偶校验位或其他检验码,以确定是否发生传送错误。 5. 进行TTL与EIA电平转换 CPU和终端均采用TTL 电平及正逻辑,他们与EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。 6. 提供符合EIA-RS-232C接口标准所要求的信号线 远距离通信采用MODEM时,需要9根信号线;近距离零MODEM方式,只需要3根信号线。这些信号线由接口电路提供,以便与MODEM或终端进行联络与控制。,二、串行通信接口电路的组成 串行接口有许多种类,典型的串行接口如图10所示。它包括4个主要寄存器:控制寄存器、状态寄存器、数据输入寄存器及数据输出寄存器。 控制寄存器用来接收CP
22、U送给此接口的各种控制信息,而控制信息决定接口的工作方式。状态寄存器的各位叫状态位,每一个状态位都可以用来指示传输过程中的某一种错误或者当前传输状态。数据输入寄存器总是和串行输入/并行输出移位寄存器配对使用的。在输入过程中,数据一位一位从外部设备进入接口的移位寄存器,当接收完一个字符以后,数据就从移位寄存器送到数据输入寄存器,再等待CPU 来取走。输出的情况和输入过程类似,在输出过程中,数据输出寄存器和并行输入/串行输出移位寄存器配对使用。当 CPU往数据输出寄存器中输出一个数据后,数据便传输到移位寄存器,然后一位一位地通过输出线送到外部设备。,CPU可以访问串行接口中的4个主要寄存器。从原则
23、上说,对这4个寄存器可以通过不同的地址来访问。不过,因为控制寄存器和数据输出寄存器是只写的,状态寄存器和数据输入寄存器是只读的,所以,可以用读信号和写信号来区分这两组寄存器,再用一位地址来区分两个只读或两个只写寄存器。 由于这种串行接口控制寄存器的参数是可以用程序来改写的,所以称作可编程串行接口。 串行接口是通过外接时钟来和接收数据同步的,通常其时钟周期和数据位周期之间的关系为,其中K=16或64。,设取K=16,在RxD线上字符开始的前沿被测到后,接收器就以16倍的时钟频率来控制采样时间。以便接收器能在一个字符周期的1/16时间内判明字符的开始,以后的采样全部以16倍频时钟为基准进行工作,如
24、图11所示,其工作过程如下: 当字符的前沿出现时将计数寄存器清0; 启动计数器,使16倍频时钟的每个脉冲对计数器加1; 当计数器连续计数达到8个“0”时,则确定它为起始位(不是干扰信号),并表示已达到起始位的中间位置,从此点开始,重新设置计数器,使计数器清0;,此后,每隔16时钟脉冲采样的一次数据线,作为输入数据。并清计数器,如此重复直至最后的停止位被采样; 如果停止位是正确的,则字符被接收到缓冲寄存器,然后再从第一步开始。 为了检测长距离传送中可能产生的错误,在串行接口中还建立一些传送出错误标志,以提高传送的可靠性。常用的有以下三种: 奇偶校验错误(Parity error) 接收器按照事先约定的方式(偶校验、奇校验,或无奇偶校验)进行奇/偶校验计算,即接收到的字符中“1”的个数与定义(期望)不符,建立此标志,发出奇偶出错信息。 帧错误(Frame error) 接收到的字符不符合规定,如缺少停止位等,此时,设置此标志,发出帧出错信息。 溢出(丢失)错误(Overrun error) 在接收到新的字符后,由串行移位寄存器传送到并行接收寄存器,但此时原在并行接收寄存器中的数据并未被CPU取走,于是出现数据丢失现象,这就发生了溢出错误。 串行通信常使用专用控制芯片。常用的可编程通信接口芯片有Ins 8250和Intel的8251A等。,