串行接口的一个明显优点是接口与外部设备之间的连接线少,因此,它主要用于远距离通信,或虽然连接距离比较近,但工作速度很低的外部设备,如键盘、鼠标等。
  由于处理机内部通常是以并行方式传送和存储数据的,因此,串行接口的一个基本功能就是要完成数据的串并行转换。下面,首先介绍串行通信方式,然后再介绍串行接口。
  串行通信分为异步通信方式和同步通信方式两种。图6.18是异步串行通信的数据格式,它以字符为单位传送,每传送一个字符为一帧,一帧由三部分组成:1个起始位、8个数据  位(包括1个校验位)和1至2个停止位(有1位、1.5位和2位三种方式)。

  采用异步串行通信方式时,接口接收一个字符的过程如下:
  (1)没有数据传送,即"空闲"时,传输线上为"1"状态。
  (2)当传输线上出现"0"信号时,表示检测到起始位。为了避免把传输线上的干扰信号误认为起始位,当接口检测到传输线上的"0"信号时,要延迟一段时间之后再次检测,经多次检测仍然为"0"信号时,才能确认为起始位。接口发现起始位之后,就进入接受状态。
  (3)接收数据位和校验位。接收方按照双方事先约定的频率定时采样传输线,并通过移位寄存器把串行数据转换成并行数据。
  (4)检查停止位,进行帧定界,确定一帧传输结束。停止位有1位、1.5位和2位三种方式,通信双方必须事先约定好。
  (5)进行错误检测,包括帧格式错误,或奇偶校验错误等。如果无差错,则接收该数据。
图 6.18 异步串行通信的数据格式

  异步串行通信方式的主要优点是通信可靠,通信双方可以采用异步方式工作,实现起来也比较容易。异步串行通信方式的一个主要缺点是:每传送一个字符,要增加超过20%的附加信息,传输效率比较低。
  为了克服异步通信传输效率低的缺点,可以采用同步通信方式。通信双方采用同一个时钟信号进行定时,并以数据块为单位传送。图6.19是同步通信方式的一种数据格式,它由同步字符、数据块和校验块三部分组成。同步字符是一个特殊字符,由通信双方事先约定。数据块的长度也必须事先约定,或由发送方在前一帧中告诉接受方。校验块的长度通常为1至2个字节。
图 6.19 同步通信的数据格式

  在同步通信方式中,由于数据块的长度可以比较长,如512个字节,因此,它的数据传送效率比异步通信方式高。
  异步串行接口中的关键部件是通用异步收发器UART(universal asynchronous receiver transmitter)。UART的结构如图6.20所示,它的工作原理如下:
  在UART工作之前,处理机首先要对它进行初始化。初始化由处理机向状态/控制寄存器中写入特定的控制代码来实现。初始化的内容包括波特率、字符数据位数(5位、7位或8位等)、停止位位数(1位、1.5位或2位)、是否使用校验,如果使用校验,是奇校验还是偶校验等。另外,状态/控制寄存器有几个标志位表示UART的状态,例如,发送数据寄存器是否空闲标志,如果发送数据寄存器空闲,处理机就可以向发送数据寄存器写入下一个待发送的数据,否则等待;又例如,接收数据寄存器是否已经装满标志,如果接收数据寄存器已经装满,处理机可以把接收数据寄存器中的数据取走,否则等待。
图 6.20 异步串行接口UART的结构