图 10-1 串行通信与并行通信的对比

42
第 10 第 第第第第 10.1 串串串串串串 10.1.1 串串串串串串串 串串串串 串串串串串串串串串串串串串串串串串串串 ,, CPU 串串串串串串串串串串串串串串 串 串串串串串串串串串串串串串串 10-1 串串串 10-1 串串串串串串串串串串串串

Upload: shayla

Post on 05-Jan-2016

144 views

Category:

Documents


0 download

DESCRIPTION

第 10 章 串行通信 10.1  串行通信概述 10.1.1  串行通信的特点 所谓串行,是指串行接口与外设之间有通信是串行的, CPU 与串行接口之间的通信总是并行的。串行通信与并行通信的对比如图 10-1 所示。. 图 10-1 串行通信与并行通信的对比. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 图 10-1   串行通信与并行通信的对比

第 10章 串行通信10.1  串行通信概述10.1.1  串行通信的特点 所谓串行,是指串行接口与外设之间有通信是串行的, CPU 与串行接口之间的通信总是并行的。串行通信与并行通信的对比如图 10-1 所示。

图 10-1 串行通信与并行通信的对比

Page 2: 图 10-1   串行通信与并行通信的对比

在串行通信中,只用一根通信线在一个方向上传输信息,这根线上既要传送数据信息又要传送联络信息,这是串行通信的首要特点。为了能够识别在一根线上串行传送的信息流中,哪一部分是联络信息,哪一部分是数据信息,就需要通信双方事先作出一系列的通信约定,这就是协议。因此,串行通信的第二个特点是它的信息格式必须事先用协议约定。10.1.2  串行通信的基本概念1 .数据通信方式 按照同一时刻数据流的方向可分成三种基本传送模式:全双工、双工和单工传送。

Page 3: 图 10-1   串行通信与并行通信的对比

2 .串行通信方式 ( 1 )异步通信方式 异步通信方式的特点是每发送一个字符前先发送起始位,发送完字符后再发送结束位,以此作为双方同步的依据。这种方式对硬件要求较宽松,电路简单,但传输效率不高。 ( 2 )同步串行通信方式 同步串行通信方式中一次连续传输一块数据,开始前使用同步信号作为同步的依据。由于连续传输一个数据块,故收发双方时钟必须相当一致,否则时钟漂移会造成接收方数据辨认错误。这种方式下往往是发送方在发送数据的同时也通过一根专门的时钟信号线同时发送时钟信息,接收方使用发送方的时钟来接由数据。同步串行通信方式传输效率高,但对硬件要求高,电路结构复杂。

Page 4: 图 10-1   串行通信与并行通信的对比

3 .串行通信协议 常采用的通信协议有两类:异步协议和同步协议。( 1 )起止式异步协议起止式异步协议一帧数据的格式如图 10-3 所示。

图 10-3 异步串行通信协议字符格式

Page 5: 图 10-1   串行通信与并行通信的对比

  起止式异步协议的特点是一个字符一个字符地传输,而且每传送一个字符都是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有 1 位起始位(低电平,逻辑值 0 ),字符本身由 5 ~ 8位数据位组成,数据有效位后面是 1 位校验位,也可以无校验位,最后是停止位,停止位宽度为 1 位、 1.5 位或 2位,停止位后面是不定长度的空闲位。停止位和空闲位都规定为高电平(逻辑 1 ),这样就保证起始位开始处一定有一个下跳沿。这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议。

  异步通信协议在每个字符的前后加上起始位和停止位这样一些附加位,降低了传输效率,大约只有 80 % 。因此,异步协议一般用在数据传输速率较低的场合(小于 19.2 Kbit/s )。在高速传送时,一般要采用同步协议。

Page 6: 图 10-1   串行通信与并行通信的对比

( 2 ) 同步协议

  同步协议又有面向字符和面向比特两种。本处主要介绍面向字符的同步协议。

  同步通信中用一个或两个特定的字符(同步字符)来标识一次通信的开始。通信过程中数据连续发送,数据间不留空隙,数据信息后是两个错误校验字符。同步通信中一帧信息的格式如图 10-4所示。

图 10-4同步通信帧格式同步通信中同步的手段除靠数据之前加同步字符外,也可以靠在发送和接收方之间另用一根时钟信号线单独传送同步信号来实现。这种情况称为外同步。外同步帧格式如图 10-4( c)所示。相应地,通过同步字符实现同步的方法称为内同步,对应的帧格式分别如图 10-4( a), 10-4( b )所示。

Page 7: 图 10-1   串行通信与并行通信的对比

图 10-4 同步通信帧格式

Page 8: 图 10-1   串行通信与并行通信的对比

4.信息的校验方式( 1 )奇偶校验  奇偶校验硬件电路简单,但只能发现奇数位错误且不能纠错。( 2 )循环冗余码校验 CRC   CRC 校验硬件电路复杂,但检错率极高,且具有纠错能力。 5 .波特率 并行通信中,传输速率是以每秒传送多少字节( Byte/s )来表示。而在串行通信中,是用每秒传送的位数即波特率( bps , Bit/s )来表示。因此, 1bps= 1 位 /秒。6.信号的调制与解调 进行长距离传输时,需要在发送端将数字信号转换成适合电话网传输的模拟信号,这一过程称为“调制”,在接收端将电话网上传输的模拟信号还原成原来的数字信号,这一过程称为“解调”。

Page 9: 图 10-1   串行通信与并行通信的对比

10.2   RS- 232C 串行接口标准

10.2.1  电气特性1 .电平规定 对于数据发送 TxD和数据接收 RxD线上的信号电平规定为:

逻辑 1 (MARK )=- 3 ~- 15V,典型值为- 12V;逻辑0 ( SPACE)=+ 3 ~+ 15V,典型值为+ 12V。 对于 RTS、 CTS、 DTR和 DCD等控制和状态信号电平规定为:信号有效(接通, ON状态)=+ 3 ~+ 15V,典型值为+ 12V;信号无效(断开, OFF状态)=- 3 ~- 15V,典型值为- 12V。2 .电平转换 图 10-5 为 RS- 232C 与 TTL电路之间进行电平转换的示意图。

Page 10: 图 10-1   串行通信与并行通信的对比

图 10-5 TTL 与 RS- 232C 之间的电平转换

3 .传输距离及通信速率 RS- 232C 标准规定: DTE和 DCE之间最大传输距离为 15m。传输数据速率不能高于 20Kbps 。

Page 11: 图 10-1   串行通信与并行通信的对比

10.2.2  接口信号功能1 .连接器 最常用的 RS- 232C 连接器是 DB- 9型连接器,如图 10-6所示。

2 .信号含义请求发送 RTS:此信号表示 DTE请求 DCE发送数据。允许发送 CTS:此信号表示 DCE准备好接收 DTE发来的数据。

图 10-6 DB-9型连接器

Page 12: 图 10-1   串行通信与并行通信的对比

数据装置准备好 DSR :此信号有效( ON状态)时表明       MODEM 处于可以使用的状态。数据终端准备好 DTR :此信号有效( ON状态)时表明数     据终端可以使用。载波检出 DCD :此信号用来表示 DCE已接通通信信道,    通知 DTE准备接收数据。振铃指示 RI :当 MODEM检测到线路上有振铃呼叫信号时,    使该信号有效( ON状态)。发送数据 TxD :通过 TxD 线计算机将串行数据发送到 DCE 。

接收数据 RxD :通过 RxD 线计算机接收从 DCE 送来的串行数    据。GND :地。10.2.3  通信连接1.远距离连接 远距离连接需要加调制解调器MODEM ,如图 10-7 所示。

Page 13: 图 10-1   串行通信与并行通信的对比

2 .近距离连接 近距离连接不用 MODEM ,如图 10-8 所示。

图 10-7 远距离连接

图 10-8 近距离连接

Page 14: 图 10-1   串行通信与并行通信的对比

10.3 串行通信接口芯片 8251A10.3.1 8251A的内部结构和引脚

8251A 的引脚如图 10-9所示 .

图 10-9 8251A的引脚

Page 15: 图 10-1   串行通信与并行通信的对比

内部结构如图 10-10 所示。

图 10-10 8251A的内部结构

Page 16: 图 10-1   串行通信与并行通信的对比

8251A 的内部结构 8251A 的内部分为数据总线缓冲器、读 /写控制逻辑、发送器、接收器和调制解调器控制几部分。下面分别予以说明。

1 . 数据总线缓冲器

数据总线缓冲器是与 CPU交换数据信息的通道。与数据总线缓冲器有关的引脚有 D7 ~ D0 。

D7 ~ D0 : 双向三态数据总线,和 CPU 系统数据总线相连。

2 . 读 /写控制逻辑

读 /写控制逻辑用来配合数据总线缓冲器工作,接收各类读/写控制信号。与读 /写控制逻辑相连的引脚有以下几个。

Page 17: 图 10-1   串行通信与并行通信的对比

RD : 读信号,输入,低电平有效。有效时表示 CPU正从 8251A读数据或状态信息。

WR : 写信号,输入,低电平有效。有效时表示 CPU正把控制字或数据写入 8251A 。

CS : 片选信号,输入,低电平有效。有效时表示 8251A已被选中,可进行读 /写操作; CS 无效则数据总线处于高阻状态,此时 8251A 不接收 RD 和 WR 信号。

C/D : 控制/数据信号,输入。此信号决定当前数据总线上信息流是控制字还是数据。 C/D= 1 ,传送的是命令、控制、状态等控制字; C/D=0 ,传送的是数据。

Page 18: 图 10-1   串行通信与并行通信的对比

RESET : 复位信号,输入,高电平有效。在此引脚上加上宽度为时钟 6倍的高电平信号后, 8251A即复位,复位后各寄存器处于复位状态,收、发线路均处于空闲状态。通常该信号与系统的复位线相连。

CLK : 工作时钟,输入,由外部时钟源提供,为芯片内部电路提供定时,并非发送或接收数据的时钟。在同步方式下, CLK 的频率要大于接收器或发送器输入时钟( TxC 或 RxC )频率的 30倍;在异步方式下, CLK 的频率要大于接收器或发送器输入时钟频率的 4.5倍。另外, CLK 的周期要在 0.4 ~ 1.35 μs范围内。

Page 19: 图 10-1   串行通信与并行通信的对比

3 .接收器

接收器负责从串行通信线上接收数据,并完成相关的错误检测、串并转换等。与接收器有关的引脚有以下几个。

RxD : 数据接收端,输入。接收由外设发来的串行数据。

RxRDY : 接收器准备好信号,输出,高电平有效。 RxRDY=1表示 8251A已接收到一个数据,正等待 CPU取走。在中断方式下,此引脚可作为中断请求信号;在查询方式下,此引脚可作为联系信号。当 CPU从 8251A读取一个字符后,此引脚变为无效,直到再接收到一个新字符为止。

Page 20: 图 10-1   串行通信与并行通信的对比

SYNDET/BRKDET : 双功能检测信号,高电平有效。

对于同步方式,此引脚为同步检测信号 SYNDET 。当 8251A 在内同步方式下工作时,此引脚为输出引脚。当 8251A检测到同步字符(双同步情况下检测到了第二个同步字符)后, SYNDET变为高电平,用来表明 8251A 当前已经达到了同步。当 8251A 在外同步方式下工作时,此引脚为输入引脚。外同步方式下有专门的外部电路处理同步问题,此电路检测到同步信号后通过 SYNDET端向 8251A 输入一个高电平信号, 8251A 的接收控制电路会立即脱离对同步字符的搜索过程,开始接收数据。

对于异步方式,此引脚为间断检出信号 BRKDET ,用来表示 RxD端处于工作状态还是接收到断缺字符。 BRKDET=1表示接收到对方发来的间断码。

Page 21: 图 10-1   串行通信与并行通信的对比

RxC : 接收时钟信号,输入。在同步方式下, RxC 的时钟频率应等于接收波特率;在异步方式下, RxC 的时钟频率可是接收波特率的 1倍、 16倍或 64倍,取决于工作方式控制字的设置。

接收器的工作过程:

接收时, 8251A检测 RxD 信号线,当从 RxD 线上检测到起始位(异步方式下)或同步字符(同步方式下,但若是外同步方式,则同步信号由外电路通过 SYNDET引脚提供)后, 8251A即开始接收数据,每接收完一个字符后,接收电路完成错误校验并进行串并格式转换,然后将转换好的并行数据放入接收缓冲器中,同时置 RxRDY引脚为有效电平,以通知 CPU取走数据。

Page 22: 图 10-1   串行通信与并行通信的对比

4 .发送器

发送器负责将并行数据转换为串行数据并加上起始、结束、校验信息后从串行通信线上发送出去。与发送器有关的引脚有以下几个。

TxC : 发送时钟信号,输入。对于同步方式, TxC 的时钟频率应等于发送数据的波特率。对于异步方式, TxC 的时钟频率可是发送波特率的 1倍、 16倍或 64倍,取决于工作方式控制字的设置。

TxD : 数据发送引脚,输出,由 CPU 送来的并行数据在这条线上被串行地发送出去。

TxRDY : 发送器准备好信号,输出,高电平有效。 TxRDY= 1表示

Page 23: 图 10-1   串行通信与并行通信的对比

8251A已可以接收 CPU 的数据(发送字符)写入。中断方式下,此引脚可作为中断请求信号,通知 CPU写入下一个待发送字符;查询方式下,此引脚可作为联络信号。不论是中断方式还是查询方式,当 8251A从 CPU 处得到一个字符后, TxRDY引脚便变为低电平。

TxEMPTY : 发送器空信号,输出,高电平有效。 TxEMPTY 有效,表示一个发送动作的完成。

发送器的工作过程如下:

8251A 发送数据的前提是 CTS引脚有效且 TxEN (命令字中的发送允许位)有效。

CPU 首先向 8251A写入发送数据,数据以并行格式存于 8251A 的发送器内,然后并串转换电路从发送器中取出数据并将其转变为串行格式,最后沿 TxD引脚发送出去。

Page 24: 图 10-1   串行通信与并行通信的对比

当数据从发送器移入并串转换电路后, 8251A即可以接收下一个发送数据,此时 TxRDY引脚变为有效。当数据真正从 TxD引脚上发送出去后, TxEMPTY引脚变为有效。

在异步方式下, 8251A 在发送一个字符时自动添加一个起始位,并按软件要求添加奇偶校验位和结束位。在同步方式下, 8251A 会按软件要求先发送一个或两个同步字符,然后再发送数据块。在发送完数据块后,若程序要求添加奇偶校验位; 8251A 会在数据后添加奇偶校验位 ;若程序不要求添加,则 8251A 不会添加任何附加位。同步发送时,会遇到这样的情况, 8251A正在发送数据,而 CPU却来不及提供新的数据给 8251A ,这时, 8251A 的发送器会自动插入同步字符,以满足同步发送时不允许数据间存在间隙的要求。

Page 25: 图 10-1   串行通信与并行通信的对比

5 .调制解调器控制电路

调制解调器控制电路用来控制 8251A 和调制解调器的连接。8251A 不支持全部的 RS232C 信号,它只是提供了下面一些信号。

DTR : 数据终端准备好,输出,低电平有效。

DSR : 数据装置准备好,输入,低电平有效。

RTS : 发送方请求发送信号,输出,低电平有效。

CTS : 清除发送信号,输入,低电平有效。

以上四个信号与 RS232C 中的同名信号含义完全相同,只是电平极性不同。

Page 26: 图 10-1   串行通信与并行通信的对比

8251A 发送数据时要求 CTS引脚必须有效。实际应用时,DTR , DSR 和 RTS 这 3 个引脚可以悬空不用, CTS引脚必须为低电平,当 8251A仅工作在接收状态而不要求发送数据时, CTS 也可以悬空。

10.3.2 8251A 的连接使用

8251A , CPU 与外设( Modem )间的典型连接如图 10-11所示。

Page 27: 图 10-1   串行通信与并行通信的对比

图 10-11 8088,8251A与外设的连接

Page 28: 图 10-1   串行通信与并行通信的对比

10.3.3   8251A 的控制字

8251A 有三种控制字,分别为工作方式字、工作命令字和状态字。

1 .工作方式控制字

此控制字决定 8251A 是工作在异步方式还是同步方式,同时还要指定帧的格式。工作方式字的格式如图 10-12所示。

D1D0 : 确定工作于同步方式还是异步方式。 D1D0=00 为同步方式。 D1D0=01 , 10 或 11 为异步方式,同时,这三个取值还分别指定波特率因子为 1 , 16 或 64 。

波特率因子为输入时钟( RxC 或 TxC引脚)频率与通信波特率之比值。

Page 29: 图 10-1   串行通信与并行通信的对比

图 10-12 8251A工作方式控制字

Page 30: 图 10-1   串行通信与并行通信的对比

D3D2 : 确定每个字符的位数。 D3D2=00 ~ 11 分别对应字符位数为 5 ~ 8 位。

D5D4 : 确定是否需要奇偶校验及校验方式。

D7D6 : 此两位含义因同步方式还是异步方式而异,异步方式 (D1D0≠00) 时用于确定停止位的位数;同步方式时 D6 用来确定是内同步还是外同步, D7 用来确定同步字符的个数。外同步方式时,同步字符只用于发送,接收时不起作用。

2 .工作命令控制字

工作命令字的作用是确定 8251A 的实际操作。只有写入工作命令字后才能使 8251A 处于相应的运行状态:接收或发送数据。工作命令控制字的格式如图 10-13 所示。

Page 31: 图 10-1   串行通信与并行通信的对比

图 10-13 8251A工作命令控制字

Page 32: 图 10-1   串行通信与并行通信的对比

D0 : 允许发送。 D0=1 ,允许 8251A 向外发送数据; D0=0 ,禁止 8251A 发送数据。

D1 : 数据终端准备就绪。此位控制 8251A 的 DTR引脚,D1=1 ,置 DTR引脚为有效电平; D1=0 ,置 DTR引脚为无效电平。

D2 : 允许接收。 D2=1 ,允许 8251A 接收数据; D2=0 ,禁止 8251A 接收数据。

D3 : 发送中止字符 SBRK 。 D3=1 , TxD 线上一直发送 0 信号,即输出连续的空号; D3=0 ,恢复正常工作。正常通信时, D3 位应为 0 。

D4 : 错误标志复位 ER 。 D4=1 ,使状态控制字中的 D3 ,D4 和 D5 位进行复位,状态控制字的 D3 , D4 , D5 位分别表示奇偶错、帧错和溢出错。 D4=0 ,错误标志位不复位。

Page 33: 图 10-1   串行通信与并行通信的对比

D5 : 请求发送位。此位控制 8251A 的 RTS引脚, D5=1 ,置 RTS引脚为有效电平; D5=0 ,置 RTS引脚为无效电平。

D6 : 内部复位 IR 。 D6=1 ,进行内部复位,使 8251A处于等待工作方式控制字状态。改变 8251A 的工作方式前,一定要进行内部复位。 D6=0 ,不进行内部复位。

注: 只要包含 D6=1 的任何工作命令字都能实现内部复位。

D7 : 进入搜索方式 EH 。 D7=1 ,启动搜索同步字符;D7=0 ,不搜索同步字符。此位是针对同步方式而设置的。当采用同步工作方式时,除设置允许接收位 RxE=1 外,还必须设置 EH= 1 ,使接收器进入搜索状态,以监视由RxD引脚输入的同步字符。

Page 34: 图 10-1   串行通信与并行通信的对比

3 .状态字

状态字的作用是报告 8251A 的当前状态。状态字是 8251A 在执行命令过程中自动产生的,并放在状态寄存器中,状态寄存器只能读取而不能写入。状态字的格式如图 10-14 所示。

D0 : 发送缓冲器准备好 TxRDY 。 D0=1 ,表示发送缓冲器准备好, CPU 可以向 8251A写入下一个字符。注意此位与引脚 TxRDY 的含义有所不同。引脚 TxRDY输出高电平必须满足三个条件:发送缓冲器空、输入引脚 CTS 为低电平以及工作命令字中 TxEN= 1 。而此状态位 TxRDY 则不受引脚 CTS 和工作命令字中 TxEN位的影响。

当 CPU 向 8251A 输出字符后,此位自动清 0 。

Page 35: 图 10-1   串行通信与并行通信的对比

图 10-14 8251A状态字

Page 36: 图 10-1   串行通信与并行通信的对比

D1 : 接收器准备好 RxRDY 。 D1 位与 RxRDY引脚的状态相同。 D1=1 ,表示 8251A已接收到一个字符,正等待 CPU取走。当 CPU从 8251A 中取走字符后,D1 位自动清 0 。

实际工作时, CPU 既可以测试 8251A 的 TxRDY 和 RxRDY引脚的状态来获得 8251A 的状态,也可以通过读取状态字的 D0 , D1 位来得到这一信息。一般中断方式下工作时常用 TxRDY 和 RxRDY引脚的状态来产生中断请求信号;查询方式下工作时,常读状态字的D0 , D1 位来得到 8251A 的状态信息。

D2 : 发送缓冲器空 TxEMPTY 。此位的状态与 TxEMPTY引脚的状态完全相同。 D2=1 发送缓冲器空, D2=0 发送缓冲器不空。

Page 37: 图 10-1   串行通信与并行通信的对比

D3 : 奇偶校验错 PE 。当接收器检测出奇偶校验错时, PE 位置 1 , PE 有效并不禁止 8251A 的工作。

D4 : 溢出错 OE 。当前一个接收的字符尚未被 CPU取走,后一个字符又到来时,产生溢出错, D4 位置 1 。 OE 有效并不禁止 8251A 的工作,但被溢出的字符丢失了。

D5 : 帧出错 FE 。当接收器在一个字符的后面没有检测到规定的停止位时,产生帧出错, D5 位置 1 。此位只用于异步方式。

说明: D3 , D4 , D5 这三个错误状态位,均可由工作命令字的 ER 位复位。

D6 : 同步检出 SYNDET 。外同步时在 SYNDET引脚上检测到同步信号或者内同步时检出了规定的同步字符时,此位置 1 。

Page 38: 图 10-1   串行通信与并行通信的对比

D7 : 数据装置准备好 DSR 。该位反映输入引脚 DSR 是否有效。当 DSR引脚有效时,此位置 1 。

10.3.4   8251A 的初始化与编程

1 . 8251A 的初始化

在通信前要对 8251A进行初始化,以确定通信协议。由于三个控制字共用一个端口地址,且三个控制字没有特征位,因而各控制字必须按一定顺序写入,不能颠倒。 8251A 的初始化顺序如下:

① 芯片复位后,第一次向控制端口写入的值作为工作方式字。

② 如果工作方式字中规定了 8251A 工作在同步模式,那么,接着向控制端口输出 1 个或 2 个字节的同步字符。

Page 39: 图 10-1   串行通信与并行通信的对比

③ 这之后,只要不是复位命令,不管是同步模式还是异步模式,向控制端口写入的值是工作命令字,向数据端口写入的值是发送数据。

8251A 的初始化顺序如图 10-15 所示。

Page 40: 图 10-1   串行通信与并行通信的对比

图 10-15 8251A初始化顺序

Page 41: 图 10-1   串行通信与并行通信的对比

2 . 8251A编程

例 10.1 编写一段通过 8251A 采用查询方式接收数据的程序。将 8251A 定义为异步传送方式,波特率系数为 16 ,采用偶校验, 1 位停止位, 7 位数据位。 8251A端口地址为 0400H, 0401H。

10.2 编写接收数据的初始化程序。要求 8251A 采用同步传送方式、 2 个同步字符、内同步、偶校验、 7 位数据位和同步字符为 16H 。 8251A端口地址为 0400H, 0401H。

例 10.3 双机异步串行通信:两台微机之间进行串行通信,甲机发送,乙机接收,两机相距 1 m 以内。要求把甲机上 1 KB 的数据块传送到乙机中去。采用异步通信方式,字符长度为 7 位, 2 位停止位,波特率因子为 64 ,无校验位。

Page 42: 图 10-1   串行通信与并行通信的对比

图 10-16 双机异步串行通信连接图

CPU 与 8251A 之间采用查询方式交换数据。两台微机中的 8251A端口地址相同: 320H 为数据端口, 321H 为控制端口。

两机硬件连接如图 10-16 所示。