载入中
<<  < 2007 - >  >>
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
公 告
载入中
我的分类
载入中
最新日志
载入中
最新评论
载入中
最新留言
载入中
Blog信息
载入中
链 接





   串行通信接口
marrow 发表于 2007-3-27 21:39:00  

第十二章 串行通信接口

12.1 串行通信的基本概念

12.1.1 串行通信的特点

  随着多微机系统的应用和微机网络的发展,通信功能越来越显得重要。这里所说的通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换。由于串行通信是把组成信息的各个码位在同一根传输线上,从低位到高位,逐位地、顺序地进行传送的通信方式,所用的传输线少,一个方向上只须一条传输线,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传送。对于那些与计算机相距不远的人-机交互设备和串行外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式进行近距离交换数据也很普遍。在实时控制和管理方面,采用多台微处理机组成分级分布控制系统中,各CPU之间的通信一般都是串行方式。所以串行接口是微机应用系统常用的接口。
  在并行通信中,传输线数目没有限制,一般除了数据线外还设置有通信联络控制线。例如,发送之前,先问收方是否"准备就绪"(READY)或是否正在工作即"忙"(BUSY);收方接收到数据之后,要向发方回送数据已经收到的"应答"(ACK)信号。但是,在串行通信中,如上所述,由于信息在一个方向上传输,只占用一根通信线,因此这根线既作数据线又作联络线,也就是说要在一根传输线上既传送数据信息,又传送联络控制信息,这就是串行通信的最首要的特点。那么,如何来识别在一根线上串行传送的信息流中,哪一部分是联络信号,哪一部分是数据信号。为解决这个问题,各种串行通信都有自己的一系列约定(协议)。因此,串行通信的第二个特点是它的信息格式有固定的要求,分异步和同步信息格式,与此相应,就有异步通信和同步通信两种方式。第三个特点是串行通信中在传输线上对信息的逻辑定义与TTL不兼容,因此,需要进行逻辑电平转换。

12.1.2 数据传送的方向

  串行通信中,数据通常是在两个站(如终端和微机)之间进行传送,按照数据流的方向可分成三种基本的传送模式,这就是全双工、半双工和单工。但单工目前已很少采用,下面仅介绍前两种模式。

   一.全双工(Full Duplex)

  当数据的发送和接收分为两套独立的资源同时进行,分别由两根不同的传输线同时传送时,通信双方都能在同一时刻进行发送和接收操作,这样的传送方式就是全双工制,如图12.1所示。在全双工方式下,通信系统的每一端都设置了发送器和接收器,因此,能控制数据同时在两个方向上传送。全双工方式无需进行方向的切换,因此,没有切换操作所产生的时间延迟(一般为毫秒级),这对那些不能有时间延误的交互式应用(例如远程监测和控制系统)十分有利。

  二.半双工(Half Duplex)

  当使用同一根传输线既作输入又作输出时,虽然数据可以在两个方向上传送,但显然通信双方不能同时收发数据,即它们只能依赖分时切换方向实现互相收发数据。这样的传送方式就是半双工制,如图12.2所示。采用半双工时,通信系统每一端的发送器和接收器,通过收/发开关接到通信线上,进行方向的切换,因此,会产生时间延迟。收/发开关实际上是由软件控制的电子开关。

图12.1 全双工

  目前多数终端和串行接口都有半双工模式的换向功能,也为全双工模式提供了两条独立的引脚。在实际使用时,有时并不需要通信双方同时既发送又接收,像打印机这类的单向传送设备,半双工就能胜任,也无需倒向。

图12.2 半双工

12.1.3 信号的调制与解调

  计算机的通信是要求传送数字信号,而在进行远程数据通信时,通信线路往往是借用现成的公用电话网,但是,电话网是为300~3400Hz间的音频模拟信号设计的,频带宽度有限,这对二进制数据的传输会引起高次谐波的严重衰减,致使二进制数据信号严重失真,为此在发送时需要对二进制信号进行调制,使其成为适合在电话网上传输的音频信号。在接收时,需要进行解调将音频信号还原成数字信号。
  采用调制器(Modulator)把数字信号转换为模拟信号,送到通信链路上去,而用解调器(Demodulator)再把从通信链路上收到的模拟信号转换成数字信号。大多数情况下,通信是双向的,调制器和解调器合在一个装置中,这就是调制解调器MODEM,如图12.3所示。可见调制器和解调器是进行数据通信所需的设备,因此把它叫做数据通信设备DCE或数传机(Data set)。一般,通信链路是电话线,它可以是专设线或者是交换线。

图12.3  调制与解调示意图

  调制解调器的类型比较多,有振幅键控(ASK),频移键控(FSK)和相移键控(PSK)。当波特率小于300时,频移键控(FSK)调制方式的基本原理是把"0"和"1"的两种数字信号分别调制成不同频率的两个音频信号,其原理如图12.4所示。
  两个不同频率的模拟信号,分别由电子开关S1、S2控制,在运算放大器的输入端相加,而电子开关由被传输的数字信号(即数据)控制。当信号为"1"时,使电子开关S1导通,送出一串频率较高的模拟信号f1,当信号为"0"时,使电子开关S2导通,送出一串频率较低的模拟信号f2,于是在运算放大器的输出端,就得到了调制后的两种频率的音频信号。

图12.4  频移键控(FSK)调制原理图

12.1.4 信息的检错与纠错

  串行数据在传输过程中,由于电噪声干扰而引起误码是难免的,这直接影响通信系统的可靠性,所以,对通信中差错控制能力是衡量一个通信系统的重要内容。我们把如何发现传输中的错误,叫检错。发现错误之后如何消除错误,叫纠错。在基本通讯规程中一般采用奇偶校验或方阵码检错,以反馈重发方式纠错。在高级通信控制规程中一般采用循环冗余码(CRC)检错,以自动纠错方法来纠错。
  方阵码检错技术是奇偶校验与"检验和"的综合。例如,7单位编码的字符后附1位奇偶位,以使整个字节的"1"的个数为偶数或者奇数。 若干个字符组成一个数据块,列成方阵,再纵向按位加产生一个单字节的检验字符并附加到数据块末尾。这一奇偶位 检验字符实际是所有字节"异或"的结果,反映了整个数据块的奇偶性。图12.5给出一个方阵检验字符的生成 示例。在接收时,数据块读出产生一个检验字符,和发送来的检验字符进行比较。如果两者不同,就表明有错 码,反馈重发。 这种方阵码对发生的奇数次或偶数次错误均可检验出,并有特定情况下的纠错能力。

图12.5 方阵检验字符生成原理

12.1.5 传输速率与传送距离

  一.波特率

  并行通信中,传输速率是以每秒传送多少字节(B / S)来表示。而串行通信中,传输速率在基波传输的情况下(不加调制,以其固有的频率传送)是用每秒钟传送的位数(bit/s)即波特率来表示。因此,1波特=1位/秒。
  最常用的标准波特率是110、300、1000、1200、2400、4800、9600和19200波特。CRT终端能处理9600波特的传输,打印机终端速度较慢,点阵打印机一般也只能以2400波特的速率来接收信号。
  通信线上所传输的字符数据是按位传送的,1个字符由若干位组成,因此每秒钟所传输的字符数--字符速率和波特率是两种概念。在串行通信中,所说的传输速率是指波特率,而不是指字符速率,两者的关系是:假如在某异步串行通信中传送1个字符,包括1个起始位,8个数据位,1个偶校验位,2个停止位,若传输速率是1200波特,那么,每秒所能传送的字符数是1200/(1+8+1+2)=100个。

  二.发送/接收时钟

  在串行传输过程中,二进制数据系列是以数字信号波形的形式出现的,如何对这些连续的波形定时发送出去或接收进来的问题就引出了发送/接收时钟的应用。
  在发送数据时,发送器在发送时钟(下降沿)作用下将移位寄存器的数据按位串行移位输出;在接收数据时,接收器在接收时钟(上升沿)作用下对接收数据位采样,并按位串行移入移位寄存器。可见,发送/收接时钟是对数字波形的每一位传送都要进行作用的,因此,发送/接收时钟的快慢直接影响通信设备发送/接收字符数据的速度。
  发送/接收时钟频率与波特率的关系:
  发/收时钟频率 =n*(发/收波特率 )
  发/收波特率=发/收时钟/n (其中n=1,16,64)
  因此,在实际应用中,可根据所要求的传输波特率及所选择的倍数n来确定发送/接收时钟的频率。
  例如:要求传输速率为1200波特,则
  当选择n=1时,发/收时钟频率=1.2kHz
  当选择n=16时,发/收时钟频率=19.2kHz
  当选择n=64时,发/收时钟频率=76.8kHz

  三.传输距离与传输速率的关系

  串行接口或终端直接传送串行信息位流的最大距离(当然,波形要不发生畸变)与传输速率及传输线的电气特性有关,传输距离是随传输速率的增加而减小。实际应用中,对远距离传送,一般都需加入通信设备调制解调器MODEM。

12.2 串行通信协议

  所谓通信协议是指通信双方的一种约定。约定中包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题作出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,它属于ISO的OSI七层参考模型中的数据链路层。
  目前,采用的通信协议有两类:异步协议和同步协议。同步协议又有面向字符(Character Oriented)和面向比特(Bit-Oriented)以及面向字节(Byte-Oriented计数三种,我们只讨论前两种。

12.2.1 起止式异步协议

  一.特点与格式

  起止式异步协议的特点是一个字符一个字符传输,并且以传送一个字符为基本周期,常称为一帧。在一帧中,传送一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。起止式一帧数据的格式如图12.6所示。每一个字符的前面都有一位起始位(低电平,逻辑值0),字符本身由5~7位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位,或一位半,或二位停止位,停止位后面是不定长度的空闲位,即可以接连不断地传送,也可无限期地停止或恢复传送。停止位和空闲位都规定为高电平(逻辑值1),这样就保证起始位开始处一定有一个下跳沿。
  从图中可以看出,这种格式若从字符数字流看去,字符之间的传送是异步的随机的,而对字符传送的内部是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议。
  传送时,以起始位为先导,数据的低位在前,高位在后,接着是奇偶校验位,最后是停止位,共有10~12位,每位占有的时间均等,称为时间 / 比特。

图12.6 起止式异步协议的帧格式

  二.起/止位的作用

   实际上,起始位是作为联络信号而附加进来的,当它变为低电平时,告诉收方传送开始。它的到来,表示下面接着是数据位来了,要准备接收。而停止位标志一个字符的结束,它的出现,表示一个字符传送完毕,这样就为通信双方提供了何时开始收发,何时结束的标志。
   传送开始之前,发收双方必须把所采用的起止式格式(包括字符的数据位长度,停止位位数,有无校验位以及是奇校还是偶校等)和数据传输速率作统一一致的约定。
   传送开始后,接收设备不断地检测传输线,看是否有起始位到来,当收到一系列的"1"(停止位或空闲位)之后,检测到一个下跳沿,说明可能是起始位出现,但要经过确认以排除电气干扰,一般是在检测到下跳沿之后半个时间 / 比特后再行检测,若仍为"0"电平即可确认为起始位。起始位经确认后,就开始接收所规定的数据位和奇偶校验位以及停止位。经过处理将停止位去掉,把数据位拼装成一个并行字节,并且经校验后,无奇偶错才算正确的接收一个字符。一个字符接收完毕,接收设备又继续测试传输线,监视"0"电平的到来和下一字符的开始,直到全部数据传送完毕。
   由上述工作过程可以看到,异步通信是按字符传输的,每传送一个字符,就用起始位来通知收方,以此来重新核对收发双方同步。若接收设备和发送设备两者的时钟频率略有偏差,只要偏差不超过1/2时间 / 比特,就不会错位,而且也不会因为偏差的累积而导致错位,加之字符之间的空闲位也为这种偏差提供一种缓冲,所以异步串行通信的可靠性高。但由于要在每个字符的前后加上起始位和停止位这样一些附加位,使得传输效率变低了,其携带实质性的信息只有约80%,因此,起止式协议一般用在数据速率较慢的场合(小于19.2kbit/S)。在高速传送时,一般要采用同步协议。

12.2.2 面向字符的同步协议

  一.特点与格式

  这种协议的典型代表是IBM公司的二进制同步通信协议(BSC),它的特点是一次传送由若干个字符组成的数据块,而不是只传送一个字符,并规定了10个特殊字符作为这个数据块的开头与结束标志以及整个传输过程的控制信息,它们也叫做通信控制字。由于被传送的数据块是由字符组成,故被称作面向字符的协议。协议的一帧数据格式如图12.7所示。

图12.7 面向字符同步协议的帧格式

  二.特定字符(控制字符)的定义

  由图可以看出,数据块的前、后都加了几个特定字符。SYN是同步字符(synchronous Character),每一帧开始处都有SYN,加一个SYN的称单同步,加两个SYN的称双同步。设置同步字符是起联络作用,传送数据时,接收端不断检测,一旦出现同步字符,就知道是一帧开始了。接着的SOH是序始字符(Start Of Header),它表示标题的开始。标题中包括源地址、目标地址和路由指示等信息。STX是文始字符(Start Of Text),它标志着传送的正文(数据块)开始。数据块就是被传送的正文内容,由多个字符组成。数据块后面是组终字符ETB(End of Transmission Block )或文终字符ETX( End Of Text)。其中ETB用在正文很长、需要分成若干个分数据块、分别在不同帧中发送的场合,这时在每个分数据块后面用组终字符ETB,而在最后一个分数据块后面用文终字符ETX。一帧的最后是校验码,它对从SOH开始直到ETX(或ETB)字段进行校验,校验方式可以是纵横奇偶校验或循环冗余校验码CRC。另外,在面向字符协议中还采用了一些其他通信控制字,它们的名称及其代码如表12.1所示。

表12.1 通信控制字符

 

  三.数据透明的实现

  面向字符的同步协议,不像异步起止协议那样,需在每个字符前后附加起始和停止位,因此,传输效率提高了。同时,由于采用了一些传输控制字,故增强了通信控制能力和校验功能。但也存在一些问题,例如,如何区别数据字符代码和特定字符代码的问题,因为在数据块中完全有可能出现与特定字符代码相同的数据字符,这就会发生误解。比如正文中正好有个与文终字符ETX的代码相同的数据字符,接收端就不会把它作数据字符处理,而误认为是正文结束,因而产生差错。因此,协议应具有将特定字符作为普通数据处理的能力,这种能力叫做"数据透明"。为此,协议中设置了转义字符DLE(Data Link Escape)。当把一个特定字符看成数据时,在它前面要加一个DLE,这样接收器收到一个DLE就可预知下一个字符是数据字符,而不会把它当作控制字符来处理了。DLE本身也是特定字符,当它出现在数据块中时,也要在它前面再加上另一个DLE,这种方法叫字符填充。字符填充实现起来相当麻烦,且依赖于字符的编码。正是由于以上的缺点,故又产生了新的面向比特的同步协议。

12.2.3 面向比特的同步协议

  一.特点与格式

  面向比特的协议中最有代表性的是IBM的同步数据链路控制规程SDLC(Synchronous Data Link Control),国际标准化组织ISO (International Standards Organization)的高级数据链路控制规程HDLC(High Level Data Link Control),美国国家标准协会(American National Standards Institute )的先进数据通信规程ADCCP ( Advanced Data Communications Control Procedure)。这些协议的特点是所传输的一帧数据可以是任意位,而且它是靠约定的位组合模式,而不是靠特定字符来标志帧的开始和结束,故称"面向比特"的协议。这种协议的一般帧格式如图12.8所示。

图12.8  面向比特同步协议的帧格式


  二.帧信息的分段

  由图12.9可见,SDLC/HDLC的一帧信息包括以下几个场(Field),所有场都是从最低有效位开始传送。
  1. SDLC/HDLC标志字符
  SDLC/HDLC协议规定,所有信息传输必须以一个标志字符开始,且以同一个字符结束。这个标志字符是01111110,称标志场(F)。从开始标志到结束标志之间构成一个完整的信息单位,称为一帧(Frame)。所有的信息是以帧的形式传输的,而标志字符提供了每一帧的边界。接收端可以通过搜索"01111110"来探知帧的开头和结束,以此建立帧同步。
  2.地址场和控制场
  在标志场之后,可以有一个地址场A(Address)和一个控制场C(Contro1)。地址场用来规定与之通信的次站的地址。控制场可规定若干个命令。SDLC规定A场和C场的宽度为8位。HDLC则允许A场可为任意长度,C场为8位或16位。接收方必须检查每个地址字节的第一位,如果为"0",则后边跟着另一个地址字节;若为"1",则该字节就是最后一个地址字节。同理,如果控制场第一个字节的第一位为"0",则还有第二个控制场字节,否则就只有一个字节。
  3.信息场
  跟在控制场之后的是信息场I(Information)。I场包含有要传送的数据,亦成为数据场。并不是每一帧都必须有信息场。即信息场可以为0,当它为0时,则这一帧主要是控制命令。
  4.帧校验场
  紧跟在信息场之后的是两字节的帧校验场,帧校验场称为FC(Frame Check)场, 校验序列FCS(Frame check Sequence)。SDLC/HDLC均采用16位循环冗余校验码CRC (Cyclic Redundancy Code),其生成多项式为CCITT多项式X^16+X^12+X^5+1。除了标志场和自动插入的"0"位外,所有的信息都参加CRC计算。 CRC的编码器在发送码组时为每一码组加入冗余的监督码位。接收时译码器可对在纠错范围内的错码进行纠正,对在校错范 围内的错码进行校验,但不能纠正。超出校、纠错范围之外的多位错误将不可能被校验发现 。

  三.实际应用时的两个技术问题

   1."0"位插入/删除技术
   如上所述,SDLC/HDLC协议规定以01111110为标志字节,但在信息场中也完全有可能有同一种模式的字符,为了把它与标志区分开来,所以采取了"0"位插入和删除技术。具体作法是发送端在发送所有信息(除标志字节外)时,只要遇到连续5个"1",就自动插入一个"0"当接收端在接收数据时(除标志字节)如果连续接收到5个"1",就自动将其后的一个"0"删除,以恢复信息的原有形式。这种"0"位的插入和删除过程是由硬件自动完成的,比上述面向字符的"数据透明"容易实现。
   2. SDLC/HDLC异常结束
   若在发送过程中出现错误,则SDLC/HDLC协议用异常结束(Abort)字符,或称失效序列使本帧作废。在HDLC规程中7个连续的"1"被作为失效字符,而在SDLC中失效字符是8个连续的"1"。当然在失效序列中不使用"0"位插入/删除技术。
   SDLC/HDLC协议规定,在一帧之内不允许出现数据间隔。在两帧信息之间,发送器可以连续输出标志字符序列,也可以输出连续的高电平,它被称为空闲(Idle)信号。

12.3串行接口标准

  在串行连接时要解决两个问题,一是计算机和外设之间双方要共同遵循的某种约定,这种约定称为物理接口标准,包括连接电缆的机械、电气特性、信号功能及传送过程的定义,它属于ISO'SOSI七层参考模型中的物理层。二是按接口标准设置计算机与外设之间进行串行通信的接口电路。本节先介绍几种接口标准,在下一节再讨论接口电路设计。

12.3.1 EIA-RS-232C接口标准

  RS-232C标准(协议)是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在0~20000bit/s范围内的通信。它最初是为远程通信连接数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。但目前已广泛用于计算机(更准确他说,是计算机接口)与终端或外设之间的近端连接。这个标准对串行通信接口的有关问题,如信号线功能、电气特性都作了明确规定。由于通信设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,已在目前微机串行通信接口中广泛采用。

  一.电气特性

  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-232C标准对逻辑电平的定义。对于数据(信息码):逻辑"1"(传号)的电平低于-3V,逻辑"0"(空号)的电平高于+3V;对于控制信号:接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3~+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在±(5~15)V之间。一般采用±12V。
  EIA-RS-232C与TTL转换:很明显,EIA-RS-232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同,因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA -RS-232C与TTL电路之间进行电平和逻辑关系的变换,实现这种变换的方法可用分立元件,也可用集成电路芯片。
  目前较广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到 EIA电平的转换,被称为该总线的发送器。而MC1489、SN75154芯片可实现EIA电平到TTL电平的转换,称为该总线的接收器。MAX232芯片可完成TTL-EIA双向电平转换,图12.9示出了1488和1489的内部结构和引脚。

图12.9  电平转换器MC1488/1489芯片

  MC1488的引脚(2),(4,5),(9,10)和(12,13)接TTL输入。引脚3,6,8,11输出端接EIA-RS232C,MC1489的1,4,10,13脚接EIA输入,而3,6,8,11脚接TTL输出。具体连接方法如图12.10所示。图中左边是微机串行接口电路中的主芯片通用异步接收发送器UART,它是TTL器件,右边是EIA-RS232C连接器,要求EIA电压。因此,RS-232C所有的输出、输入信号线都要分别经过MC1488和MC1489转换器,进行电平转换后才能送到连接器上去或从连接器上送进来。
  由于MC1488/1489要求使用±15V高压电源,不大方便,现在有一种新型RS-232转换芯片MAX232,可以实现TTL电平与RS-232电平转换。MAX232内部有电压倍增电路和转换电路,仅需+5V电源便可工作,使用十分方便。

图12.10  EIA-RS232C电平转换器连接图

  图12.11是MAX232内部逻辑框图,从图可知,一个MAX232芯片可连接两对收/发线。MAX232把UART的TxD和RxD端TTL/CMOS电平(0~5V)转换成RS-232的电平(+10~-10V)。

图12.11 MAX232内部逻辑框图

  二.机械特性

  1.连接器
  由于RS-232未定义连接器的物理特性,因此出现了DB-25,DB-15和DB-9各种类型的连接器,其引脚的定义也各不相同,使用时要特别注意。下面介绍两种连接器。
  ①PC和XT机采用DB25型连接器。虽然RS-232定义了25脚信号标准,但实际进行异步通信时,只需9个电压信号:2个数据信号,6个控制信号,1个信号地线。由于PC及XT机除了支持EIA电压接口外还支持20mA电流环接口,另需4个电流信号,故它们采用DB-25型连接器作为DTE与DCE之间通讯电缆的连接。DB-25型连接器的外形及信号分配如图12.12所示。
  ②AT机采用DB-9型连接器。由于AT机串行口取消了电流环接口,故采用DB9型连接器,其引脚及信号分配如图12.13所示。

图12.12 PC及XT配接DB-25型连接器   图12.13  AT配接DB-9型连接器

  从图12.13可知,AT机的DB-9型连接器的引脚信号分配与DB25型引脚信号完全不同。因此,若与配接DB-25型连接器的DCE设备连接,必须使用专门的电缆线,其对应关系如图12.14所示

图12.14  DB-9型(DTE)与DB-25型(DCE)之间的连接

  2.电缆长度
  RS-232C所能直接连接的最大物理距离为15m( 50英尺),通信速率低于20kbit/S。

  三.RS-232C的接口信号

  EIA RS-232C标准规定了在串行通信时,数据终端设备DTE和数据通信设备DCE之间的接口信号。所谓"发送"和"接收"是从数据终端设备的立场来定义的。表12.2给出了RS-232C信号的名称、引脚号及功能。
  从表12.2可以看出,RS-232C标准接口有25条线,4条数据线,11条控制线,3条定时线,7条备用和未定义线,常用的只有9根,它们是:
  1.联络控制信号线
  数据装置准备好(Data set ready-DSR)--有效时(ON状态),表明MODEM处于可以使用的状态。
  数据终端准备好(Data set ready-DTR)--有效时(ON状态),表明数据终端可以使用。
  这两个信号有时连到电源上,一上电就立即有效。目前有些RS--232C接口甚至省去了用以指示设备是否准备好进行发送或接收数据的这类信号,认为设备是始终都准备好的。可见这两个设备状态信号有效,只表示设备本身可用,并不说明通信链路可以开始进行通信了,能否开始进行通信要由下面的控制信号决定。
  这对RTS/CTS请求应答联络信号是用于半双工MODEM系统中作发送方式和接收方式之间的切换,在全双工系统中,因配置双向通道,故不需RTS/CTS联络信号,使其变高。

表12.2 RS-232接口信号

 

  请求发送(Request to send-RTS)--用来表示DTE请求DCE发送数据,即当终端要发送数据时,使该信号有效(ON状态),向MODEM请求发送。它用来控制MODEM是否要进入发送状态。
  允许发送(Clear to send-CTS)--用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。当MODEM已准备好接收终端传来的数据,并向前发送时,使该信号有效,通知终端开始沿发送数据线TxD发送数据。
  接收线信号检出(Received Line signal detection-RLSD)--用来表示DCE已接通通信链路,告知DTE准备接收数据、当本地的MODEM收到由通信链路另一端(远地)的MODEM送来的载波信号时,使RLSD信号有效,通知终端准备接收,并且由MODEM将接收下来的载波信号解调成数字量数据后,沿接收数据线入口送到终端,此线也叫数据载波检出(Data Carrier detection-DCD )线。
  振铃指示(Ringing-RI)--当MODEM收到交换台送来的振铃呼叫信号时,使该信号有效(ON状态),通知终端,已被呼叫。
  2.数据发送与接收线
  发送数据(Transmitted data-TxD)--通过TxD线终端将串行数据发送到MODEM,(DTE-DCE)。
  接收数据(Received data-RxD)--通过RxD线终端接收从MODEM发来的串行数据,(DCE-DTE)
  3.地线
  有两根地线SG、PG--信号地和保护地信号线,无方向。
  上述控制信号线何时有效,何时无效的顺序表示了接口信号的传送过程。例如,只有当DSR和DTR都处于有效(ON)状态时,才能在DTE和DCE之间进行传送操作。若DTE要发送数据,则预先将RTS线置成有效(ON)状态,等CTS线上收到有效(ON)状态的回答后,才能在TxD线上发送串行数据。这种顺序的规定对半双工的通信线路特别有用,因为半双工的通信线路进行双向传送时,有一个换向问题,只有当收到DCE的CTS线为有效(ON)状态后,才能确定DCE已由接收方向改为发送方向了,这时线路才能开始发送。

  四.信号线的连接

  (1) 远距离与近距离通信时,所使用的信号线是不同的,所谓近距离是指传输距离小于15m的通信。在15m以上的远距离通信时,一般要加调制解调器MODEM,故所使用的信号线较多。此时,若在通信双方的MODEM之间采用专用电话线进行通信,则只要使用2~8号信号线进行联络与控制,如图12.15所示。若在双方MODEM之间采用普通电话交换线进行通信,则还要增加RI(22号)和DTR(20号)两个信号线进行联络,如图12.16所示。

图12.15  采用MODEM和专用电话线通信时信号线的连接

  (2)近距离通信时,不采用调制解调器MODEM(称零MODEM方式),通信双方可以直接连接,这种情况下,只需使用少数几根信号线。
   最简单的情况,在通信中根本不要RS-232C的控制联络信号,只需使用3根线(发送线、接收线、信号地线)便可实现全双工异步串行通信,如图12.18所示。图中的2号线与3号线交叉连接是因为在直连方式时,把通信双方都当作数据终端设备看待,双方都可发也可收。在这种方式下,通信双方的任何一方,只要请求发送RTS有效和数据终端准备好DTR有效就能开始发送和接收。

图12.16  采用MODEM和电话网通信时信号线的连接

  如果想在直接连接时,而又考虑RS-232C的控制信号则采用零MODEM方式的标准连接方法,其通信双方信号线的安排如图12.18所示。

图12.17  零MODEM方式的最简单连接     图12.18  零MODEM方式的标准信号连接

   从图12.13可以看到,RS-232C接口标准定义的所有信号线都用到了,并且是按照DTE和DCE之间信息交换协议的要求进行连接的,只不过是把DTE自己发出的信号线回送过来,当作对方DCE发来的信号,因此,又把这种连接称为双交叉环回接口。
   双方握手信号关系如下(注:甲方乙方并未在图中标出):
   ①甲方的数据终端准备好(DTR)和乙方的数据设备准备好(DSR)及振铃信号(RI)两个信号互连。这时,一旦甲方的DTR有效,乙方的Rl就立即有效,产生呼叫,并应答响应,同时又使乙方的DSR有效。这意味着,只要一方的DTE准备好,便同时为对方的DCE准备好,尽管实际上,对方DCE并不存在。
   ②甲方的请求发送(RTS)及清除发送(CTS)自连,并与乙方的数据载体检出(DCD)互连,这时,一旦甲方请求发送(RTS有效),使立即得到发送允许(CTS有效),同时使乙方的DCD有效,即检测到载波信号,表明数据通信链路已接通。这意味着只在一方的DTE请求发送,同时也为对方的DCE准备好接收(即允许发送),尽管实际上对方DCE并不存在。
   ③双方的发送数据(TxD)和接收数据(RxD)互连,这意味着双方都是数据终端设备 (DTE),只要上述的握手关系一经建立,双方即可进行全双工传输或半双工传输。

  五.RS-232C按口标准最大传输距离的说明

  RS-232C标准规定,若不使用MODEM,则在码元畸变小于4%的情况下,DTE和DCE 之间最大传输距离为15m(50英尺)。可见这个最大的距离是在码元畸变小于4%的前提下给出的。为了保证码元畸变小于4%的要求,接口标准在电气特性中规定,驱动器的负载电容应小于2500pF。例如,采用每0.3m(约1英尺)的电容值为40~50 pF的普通非屏蔽多芯电缆作传输线,则传输线的长度,即传输距离为:

L = 2500 pF/170 pF/m ≈ 15m

  然而,在实际应用中,码元畸变超过4%,而为10%~20%时,也能正常传输信息,这意味着驱动器的负载电容可以超过2500pF,因而传输距离可大大超过15m,这说明了RS232C标准所规定的直接传送最大距离为15m是偏于保守的。

12.3.2  RS-422、RS-423接口标准

  如上所述,EIA-RS-232C接口标准的直连距离为15m和小于20kbit/S的数据速率。为了实现在更大的距离和更高的速率上直接连接,EIA在RS-232C的基础上,制订了更高性能的接口标准。

  一.RS-422A标准

  RS-422A标准是一种以平衡方式传输的标准,所谓平衡,是指双端发送和双端接收,所以,一个方向传送信号要用两条线AA'和BB',发送端和接收端分别采用平衡发送器和差动接收器,如图12.19所示。这个标准的电气特性对逻辑电平的定义是根据两条传输线之间的电位差值来决定,当AA'线电平比BB'线电平低-2V时表示逻辑"1";当AA'线电平比BB'线电平高+2V时表示逻辑"0"。

图12.19(1) RS-422A标准传输线连接    图12.19(2) 噪声对平衡信号和不平衡信号的影响

  很明显,这种方式和RS-232C采用单端接收器和单端发送器,只用一条信号线传送信息,并且根据该信号线上电平相对于公共的信号地电平的大小来决定逻辑的"1"和"0"是不相同的。RS-422电路由发送器,平衡连接电缆,电缆终端负载和接收器组成。它通过平衡发送器把逻辑电平变换成电位差,完成始端的信息传送;通过差动接收器,把电位差变成逻辑电平,实现终端的信息接收。RS-422标准由于采用了双线传输,大大增强了抗共模干扰的能力,差分式接收可将因地电位不同而造成的共模干扰滤除。如图12.9(2)所示。因此最大数据速率可达10Mbit/ s(传送15m时)。若传输速率降到90kbit/s时,则最大距离可达1200m,该标准规定电路中只许有1个发送器,可有多个接收器。该标准允许驱动器输出为±2V~±6V,接收器输入电平可以低到±200mV。
  为了实现RS-422A标准的连接,许多公司推出了平衡驱动器/接收器集成芯片,如 MC3487/3486、SN75174/75175等。
  例如,在某微机远距离水位自动监测系统中,采用MC3487和MC3486分别作为平衡发送器和差动接收器,传输线采用普通的双绞线,在零MODE方式下数据速率为8kbit/s时,传送距离达到了1.5km。MC3486和MC3487的连接,如图12.20所示。

图12.20  RS-422A平衡式接口电路图

  二.RS-423A标准

  RS-423A标准是非平衡方式传输的,即单端线传送线信号,规定信号参考电平为地,这一点与RS-232C兼容。该标准规定电路中只许有1个单端发送器,但可有多个接收器,接收器采用平衡接收器。因此,允许在发送器和接收器之间有一个地电位差,如图12.21所示,标准规定的逻辑"1"状态必须超过4V,但不能高于6V;逻辑"0"状态必须低于-4V,但不能低于-6V。RS423A标准由于采用差动接收,提高了抗共模干扰的能力,因而也可达到比RS-232C更大的传送距离和更高的数据速率,当传输距离为90m时,最大数据速率可达100kbit/s,若降至lkbit/s时,传输距离为:1200m。

图12.21  RS-423A标准传输线的连接

12.3.3 RS485接口标准

  一.特点

  它与RS-422A一样,也是一种平衡传输方式的串行接口标准,它和RS-422A兼容,并且扩展了RS-422A的功能。两者主要差别是,RS-422A只许电路中有一个发送器,而RS-485标准允许在电路中可有多个发送器,因此,它是一种多发送器的标准。RS-485并且允许一个发送器驱动多个负载设备,负载设备可以是被动发送器、接收器或收发器组合单元。RS-485的共线电路结构是在一对平衡传输线的两端都配置终端电阻,用于抑制由于长线传输效应造成的终端反射。其发送器、接收器、组合收发器可挂在平衡传输线上的任何位置,实现在数据传输中多个驱动器和接收器共用同一传输线的多点应用,其配置如图12.22所示。
  RS-485标准抗干扰能力强,传输速率高,传送距离远。采用双绞线,不用MODEM的情况下,在100kbit/s的速率时,可传送的距离为1.2km,若速率降到9600bit/s,则传送距离可达15km。它允许的最大速率可达10Mbit/s传送15m)。RS-485允许平衡电缆上连接32个发送器/接收器对,目前已在许多方面得到应用,尤其是在多点通信系统中,例如以半双工通信的多站互联通信网以及工业集散分布系统等。很多智能仪表自带RS-485接口,很容易联网构成分布式系统。商业POS收款机和考勤机的联网中用得很多,是一个很有 发展前途的串行通信接口标准。

图12.22  RS-423A标准传输线的连接

  二.RS-485收发器芯片MAX485/491

  为了实现RS-485标准串行传送,可采用大规模集成芯片,如MAXIM公司的MAX485/491。下面对芯片进行讨论。
  1.外部引脚功能定义
  MAX491和MAX485的引脚及其连接如图12.23(1)(2)所示。各引脚的功能见表12.3 。

图12.23(1) MAX491外部引脚定义

图12.23 (2)MAX485外部引脚定义

表12.3 MAX485 / 491 引脚功能定义

 

  2.逻辑功能
  芯片逻辑功能如表12.4所示。

表12.4  RS-485/491逻辑定义


 

  3.在网络中的连接
  芯片在半双工和全双工RS-485联网的联接如图12.24(1)(2)所示。

  三. RS-485的应用举例

  某商用电子收款机的联网系统中,由16台收款机组成一个总线型结构网络,其中一台主收款机通过RS-485总线与16台从收款机连接,实现一点对多点通信。主收款机同时通过RS-232C总线与PC系列机相连接,实现与上位机的通信,其结构框图如图12.25所示。
  图中RS-485总线在一般情况下采用普通双绞线就可以了,当环境有强干扰或主收款机 与从收款机相距太远时,可以采用具有屏蔽的双绞线。

图12.24(1)半双工RS-485联网图


图12.24(2)双工RS-485联网图

12.3.4 几种标准的比较

  表12.5给出了RS-232C、RS-423、RS-422和RS-485几种标准的工作方式、直接传输的最大距离、最大传输数据速率、信号电平以及传输线上允许的驱动器和接收器的数目等特性参数,供读者进行比较和选用。

图12.25 收款机RS-485网络结构图

表12.5  几种标准的比较

 

12.4串行通信接口

  本节首先讨论串行通信接口的任务,以及对串行接口芯片INS 8250进行介绍,然后,讨论PC之间的通信接口设计。

12.4.1 串行通信接口的基本任务

  (1)进行串、并转换。串行传送数据是一位一位依次顺序传送的,而计算机处理数据是并行的。所以,当数据由计算机送至数据终端时,首先把并行数据转换为串行数据再传送;而在计算机接收由终端送来的数据时,要先把串行数转换为并行数才能送入计算机处理。
  (2)实现串行数据格式化。从CPU来的并行数据转换成串行数据后,接口电路要能实现不同通信方式下的数据格式化。异步通信方式下,发送时自动生成和在接收时自动去掉启/停位。面向字符的同步方式下,接口所做的数据格式化主要是在传送的数据块前面加同步字符。
  (3)可靠性检验。在发送时,接口电路自动生成奇偶校验位;在接收时,接口电路检查字符的奇偶校验位或其他较验码,以确定是否发生传送错误。
  (4)实施接口与DCE之间联络控制。上节提到,计算机与通信设备之间进行通信,是通过计算机的串行接口实现的,故接口电路应提供符合接口标准规定的控制信号线,以与MODEM进行联络与实现控制。

12.4.2 串行接口电路的组成

  随着大规模集成电路技术的发展,通用的可编程序的同步和异步接口芯片种类越来越多,如表12.6所示。它们的基本功能是类似的,都能实现上面提出的串行通信接口基本任务,且都是可编程的。采用这些芯片为核心的串行通信接口,电路结构比较简单,只需附加地址译码电路,波特率发生器以及EIA与TTL电平转换器就可以了。当然,还有许多工作要做,例如面向字符的同步协议中,如何实现"数据透明",需要在软件中完成。下面将讨论采用接口芯片设计串行接口的例子。

表12.6 部分串行接口芯片及其功能

 

12.5 用INS 8250/16550组成的串行接口

  PC/XT异步通信适配器包括RS-232C标准的电压接口和20mA电流环路的电流接口,它是微机与微机、MODEM、外设之间进行异步通信的接口,应用广泛。我们先从微机系统的角度来分析它的工作原理及组成,以便对串行接口电路有一个完整的认识。适配器的硬件核心部分是INS8250芯片,INS16550与INS8250完全兼容,将作重点讨论。然后,用PC与PC之间通信的例子来说明适配器的编程使用。

12.5.1 异步通信适配器的组成

  异步通信适配器由串行接口芯片INS8250、EIA-TTL电平转换器SN75150、75154及I/O地址译码电路三个主要部分组成,如图12.26所示。

  一.电平转换

  从图可以看出,8250到连接器,和连接器到8250的信号线是分别通过了电平转换器 SN75150和75154才送到对方的,以此实现电平转换。

  二.地址译码电路

  根据系统对适配器的地址空间分配,占用系统地址总线A0~A9,其中高位地址(A3~A9)经译码器U2产生选片信号,送到8250的,低位地址(A0~A2)直接送到8250,以作芯片内部寄存器选择。从图12.26可以看出,I/O地址译码操作是由8输入端与非门U2、与非门及反相器U3完成的。
  由于DOS已考虑到系统中可使用两块适配器板,故异步适配器的口地址有两个,由跳接开关U15的J10和J12端子进行切换。
  实际上只要对地址位A8进行改变,也就是通过U15的J10和J12使A8反相还是不反相就可进行切换。如下表所示。

  

  所以,在ROM一BIOS串行通信口功能调用时,一定要给出适配器的口地址分配参数0或1,0表示地址是3F8H~3FFH;1表示口地址是2F8H~2FFH。
  两块适配器所产生的中断请求也是经跳接开关U15的J9和J11端子进行转接的。当U15的J9接通时,适配器产生的中断请求信号为IRQ3;而U15的J11接通时,其中断请求信号为IRQ4。
  从译码器U2的输入端可以看出,只有当AEN信号为低电平时,也就是当CPU占用总线控制权时,U2才能输出低电平,去选中8250芯片,这说明异步通信适配器不能以DMA方式传送数据。
  对于串行通信接口芯片8250,由于它比较复杂,下面作专门讨论。

图12.26  PC / XT异步通信适配器电路

12.5.2 INS 8250的外部特性与编程结构

  INS 8250是通用异步收发器UART,只适合作异步起止式协议接口电路。8250的外部引脚及内部逻辑如图12.27所示(图12.27所示外部引脚括号内的数字是芯片引脚序号)。
  8250的引脚信号线基本上可分成两大类,与CPU系统总线相连的信号和与通信设备连接的信号,除8根并行数据线D0~D7外,还有如下信号:

   一.地址控制

  当选片信号CS0=1,CS1=1,=0时,8250接受CPU访问,并由A0~A2决定所访问的内部寄存器。地址选通信号为低电平时,锁存CS0、CS1、以及A0~A2的输入状态,保证读写操作期间的地址稳定,直到为低电平时,才允许这些地址选择信号改变。确认在对芯片进行读写时,若不会出现地址不稳定现象,则不必锁存,而将输入脚接地。引脚CSOUT(当CS0=1、CS1=1、=0时,CSOUT=1)为片选输出信号,通常并不需要,因而悬空。

图12.27  INS 8250的外部引脚及编程结构明细框图

   二.读写控制

   8250的读写控制信号有两对,每对信号作用完全相同,只不过是有效电平不同而已。在8250被选中时,数据输入选通信号DISTR(高电平有效)和(低电平有效)中有一个信号有效,CPU就从被选择的内部寄存器中读出数据;而数据输出选通信号DOSTR或有效时,CPU就将数据写入被选择的寄存器。PC/XT异步适配器中,采用低电平有效,相连,连接,而DISTR和DOSTR接地封锁。8250的(数据总线)驱动器禁止信号DDIS引脚,在CPU从8250读取数据时为低电平,其他时间为高电平,禁止外部收发器对系统总线的驱动,PC/XT异步适配器未使用此信号。

   三.中断控制和复位控制

     8250具有中断控制和中断优先权判决能力,它的中断请求引脚INTRPT在满足一定条件下(如接收数据准备好,发送保持寄存器空,以及允许中断时)变成高电平,产生中断请求。输出1(OUT1)和输出2(OUT2)是由用户通过编程使其有效的两个输出引脚,PC/XT异步适配器中,使用OUT2来控制中断请求信号INTRPT的输出。在系统复位时,RESET信号送至8250的主复位端MR,使8250复位。

   四.时钟与传送速率控制

   外部晶体振荡电路产生的1.8432MHz信号送到8250的XTAL1端,作为8250的基准工作时钟。XTAL2引脚是基准时钟信号的输出端,可用作其他功能的定时控制。外部输入的基准时钟,经8250内部波特率发生器(分频器),分频后产生发送时钟,并经引脚输出。8250的接收时钟引脚RCLK可接收由外部提供的接收时钟信号。若采用8250芯片内部的发送时钟作为接收时钟,则只要将RCLK引脚和引脚直接外连即可,PC/XT异步适配器就是如此。

   五.通信设备之间的信号

   有8个信号,其中6个控制信号  、 、 、 、 和RI,2个串行数据信号SOUT/SIN。它们的功能与定义和RS-232C标准相同,不再讨论。

12.5.3  8250内部寄存器及其编程方法

  8250内部有10个可访问的寄存器,由于8250芯片只有3根地址线A0~A2,也就是只能产生8个寄存器选择地址,所以其中必有两个口地址为两个寄存器共用。为此,8250内部结构已指定,①发送保持寄存器(THR)和接收缓冲寄存器(RBR)共用一个口地址,而且是最低地址号,以"写"访问THR,以"读"访问RBR,以示区别。②除数寄存器的除数值分高低两个字节存放,它的低字节DLL和高字节DLH寄存器使用的两个口地址与别的寄存器相重。为了识别,专门在通信线路控制器中设置了一个除数寄存器访问允许位DLAB,当要访问除数寄存器时,必须使DLAB置1。若要访问其他寄存器时,则必须使DLAB置0。具体口地址分配如表12.7所示。图12.27中每个寄存器的右侧也表明了各自的口地址分配情况。

表12.7 8250内部寄存器地址

 

  一.通信线路控制与通信线路状态寄存器

  通信线路控制器(LCR)主要用来指定异步通信数据格式,同时它的最高位DLAB用来指定允许访问除数寄存器。它的内容不仅可以写入而且还是可读,LCR的各位意义如图12.27所示。
  D0D1位:字长选择,指定发送和接收字符的位数。
  WLS1WLS0=00,为5位;WLSIWLS0=01,为6位;WLS1WLS0=10,为7位;
  WLS1WLS0=11,为8位。
  D2位:停止位选择,指定发送和接收的停止位位数。
  STB=0,为1位;STB=1,为1.5位(字符长为5位时);或STB=1,为2位(字符长度为6,7,8位时)。
  D3位:奇偶校验允许,指定是否要奇偶校验。
  PEN=0,不要校验;PEN=1,要校验。
  D4位:偶校验选择,指定是要偶校验吗?
  EPS=0,要奇校验;EPS=1,要偶校验。
  D5位:附加奇偶标专位选择。
  SP=0,不附加;SP=1,附加1位。
  D6位:中止设定。指定发正常信号还是连续发空号(中止信号)。
  SB=0,正常;SB=1,中止。
  D7位:除数寄存器访问允许。
  DLAB=1,访问除数寄存器;DLAB=0,访问其他寄存器。
  其中位5是SP(STICK PARITY)附加奇偶标志位选择位。当PEN=1(有奇偶校验)时,若SP=1,则说明在奇偶校验位和停止位之间插入了一个奇偶标志位,这种情况下,若采用偶校验,则这个标志为逻辑"0",若采用奇校验,则这个标志为逻辑"1"。选用这一附加位的作用是发送设备把采用何种奇偶校验方式也通过数据流告诉接收设备。显然,在收发双方已约定奇偶校验方式的情况下,就不需要这一附加位并使SP=0。位6是SB(SET BREAK)设置中止方式选择位,若SB位置1,则发送端连续发送空号(逻辑"0"),当发空号的时间超过一个完整的数据字传送时间,接收端就视发送设备已中止发送。此时,接收设备发送中断请求,由CPU进行中止处理。
  例如,设置发送数据字长为8位,2位停止位,偶校验,其程序段为:
    MOV  DX,3FBH     ;LCR口地址
    MOV  AL, 00011111B   ;LCR的内容,数据格式参数
    OUT DX,AL
  通信线路状态寄存器(LSR)用来向CPU提供数据接收和发送时的状态。这些状态可以被CPU用查询方式获得,也可让它们以中断请求的方式主动向CPU报告。对LSR不仅可读,而且可写(除位6外),写LSR是为了人为地设置某些错误状态,供系统自检时使用。LSR的各位含义如图12.27所示。
  D0位:接收数据准备好(接收缓冲器满)。
  DR=1,指示接收器已接收到一个数据字符,并且接收移位寄存器的内容已传到接收缓冲器,即接收数据准备好;当CPU从接收缓冲器读取1个数据时,DR置0。
  D1~D3位:这三位都是出错指示位。
  OE=1,指示接收缓冲器的输入字符未取走,8250又接到新输入的数据,造成数据丢失错误。
  PE=1,指示被接收的数据有奇偶错。
  FE=1,指示接收的位流中停止位有错,称为数据格式错。
  D4位:中止识别指示。
  BI=1,指示发送设备进入中止状态;发送端发送正常时,BI=0。
  D1~D4这4位均是错误状态,只要其中有一位置1,在中断允许的情况下,就发出接收数据线路状态中断。当CPU读取它们的状态时,自动清零,复位。
  D5位:发送保持器空。
  THRE=1,指示数据从发送保持寄存器送到发送移位寄存器;当数据写入发送保持器时,THRE置0。
  D6位:发送移位寄存器空(只读)。
  TSRE=1,指示数据从发送移位寄存器送到发送数据线上;当发送保持寄存器的内容被送入发送移位寄存器时,TSRE置0。
  接收数据准备好DR和发送保持寄存器空THRE这两位是串行接口最基本的标志位,它们决定了CPU能不能向8250进行读写操作,只有当DR=1时,CPU才能读数;只有当THRE=1时,才能写数。
  下面是利用线路状态寄存器的内容进行收发处理的程序段:
    STRAT:
    MOV  DX,3FDH     ;LSR口地址
    IN  AL,DX        ;读取LSR的内容
    TEST  AL, 00011110B   ;检查有无数据接收错误(D1~D4位)
    JNZ  ERR        ;有错,转出错处理
    TEST  AL,01H      ;无错,再查接收数据是否准备好,DR=1?
    JNZ  RECEIVE      ;已准备好,则转接收程序
    TEST  AL ,20H      ;未准备好,再查发送保持寄存器是否空 ;THRE=1?
    JNZ  TRAS        ;已空,则转发送程序
    JMP  STRAT        ;不空,循环等待
    ERR: ……
    TRANS: ·····
    RECEIVE: ······

  二.调制解调控制(MCR)及状态寄存器(MSR)

  这两个寄存器用于发送和接收时8250与通信设备之间的联络与控制。MODEM控制寄存器MCR用来设置对MODEM的联络控制信号和芯片自检,而MODEM状态寄存器用来检测和记录来自MODEM的联络控制信号及其状态的改变。两个寄存器的各位定义如图12.27所示。
  对于这两个寄存器的RTS、DTR、CTS、DSR、R1、RLSD以及OUT1、OUT2各位的定义前已述及,不再说明。现对MCR的位4(LOOP)的功能及使用方法加以说明。LOOP是供8250本身自检诊断而设置的。当这位置"1"时,8250处于诊断方式,在这种方式下,8250芯片内部实现自问自答,进行联络,并且SIN引脚与芯片内部逻辑脱钩,发送器的移位输出端自动和接收器的移位输入端接通,形成"环路"进行自发自收的操作。在正常通信时,LOOP位置"0"。
  例如,若要使MCR的DTR RTS有效,OUT1 OUT2以及LOOP无效,则可用下列程序段:
    MOV  DX,3FCH     ;MCR口地址
    MOV  AL, 00000011B   ;MCR的控制字
    OUT  DX,AL
  若要自发自收进行诊断,则程序段为:
    MOV  DX,3FCH     ;MCR口地址
    MOV  AL,00010011B   ;LOOP位置"1"
    OUT DX,AL
  MSR的低4位表示来自MODEM联络控制信号状态的改变,在CPU读MSR时,把这些位清0,如果其中△CTS、△DSR、△RLSD、△RI这4位当中某一位置"1",则说明在上次CPU读取MODEM状态寄存器(MSR)之后,状态寄存器的相应位RTS、DSR、RLSD、RI发生了改变,也就是来自MODEM的联络控制信号的逻辑状态发生了变化,信号由无效变为有效,或相反。△RI="1"时,表示MODEM来的RI信号由逻辑"1"状态变为逻辑"0"状态(由接通到断开)。MSR的D0~D3中的任意一位置"1",在中断允许时(IER中D3=1),均产生MODEM状态中断。MSR的高4位,分别表示收到了来自MODEM的控制信号,供CPU进行处理。

  三.中断识别寄存器(IIR)和中断允许寄存器(IER)

  8250具有很强的中断管理能力,内部设有4个中断优先级。它们的优先级顺序排列是:接收数据出错中断,接收缓冲器满中断,发送保持寄存器空中断,以及来自MODEM的控制信号状态改变的中断。为了具体识别究竟是哪种事件引起的中断(即中断源),8250内部设置了中断识别寄存器IIR。它保存着正在请求中断的优先级最高的中断类型编码,直到该中断请求被CPU响应并服务之后,才接受其他的中断请求。IIR是只读寄存器,它的内容随中断源而改变。最高5位总是零。具体格式如图12.27所示。
  D0位:未决中断指示IP。
  IP=0,表示有尚待处理的中断;IP=1,表示无中断产生。
  D1D2位:中断类型标识ID1ID2。表示申请中断的中断源的中断类型编码。如图12.27所示。
  中断源提出的中断请求被允许还是被禁止,由中断允许寄存器IER控制,只要相应位写"0",就禁止中断请求,写"1"就允许中断请求。其格式如图12.27所示。
  在编写中断处理程序时应注意,若同一时间内允许有一个以上中断请求,则在处理完高一级的中断之后,中断返回之前一定要检查中断识别寄存器IIR的D0位IP是否为0,即是否尚有未被处理的中断源,否则,会造成某些中断不响应。异步通信适配器上的中断允许控制除了8250的IER之外,还使用8250的OUT2引脚,见图12.26)控制INTRPT是否送往CPU,因此,OUT2作为异步适配器中断允许总控制信号。

  四.除数锁存器(DLL/DLH)

  8250芯片串行数据传输的速率是由除数寄存器控制的。外接的1.8432MHZ基准时钟,通过除数寄存器给定的分频值,在8250内部产生不同的波特率,通过BOUDOUT引脚输出到RCLK,控制收发传输速率。除数(即分频值)的计算公式是:除数=1843200 / (16×波特率)。表12.8列出了除数与波特率的对应关系,供用户选择使用。8250内部设置两个除数寄存器DLL/DLH,在初始化时将除数分低高两个字节分别写入DLL和DLH。

表12.8 波特率与除数对照表

 

  例如,若选取波特率为2400,则除数寄存器相应的除数值为00H(高8位)和30H(低8位),其装入程序段为:
    MOV  DX,3F8H  ;置LCR口地址
    MOV  AL,80H
    OUT  DX,AL
    MOV  DX,3F8H  ;DLL的口地址
    MOV  AL,30H  ;低字节除数
    MOV  DX,3F9H  ;DLH的口地址。
    MOV  AL, 00H   ;高字节除数
    OUT  DX,AL

  五.发送保持寄存器(THR)和接收缓冲寄存器(RBR)

  发送时,CPU首先将待发送的字符写到8250的发送保持寄存器THR,然后进入发送移位寄存器,在发送时钟的作用下,从SOUT引脚输出。一旦THR的内容送到发送移位寄存器TSR后,THR变空,就使LSR的THRE位置"1",产生中断请求,要求CPU发送下一个字符。CPU向THR写入一个字符后,THRE置"0"。如此重复,直到全部数据发送完毕。
  接收时,串行数据在接收时钟作用下,从SIN引脚以串行移位的方式输入到接收移位寄存器RSR,然后由RSR并行输入到接收缓冲寄存器RBR,一旦RBR变满,就使LSR的DR位置"1"产生中断请求,要求CPU读取数据字符。CPU从RBR读取一个字符后,DR置"0"。如此重复,直到全部数据接收完毕。

阅读全文 | 回复(4) | 引用通告 | 编辑
  • 标签:串行通信接口 
  •    Re:串行通信接口
    Jermaine618(游客)发表评论于2007-8-24 11:25:00  
    Jermaine618(游客)您好!您的文章很精彩!可惜文中插图无法浏览!您可以个我发一份您的原文吗?
    个人主页 | 引用 | 返回 | 删除 | 回复
       Re:串行通信接口
    Jermaine618(游客)发表评论于2007-8-24 11:27:00  
    Jermaine618(游客)如果可以那太感谢您了!我的邮箱是alto618@yahoo.com.cn!再次感谢您!
    个人主页 | 引用 | 返回 | 删除 | 回复
       Re:串行通信接口
    救急啊(游客)发表评论于2008-5-30 3:38:00  
    救急啊(游客)我也想要一份 方便的话 谢谢了 我的邮箱是wozhiainizhangchen@yahoo.com.cn
    个人主页 | 引用 | 返回 | 删除 | 回复
       Re:串行通信接口
    太好了(游客)发表评论于2008-7-9 17:45:00  
    太好了(游客)给我也发一份吧,太经典了,可惜没有图啊!maygbm@163.com
    个人主页 | 引用 | 返回 | 删除 | 回复
    发表评论:
    载入中


    Powered by Oblog.