第七章 串行通信接口

86
第第第 第第第第第第 §7.5.1 第第第第第第第 第第第 §7.5.2 第第 第第第第第第 §7.5.3 第第第第第第第第第 §7.5.4 第第第第第第 §7.5.5 第第第第第第第第 §7.5.6 第 8250A 第第第第第第第

description

第七章 串行通信接口. §7.5.1 接口功能与数据传输方式 §7.5.2 串行传送的几个问题 §7.5.3 串行通信的数据格式 §7.5.4 串行接口标准 §7.5.5 串行通信接口任务 §7.5.6 用 8250A 组成的串行接口. §7.5.1 接口功能与数据传输方式. 一、接口功能 接口的功能是在系统总线和 I/O 设备之间传输信号,提供缓冲,满足接口两边时序要求。. 寻址功能 输入输出功能 数据转换功能 联络功能. 中断管理功能 复位功能 可编程功能 错误检测功能. 二、数据传送的方式. - PowerPoint PPT Presentation

Transcript of 第七章 串行通信接口

Page 1: 第七章   串行通信接口

第七章 串行通信接口

§7.5.1 接口功能与数据传输方式§7.5.2 串行传送的几个问题§7.5.3 串行通信的数据格式§7.5.4 串行接口标准§7.5.5 串行通信接口任务§7.5.6 用 8250A 组成的串行接口

Page 2: 第七章   串行通信接口

§7.5.1 接口功能与数据传输方式

一、接口功能 接口的功能是在系统总线和 I/O 设备之间传输信号,提供缓冲,满足接口两边时序要求。

•寻址功能•输入输出功能•数据转换功能•联络功能

•中断管理功能•复位功能•可编程功能•错误检测功能

Page 3: 第七章   串行通信接口

二、数据传送的方式

数字信号的传输有并行传输和串行传输 并行传输是多位二进制数据可以同时传输,提高数据传输的效

率。通常以 8 位、 16 位或 32 位的数据宽度同时进行传输。每一位都要有自己的数据传输线和发送接收器件,在时钟脉冲的作用下数据从一端送往另一端。

串行通信是指在单根导线上将二进制数据一位一位顺序传送,特别适合于远距离传送。对于离计算机较近的外部设备如鼠标、绘图仪、终端等,也常常采用串行方式交换数据。

Page 4: 第七章   串行通信接口

一、串行数据传送方向 串行通信中,数据通常是在二个站(点对点)之间进行传送,按照数据流的方向可分成三种传送模式 : 全双工、半双

工、单工1. 全双工 (Full Duplex ) 数据的发送和接收分别由两根可以在两个不同的站点同时发送和接收的传输线进行传送,通信双方都能在同一时刻进行发送和接收操作,选择的传送方式称为全双工制。

§7.5.2 串行传送的几个问题

Page 5: 第七章   串行通信接口

特点:①每一端都有发送器和接收器 ② 有二条传送线 应用:交互式应用,远程监测控制

发送器

接收器

接收器

发送器

A 站 B 站

图 7.5.1 全双工方式示意图

Page 6: 第七章   串行通信接口

2. 半双工( Half Duplex ) 使用同一根传输线,既可发送数据又可接收数据,但不能同时

收送数据,这样的传送方式就是半双工( Half Duplex )制,如图 7.5.2 所示。

发送器

接收器

发送器

接收器

A 站 B 站

图 7.5.2 半双工方式示意图

特点:①每端需有一个收 / 发切换电子开关 ② 因有切换,会产生时间延迟应用:打印机串口,单向传送设备,发送器→接收器

Page 7: 第七章   串行通信接口

二、信号的调制和解调 计算机的通信是要求传送数字信号,而在进行远程数据通信时,线路往往是借用现有的公用电话网,但是,电话网是为音频模拟信号的设计的。一般为 300 ~ 3400Hz ,不适合于数据信号。 因此需要对二进制信号进行调制,以适合在电话网上传输相应的音频信号,在接收时,需要进行解调,还原成数字信号。

计算机 MODEM MODEM

模拟信号数字信号 数字信号

CRT

1 0 1 0

10 10 10 10

图 7.5.3 调制电话线

Page 8: 第七章   串行通信接口

1. 什么叫调制 ? 所调调制就是进行波形变换。或者说进行频谱变换,就是将基带数字信号的频谱变换成适合于在模拟信道中传输的频谱。

2. 作用 : 调制器 (Modulator)是一个波形变换器 , 它将基带数字

的波形变换成适合于模拟信道传输的波形。 解调器是一个波形识别器 ,将模拟信号恢复成原来的数字信

号。

调制器调制器 解调器解调器010010 010010

Page 9: 第七章   串行通信接口

最基本的调制方法有以下几种:( 1 )调幅( AM)即载波的振幅随基带数字信号而变化 . “1”对应有载波 “0” 对应无载波

3. 调制方法 :

( 2 )调频( FM) 即载波频率随数字信号而变化 “0”对应” f1” “1”对应“ f2”(3)调相( PM) 即载波初始相位随基带数字信号而变化 . “ 0”对应相位 0 度 “1”对应相位 180 度

f1 f2

FM

AM

0 1 0 0 1 1

0 度 180 度

PM

Page 10: 第七章   串行通信接口

4. 发送时钟和接收时钟

RxC

TxC

TxD

数据输入寄存器

输入移位寄存器

÷1 , ÷16 , ÷32

数据输出寄存器

输出移位寄存器

÷1 , ÷16 , ÷32

CLK(主时钟 )

(串行数据输入)

输入移位脉冲

(串行数据输出)

输出移位脉冲

接收时钟

发送时钟

RxD

Page 11: 第七章   串行通信接口

5. 波特率因子

F (时钟频率)=波特率因子*波特率

波特率因子 : 数据传输率(波特率)与时钟频率之间的比例系数 .给定时钟频率,选择不同的波特率因子可得到不同的波特率。

例如: f = 19.2 kHz ,若选波特率因子为 16 ,则波特率为 1200 bps 。若选定波特率因子和波特率,则相应的确定了对时钟频率的要求。

Page 12: 第七章   串行通信接口

1200* 16= 19200 (时钟频率)→若外部时钟电

路的频率 F= 1MHz ,需用 8253 分频,试计算分频系数( 8253 的计数初值)=?

8253 计数初值=时钟频率/ ( 波特率*波特率因子 )

Page 13: 第七章   串行通信接口

8250

外部的时钟电路 ÷1 , ÷ 16 ,…

1MHz

N 分频

19.2KHz

移位脉冲

CLK OUT

8253

Page 14: 第七章   串行通信接口

三、信息的检错与纠错 串行数据在传输过程中,由于干扰而引起误码是难免的,这直接影响通信系统的可靠性,对通信中的检 /纠错能力是衡量一个通信系统的重要内容。 检错:如何发现传输中的错误,称为检错。 纠错:如何消除错误,称为纠错例:奇偶校验检错 方阵码检错 循环冗余码( CRC)检错 方阵码检错技术: 采用奇偶校验与“检验和”的综合。 ①7 位编码后附加 1 位奇偶位。

Page 15: 第七章   串行通信接口

②若干个字符组成一个数据块列成方阵,列向按位相加产生

一个单字节检验和附加到数据块未尾。 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1

奇偶位

Page 16: 第七章   串行通信接口

四、传输速率

1. 波特率: 是指在串行通信中,在基本波传输的情况下,每秒钟传送的二进制脉冲的数目。

用波特率表示:即 1 波特 =bit/s (位 /秒)

常用的标准波特率: 110 , 300 , 1K, 1.2K,

2.4K, 4.8K, 9.6K, 19.2K, 56K

Page 17: 第七章   串行通信接口

2. 字符速率:

是指每秒所传输的字符数,这个概念使用少。

字符速率与波特率的关系:

1 个字符: 1 个起始位 +8 个数据位 +1 个偶数位 +2 个

终止位 =12 位

如果波特率: 12000

则字符速率: 12000/12=1000 字符 /s

Page 18: 第七章   串行通信接口

§7.5.3 串行通信的数据格式

通信协议: 是指通信双方的一种约定,包括对数据格式、同步方式,传

送速度、传送步骤、检纠错方式等问题作出统一规定。也称通信控制规程。

同步协议

异步协议

分类

面向字符( character Oriented)

面向比特( Bit)

面向字节计数

ISO ( Inter national Standard Organization)国际标准化组织。OSI ( Open System Interconnection)开放系统互连参考模型。

Page 19: 第七章   串行通信接口

一、起止式异步通信数据格式1. 格式

1 10 00 0 1 0 1 1 10 0 0空闲位起始位

数据位0

低 高 校验位

停止位

应用:早期电传机

① 每个字符总是以起始位开始(“ 0”),以停止位(“ 1”)结束。

② 字符之间没有时间间隔要求

③字符后一位校验位(可没有)

2. 特点:是一个字符一个字符传输

Page 20: 第七章   串行通信接口

二、面向字符的同步通信格式

1. 功能: 是一次传送若干个字符组成的数据块,并且规定了 10 个特殊字符作为这个数据块的开头与结束标志以及整个传输过程的控制信息。

2. 数据格式(一帧)

SYN SYN SOH 标题 STX 数据块 ETB/ETX块校验

Page 21: 第七章   串行通信接口

2121

同步通信与异步通信同步通信与异步通信

所有串行通信都需要一个时钟信号来作为数所有串行通信都需要一个时钟信号来作为数据的定时参考。发送器和接收器用时钟来决据的定时参考。发送器和接收器用时钟来决定何时发送和读取每一个数据位。定何时发送和读取每一个数据位。根据传输时采用的是统一时钟还是本地局部根据传输时采用的是统一时钟还是本地局部时钟,分为同步传输和异步传输两种。时钟,分为同步传输和异步传输两种。

同步传输用一个时钟脉冲确定一个数据位同步传输用一个时钟脉冲确定一个数据位 , , 异步异步传输用多个时钟脉冲确定一个数据位传输用多个时钟脉冲确定一个数据位 (( 如如 1616 个个 ))

同步传输以数据块同步传输以数据块 (( 当作“当作“位流位流”看待”看待 )) 为单位为单位传输,异步传输以字符为单位传输,但都称为传输,异步传输以字符为单位传输,但都称为帧帧(Frame) (Frame)

Page 22: 第七章   串行通信接口

2222

同步通信的时钟定时方法同步通信的时钟定时方法

数据( 62H )

0 1 1 0 0 0 1 0

同步传输先发送高位 (MSB)

发送方在时钟信号的下降沿发送字节接收方在时钟信号的上升沿接收字节

时钟(发送时钟与接收

时钟完全同步)

LSBMSB

Page 23: 第七章   串行通信接口

2323

异步通信的时钟定时方法异步通信的时钟定时方法

数据( 62H )

0 0 0 0 1 1

停止位

异步传输先发送低位 (LSB)

发送方利用发送时钟来决定发送每个位的时刻接收方检测起始位的下降沿,并用它来同步接收时钟,然后利用接收时钟从每一位的中间接收该位

1

起始位

LSB MSB

0

奇偶校验位

0 0/1 1 1

接收 / 发送时钟

Page 24: 第七章   串行通信接口

2424

异步通信时数据位的检测异步通信时数据位的检测

发送 / 接收时钟周期: Tc ,数据位间隔: TdTc = Td / K , 其中 K 称为波特率因子( 16 , 32 , 64 )

Page 25: 第七章   串行通信接口

2525

异步通信的一般格式异步通信的一般格式

每个字符由每个字符由起始位起始位、、数据位数据位、、校验位校验位、、停止位停止位构成。构成。起始位和停止位用于字符的同步。起始位和停止位用于字符的同步。

从图中可看出,这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议。

Page 26: 第七章   串行通信接口

异步通信的信息格式如下边的表所示注:表中位数的本质含义是信号出现的时间,故可有分数位,如 1.5。 例:传送 8位数据 45H ( 0100,0101B),奇校验,1个停止位,则信号线上的波形象图所示那样:异步通信的速率:若 9600bps,每字符 8位, 1起始, 1停止,无奇偶,则实际每字符传送 10位,则 960字符 /秒。

起始位 逻辑 0 1位

数据位 逻辑 0或 1 5位、 6位、7位、 8位

校验位 逻辑 0或 1 1位或无停止位 逻辑 1 1位, 1.5位

或 2位空闲位 逻辑 1 任意数量

Page 27: 第七章   串行通信接口

§7.5.4 串行接口标准一、 EIA-RS-232 接口标准 RS-232 标准是美国EIA (电子工业联合会)与 BELL等公司一起开发的, 1969 年公布的通信协议,适合的数传率: 0 ~20Kbps。

1. 电气特性RS-232 对电气特性,逻辑电平和各种信号线的功能都作了规定。 逻辑“ 1”=-3V~ -15V “0”=+3V~ +15V与 TTL 逻辑电平不一样,可用 TTL/EIA 电平转换器进行,如MC1488 ,MC1489IC。

Page 28: 第七章   串行通信接口

MC1488 MC1489

RS-232

TTLEIA 电平

+15V+15V

TTL

+15V

采用 EIA 电平比TTL电平具有更强的抗干扰性能。 另外,使用MAX232 电平转换省电 ,可连接二对收 / 发线,只

用单电源。2. 机械特性1 )连接器( Connector) 常用二种:①DB-25型, 25脚,只用 9个信号( 2 个数据线, 6 个控制线,

1 个地址),如下图所示。

Page 29: 第七章   串行通信接口

1234

DB-25型连接器

56789

11

13 25

22

20

18

14

发送电流( -)

发送电流( +)DCDGNDDSRCTSRTSRXD

TXD

( -)接收电流

( +)接收电流

②DB-9 型 9 针, 9 针全用,如下图。

12345

6789

DSRRTSCTSRI

DCDRXDTXDDTRGND

DB-9 型连接器

Page 30: 第七章   串行通信接口

2. 电缆长度 RS-232直接连接的最大物理距离 15M,通信速率 <20Kbps。3.RS-232C接口信号的定义 25 线:数据线 4 条( 2 , 3 , 14 , 16 ) 控制线 11 条( 4 , 5 , 6 , 8 , 12 , 13 , 19, 20 ,

22 , 23 ) 定时信号线 3 条( 15 , 17 , 24 ) 地线 2 条( 1 , 7 ) 备用 5 条( 9, 10 , 11 , 18 , 25 ) 未定义4. 信号线的连接1 )近距离连接( <15m) 只用 3 条线(发送线 TXD ,接收线 RXD ,信号地线)

Page 31: 第七章   串行通信接口

TXD

RXD

TXD

RXD

A 机 B 机

7 7

2 2

3 3

4 5 6 20 4 5 6 20

2. 远距离连接( >15m )1)需用 MODEM 和专用电话线2)需用 2~ 9条信号线(在接口与 MODEM 之间)

调制解调器

DCD

RXDTXD

RTSCTS

SGDSR

调制解调器

DCD

RXDTXD

RTSCTS

SGDSR

端专用电话线

2

┇┇

2

采用MODEM时 RS-232 信号线的使用

2 TxD 发送数据3 RxD 接受数据4 RTS 请求发送5 CTS 允许发送6 DSR 数据设备准备好20 DTR 数据终端准备好7 GND 信号地

Page 32: 第七章   串行通信接口

串行通信的接口标准

RS-232-C 采用负逻辑,且信号电平与 TTL 不兼容

串行接口芯片 8250 、 8251均使用 TTL 电平,应使用电平转换电路与 RS-232C连接器连接。

MC1488 : TTL 电平→RS232 电平 (用于发送方)MC1489 : TTL 电平←RS232 电平 (用于接收方)

Page 33: 第七章   串行通信接口

串行通信的接口标准

采用 Modem(DCE) 和电话网通信时的信号连接

Page 34: 第七章   串行通信接口

串行通信的接口标准

采用专用线通讯时的信号连接

Page 35: 第七章   串行通信接口

串行通信的接口标准

无Modem 的标准连接

Page 36: 第七章   串行通信接口

串行通信的接口标准

无Modem 的最简连接

Page 37: 第七章   串行通信接口

典型的串行接口的结构

由于 CPU 与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,必须要有“接收移位寄存器”(串→并)和“发送移位寄存器”(并→串)。

Page 38: 第七章   串行通信接口

一、 RS-422 接口标准1. 特点: ( 1 )采用平衡发送器和差动接收器,由于是双线传输,大大

提高了抗共模干扰的能力。因为是两条传输线的电位差决定逻辑电平AA´-BD ´ <-2V,表示“ 1”AA´-BD ´ >+2V,表示“ 0”( 2 )传输速率 10Mbps( <15m时) 90Kbps( <1200m时)2.连接

MC3487 MC3486

B

TTLRS-422A 电平

平衡发送器 差动接收器

A A´

Page 39: 第七章   串行通信接口

二 RS-423 接口标准1.连接:

2. 特点:① 采用单端发送器和差动接收器,由于是差动接收器,提高了抗 共模干扰能力。

② 数传率: 100Kbps/90m时 1Kbps/1200m时③逻辑“ 1”, 4V~ 6V 逻辑“ 0”, -4V~ -6V

TTLRS-423A 电平

单端发送器 差动接收器

+-

Page 40: 第七章   串行通信接口

三、 RS-485 接口标准1. 特点:( 1 )兼容RS-422A ,扩展RS-422A 的功能;( 2 )允许在电路中有多个发送器和允许一个发送器驱动多个

接收器,多达 32 个收 / 发器;( 3 )抗干扰能力强,传送距离远,传输速率高。 数传率: 100Kbps <1.2Km 不用MODEM 9.6Kbps <15Km 10Mbps <15m

Page 41: 第七章   串行通信接口

RS-422 标准规定采用平衡驱动差分接收电路 , 提高了数据传输速率 (最大位速率为 10Mb/s),增加了传输距离(最大传输距离 1200m) 。 RS-423 标准规定采用单端驱动差分接收电路 ,其电气性能与 RS-232C 几乎相同 , 并设计成可连接 RS-232C 和RS-422.它一端可与 RS-422连接 , 另一端则可与 RS-23

2C连接 , 提供了一种从旧技术到新技术过渡的手段 . 同时又提高位速率 (最大为 300Kb/s) 和传输距离 (最大为600m) 。 因 RS-485 为半双工的 ,当用于多站互连时可节省信号线 ,便于高速、远距离传送 .许多智能仪器设备均配有 R

S-485 总线接口 , 将它们联网也十分方便。

Page 42: 第七章   串行通信接口

§7.5.5 串行通信接口任务一、串口的基本任务( 1 )进行串,并转换( 2 )实现串行数据格式化( 3 )可靠性检验( 4 )实施接口与端口设备之间联络控制二、串口电路的组成

1. 内部有四个寄存器:控制寄存器、状态寄存器、数据输入内部有寄存器、数据输出寄存器

2. 数据线

3. 联络信号线

4. 地址线与片选线

5. 串并转换和并串转换

Page 43: 第七章   串行通信接口

PC 机常用可编程串行通信接口的芯片除了 8251A 以外,还有 8250 、 PC16550 等。和 8251A相比, 8250 、 PC16550 不具备同步方式的传送功能。但是,对异步通信的控制功能强于 8251A 。8250 和 PC16550 都具有波特率发生器,从而可以对波特率进行编程。和 8251A 相比,它们还具有全部控制调制解调器的信号,包括载波信号检测 DCD# 和振铃指示 RI ,因此就可以直接和调制解调器连接。而且它们和 Intel CPU 也完全兼容。

Page 44: 第七章   串行通信接口

7.5.3 可编程串行接口 8250/16550

串行通信:数据被逐位顺序传送串行同步通信:每个字符及位都是同步串行异步通信:同一字符内是同步的,而字符与字符之间不同步(异步)协议:通信收 / 发双方必须共同遵守的基本通信规程协议内容:一般包括收发双方的同步方式、传输控制步骤、差错检验方式、数据编码、数据传输速率、通信报文格式及控制字符定义

Page 45: 第七章   串行通信接口

异步通信协议

为使通信双方确认数据有效,在字符中设置起、止标志位起始标志位:每个字符前添加的一个“ 0”停止标志位:每个字符后添加的若干个“ 1”字符之间的空隙用“ 1”填满,此时的“ 1” 称为空闲位,“ 0” 为空号、“ 1” 为传号

Page 46: 第七章   串行通信接口

基本功能:( 1 )每个字符的数据位数( 5 ~ 8 位),奇偶校验(奇校验、偶校验或无奇偶校验),及停止位数( 1 , 1.5或 2 个)均可以自由选择

( 2 )内装可编程波特率发生器,可对输入时钟进行 1到( 2^16-1 )的分频并产生 16倍发送波特率的波特率输出信号( )。具有独立的接收器时钟信号输入。允许数据传送波特率为 50 ~ 96000B/S

( 3 )收和发都具有双重缓冲( 4 )具有优先权中断管理系统并提供对发送接收、错误和通信

线路状态的中断检测 ( 5 )提供通信线路和MODEM的全部状态 ( 6 )能检测假起始位( 7 )能产生和检测中止符( 8 )具有自诊断测试功能

BAUD OUT

Page 47: 第七章   串行通信接口

芯片引脚

面向系统的引脚: D0 ~ D7 双向数据线。与系统数据总线

DB 相连接,用以传送数据、控制信息和状态信息。

CS0 , CS1 , CS2 片选信号,当它们同时有效时,该 8250芯片被选中。

CSOUT 片选输出信号。当 8250 的 CS

0 、 CS1 和 CS2 同时有效时,CSOUT为高电平。

MR 主复位信号,高电平有效。当它

有效时,除接收数据寄存器、发送保持寄存器、除数锁存器外,其余寄存器的内容均被清除

Page 48: 第七章   串行通信接口

A0 ~ A2 8250内部寄存器的选择信号。不同的编码 对应于不同的寄存器。

ADS 地址选通信号。有效时可将 CS0 , CS1 , CS2及 A0-

A2锁存于 8250内部。不需要锁存时, ADS可直接接地。DISTR

读选通信号。通常与系统总线的 IOR 信号相连接。DOSTR

写选通信号。通常与系统总线的 IOW 信号相连接。INTR

中断请求信号。当允许 8250 中断时,接收出错、接收数据寄存器满、发送数据寄存器空以及MODEM的状态均能够产生有效的 INTR信号。

Page 49: 第七章   串行通信接口

8250 的引脚及功能 (续 )

面向通信设备的引脚信号 SIN, SOUT: 串行输入 / 输出端 CTS, RTS, DTR, DSR: (同 RS232 标准中的信号) RLSD: 即RS232C标准中的 DCD 信号 RI: (同 RS232 标准中的信号) OUT1, OUT2: 可由用户编程确定其状态的输出端 BAUDOUT: 波特率信号输出(频率 =fCLK/ 分频值) XTAL1, XTAL2: 接外部晶振,作为基准时钟 fCLK RCLK: 接收时钟输入(可直接与 BAUDOUT相连)

Page 50: 第七章   串行通信接口

8250 与 8088 系统的连接

线

D7-D0

DISTR

DOSTR

INTR

MR

A0

A1

A2

ADS

DISTR

DOSTR

CS2

CS1

CS0

+5VCS

D7-D0

# IOR

# IOW

INTR

RESET

A0

A1

A2

电平转换/ 驱动器

14881489

到 RS232 接口

XTAL1

XTAL2

BAUDOUT

RCLK

SOUT

SIN

RTS

DTR

DSR

DCD

CTS

RI

8250

XTAL

Page 51: 第七章   串行通信接口

寄存器结构

1. 接收缓冲器 RBR2. 发送保持寄存器 THR3. 传输线控制寄存器 LCR4. 传输线状态寄存器 LSR5. 调制解调器控制寄存器 M

CR6. 调制解调器状态寄存器 M

SR7. 中断使能寄存器 IER8. 中断识别寄存器 IIR9. 分频次数寄存器 DLL及 D

LM

思考: 3 条地址线如何编码 10个寄存器?

Page 52: 第七章   串行通信接口

8250 的内部寄存器(续)

除数锁存器( DLL , DLH )— BASE+0,1

用来保存分频系数,以获得所需的波特率。• 波特率可以简单地看成每秒传送多少二进制位PC机中基准时钟频率 fCLK=1.8432MHz ,波特率因子 K=16 。所以,对于指定的波特率 B

除数值 =1843200/(B×16)=115200/B例如,通信速率为 9600 波特时,除数值 =12 。注意:写除数前,必须把 LCR的最高位 (DL位 )置 1

Page 53: 第七章   串行通信接口

寄存器端口地址分配

DLAB

A2 A1 A0 被访问的寄存器 串口 1 的地址

0 0 0 0 接收缓冲器 RBR、发送缓冲器 THR

3F8H

0 0 0 1 中断允许寄存器 IER 3F9H

× 0 1 0 中断标识寄存器(只读) IIR 3FAH

× 0 1 1 传输线控制寄存器 LCR 3FBH

× 1 0 0 Modem控制寄存器MCR 3FCH

× 1 0 1 传输线状态寄存器 LSR 3FDH

× 1 1 0 Modem状态寄存器MSR 3FEH

1 0 0 0 除数寄存器(低字节) DLL

3F8H

1 0 0 1 除数寄存器(高字节) DLM

3F9H

Page 54: 第七章   串行通信接口

线路控制寄存器 LCR ( BASE+3 )

D7 D6 D5 D4 D3 D2 D1 D0

XX0 :校验位无效001 :奇校验011 :偶校验101 :校验 0111 :校验恒 1

校验方 式 数据 帧长

00 : 5位01 : 6位10 : 7位11 : 8位

设置简断

1-

强制间断

0-

正常

寻址识别

1

:分频

0

:收发数据、中断

停止位

1:1位半或2

0

:1位停止位

决定传输时的数据帧格式(通信双方必须一致)

SOUT 强制为 1 ( Break 符

号)

Page 55: 第七章   串行通信接口

传输线状态寄存器 LSR ( BASE+5 )

D7 D6 D5 D4 D3 D2 D1 D00

恒定值

1

:发送移位空

1

:发送缓冲空1

:检测到间断

1

:帧错

1:奇偶校验错

1

:数据溢出错误

1

:接收数据就绪

反映传输时的通信线状态

Page 56: 第七章   串行通信接口

发送保持寄存器( THR)—— BASE+0要发送的数据写入此寄存器。当发送移位寄存器 TSR空时, THR中的内容移入 TSR被发送出去。只有 THR 空时, CPU 才能写入下一个要发送的数据

接收缓冲寄存器( RBR)—— BASE+0RSR收到一个完整的数据后,就将其送入 RBR中。CPU可从 RBR中读取收到的数据。RBR 只能缓冲一个数据,当 CPU未能及时取走上一个数据,下一个数据又送入 RBR时,会产生溢出错

Page 57: 第七章   串行通信接口

MODEM 控制寄存器 MCR BASE+4

D7D7 D6D6 D5D5 D4D4 D3D3 D2D2 D1D1 D0D0

1

:自测试

0

:正常

1

:OU

T2

为低

1:/O

UT

1

为低

1

:/RT

S

为低

1

:/DT

R

为低

恒为 0

产生 RTS 、 DTR 信号产生 OUT1 、 OUT2 信号设置循环自检状态

Page 58: 第七章   串行通信接口

Modem状态寄存器( MSR )— BASE+6反映 RS232 接口的状态

△CTS

△DSR

△RI

△RLSD

CTS

D7 D6 D5 D4 D3 D2 D1 D0

RLSD RI DSR

反映 4 个引脚的当前状态(反相值)

反映了自上次读MSR 后这 4 个引脚是否发生了变

化(1 =发生了变化 )

Page 59: 第七章   串行通信接口

MODEM 控制状态寄存器 MSR

D7D7 D6D6 D5D5 D4D4 D3D3 D2D2 D1D1 D0D0

1

:/RL

SD

变化过

1

:/RL

SD

为低

0

:/RL

SD

为高

1

:/RI

为低

0

:/RI

为高

1

:/RS

R

为低

0

:/DS

R

为高

1

:/CT

S

为低

0

:/CT

S

为高

1:/R

I

变化过

1

:/DS

R

变化过

1

:/CT

S

变化过

反映 RS232 接口的状态

Page 60: 第七章   串行通信接口

中断允许寄存器 IER

D7D7 D6D6 D5D5 D4D4 D3D3 D2D2 D1D1 D0D0

1

:允许M

OD

EM

中断

1:允许接收错中断

1

:允许发送中断

1

:允许接收中断

恒为 0

决定哪类中断可以产生(也可禁止所有中断产生)

Page 61: 第七章   串行通信接口

中断识别寄存器 IIR

D7D7 D6D6 D5D5 D4D4 D3D3 D2D2 D1D1 D0D0中断中断 源源 有有 // 无无

1

:有中断请求

0

:无中断请求

恒为 0 00 : MODE 中断01 :发送中断10 :接收中断11 :数据错中断

–用于识别产生中断的原因

Page 62: 第七章   串行通信接口

波特率发生器

时钟源频率 1.8432MHz

时钟频率是数据传送波特率的 16倍分频系数 =1843200/ (波特率 *16 )

Page 63: 第七章   串行通信接口

波特率与分频系数对应表 波特率 分频器 DLM ( H ) 分频器 DLL ( L )

50 09H 00H75 06H 00H

110 04H 17H150 03H 00H300 01H 80H600 00H C0H

1200 00H 60H1800 00H 40H2400 00H 30H3600 00H 20H4800 00H 18H7200 00H 10H9600 00H 0CH

11520 00H 0AH19200 00H 06H23040 00H 05H57600 00H 02H

115200 00H 01H

Page 64: 第七章   串行通信接口

8250 发送数据的工作过程

1 ) CPU( 数据 )→8250 的 THR ;2 ) TSR 移空时, THR → TSR, LSR中“数据发送保持寄存器空” 状态位置位 ;

3 ) TSR根据 LCR中规定的格式从低到高逐位发送数据 ;4 ) LSR中“数据发送保持寄存器空” 状态位可用来产生中

断,也可查询该状态位,以实现数据的连续发送。

TSR

THR

串行数据输出

并行数据LSRINT

LCR

数据状态1)

2)

3)

2)4)

4)

Page 65: 第七章   串行通信接口

8250 接收数据的工作过程

1 ) SIN引脚上的串行数据逐位进入 RSR;2 ) RSR根据 LSR中规定的数据位数确定是否收到了一个完整的数据,收到后将数据→ RBR;

3 ) RBR收到RSR的数据后,将 LSR 寄存器中“接收缓冲寄存器满”的状态位置位;

4 ) LSR中“接收缓冲寄存器满”状态位可用来产生中断,也可查询该状态位,以实现数据的连续接收。

RSR

RBR

串行数据输入并行数据

LSRINT

LCR

数据状态

1)

2)

3)4)

Page 66: 第七章   串行通信接口

8250初始化及应用编程

8250 8250 的初的初始化始化流程流程

使 LCR 的最高位= 1

写除数寄存器

写 LCR 寄存器,同时使 LCR 的最高位= 0

写 MCR 寄存器

写 IER 寄存器

Page 67: 第七章   串行通信接口

8250初始化

8250 串口芯片的初始化编程就是设置波特率、确定串行通信的数据帧格式、中断的设置等。

【例 1】要求串行数据帧包含 8 位有效数据、 1 位停止位、采用奇校验方式,请编写满足该要求的 8250/16550 的初始化程序

根据线控寄存器 LCR 的约定,控制字为 00001011B ,初始化程序如下:MOV AL , 00001011B ;控制字

MOV DX , 3FBH ;线控寄存器端口地址 OUTDX , AL ;写入控制字

Page 68: 第七章   串行通信接口

编写设置波特率为 9600 的初始化程序。根据公式计算,波特率为 9600 时,分频值为 000CH

MOV AL , 10000000B ;设置波特率时;要求特征位 DLAB 为 1

MOV DX , 3FBH ;线控寄存器端口地址OUT DX , AL ;写入特征位MOV AL , 0CH ;波特率分频值低字节MOV DX , 3F8H ;分频值低位端口地址OUT DX , AL ;写入分频值低位MOV AL , 00H ;波特率分频值高字节INC DX ;分频值高位端口地址OUT DX , AL ;写入分频值高位

Page 69: 第七章   串行通信接口

用 BIOS 功能初始化 8250

PC 机有两个串行接口:COM1(基地址 3F8H), COM2(基地址 2F8H)

BIOS 通过中断 14H 提供串行通信功能功能 0 :初始化串行接口功能 1 :发送一个字符功能 2 :接收一个字符功能 3 :读串行接口状态

INT14H仅提供了查询方式的通信服务要使用中断方式进行发送和接收必须自行编程

Page 70: 第七章   串行通信接口

用 BIOS 功能初始化 8250

功能 0 (初始化)的入口参数为:AH=0

AL=初始化参数DX= 串口编号( 0=COM1, 1=COM2 )

初始化参数定义如下:

D7 D6 D5 D4 D3 D2 D1 D0

波特率100 = 1200101 = 2400110 = 4800111 = 9600

奇偶校验x0 =无校验01 =奇校验11 =偶校验

数据位数00 = 5 位01 = 6 位10 = 7 位11 = 8 位

停止位0 = 1位1 = 2位

MOV AH, 0

MOV AL, 初始化参数MOV DX, 0

INT 14H

Page 71: 第七章   串行通信接口

8250 的数据发送程序 (查询 )

LEA SI, DATA_BUFFER

MOV CX, DATA_BYTES

L1: MOV DX, BASE+5 ;LSR地址 IN AL, DX

TEST AL, 00100000B ;THR空 ?

JZ L1

LODSB

MOV DX, BASE+0 ;THR地址

OUT DX, AL

LOOP L1

… …

THR 空?

输出一个字节

输出完?

N

Y

Y

N

Page 72: 第七章   串行通信接口

8250 的数据接收程序 (查询 )

LEA DI, DATA_BUFFER

MOV CX, DATA_BYTES

L1: MOV DX, BASE+5 ; LSR地址 IN AL, DX

TEST AL, 00011110B ; 有错误 ?

JNZ ERROR

TEST AL, 00000001B ; 收到数据 ?

JZ L1

MOV DX, BASE+0 ; RBR地址 IN AL, DX

STOSB

LOOP L1

… …

有错误?

读入数据

收到数据?

N

Y

Y

N错误处理

接收完?N

Y

Page 73: 第七章   串行通信接口

用 BIOS 功能发送 / 接收数据

通过 COM1 发送数据: LEA SI, DATA_BUFFER

MOV CX, DATA_BYTES

L1: MOV AH, 1 ; 功能 1

MOV DX, 0 ; COM1

LODSB ; 数据在 AL中

INT 14H ; 发送 LOOP L1

… …

通过 COM1 接收数据: LEA DI, DATA_BUFFER MOV CX, DATA_BYTESL1: MOV AH, 3 ; 功能 3 MOV DX, 0 ; COM1 INT 14H ; 读接口状态

TEST AH, 00011110B ; 有错误 ? JNZ ERROR TEST AH, 00000001B ; 有数据 ? JZ L1 MOV AH, 2 ; 功能 2 MOV DX, 0 ; COM1 INT 14H ; 接收数据 STOSB ; 保存数据 LOOP L1

Page 74: 第七章   串行通信接口

8250 通信编程

对 8250 编制通信软件时,首先应对芯片初始化,然后按程序查询或中断方式实现通信。 1. 8250初始化 ( 1 )设置波特率 ( 2 )设置串行通信数据格式 ( 3 )设置工作方式 2. 程序查询方式通信编程 3. 用中断方式编程( 1 )初始化8259A中断控制器( 2 )设置中断向量IR4 ( 3 )设置允许/屏蔽位 ( 4 ) 8250重新响应中断请求

Page 75: 第七章   串行通信接口
Page 76: 第七章   串行通信接口

设置波特率

例如,设波特率为 9600 ,则波特率因子 N=12MOV DX , 3FBH

MOV AL , 80H ;设置波特率

OUT DX , AL

MOV DX , 3F8H

MOV AL , 12

OUT DX , AL

INC DX

MOV AL , 0

OUT DX , AL ; 3F9H 送 0

1. 82501. 8250初始化初始化

Page 77: 第七章   串行通信接口

设置串行通信数据格式

例如,数据格式为 8 位, 1 位停止位,奇校验。

MOV AL , 0BH

MOV DX , 3FBH

OUT DX , AL

Page 78: 第七章   串行通信接口

设置工作方式 ( MODEM 控制寄存器)

无中断:

MOV AL , 3 ; OUT1 、 OUT2均为 1MOV DX , 3FCHOUT DX , AL 有中断:

MOV AL , 0BH ; OUT2 为 0 ,允许 INTRT去申请中断MOV DX , 3FCHOUT DX , AL 循环测试: MOV AL , 13HMOV DX , 3FCHOUT DX , AL

Page 79: 第七章   串行通信接口

2 程序查询方式通信编程

采用程序查询方式工作时, CPU 可以通过读线路状态寄存器( 3FDH )查相应状态位( D0 与 D5 位),来检查接收数据寄存器是否就绪( D0=1 )与发送保持器是否空( D5=1 )。 发送程序:TR : MOV DX , 3FDH

IN AL , DXTEST AL , 20H JZ TR MOV AL ,[ SI ] ;从[ SI ]中取出发送数据

MOV DX , 3F8H OUT DX , AL

接收程序:RE : MOV DX , 3FDH

IN AL , DX TEST AL , 1 JZ RE MOV DX , 3F8H IN AL , DX MOV [ DI], AL ;读入数据存入[ DI]中

Page 80: 第七章   串行通信接口

初始化 8259A 中断控制器

MOV AL , 13H ;单片使用,需要 ICW4

MOV DX , 20H

OUT DX , AL ; ICW1

MOV AL , 8 ;中断类型号为 08H ~ 0FH

INC DX

OUT DX , AL ; ICW2

INC AL ;缓冲方式, 8088/8086 ( 1X01 )OUT DX , AL ; ICW4

MOV AL , 8CH ;允许 0 , 1 , 4 , 5 , 6级中断 OUT DX , AL ;送中断屏蔽字 OCW1

3. 3. 用中断方式编程用中断方式编程

Page 81: 第七章   串行通信接口

设置中断向量 IR4

对 IR4 ,中断类型号为 0CH , 0CH×4=30H 。因此,应在 30H 、 31H 存放 IP 值, 32H 、 33H存放 CS值。设中断服务程序入口地址为 2000H : 100HXOR AX , AX MOV DS , AX MOV AX , 100H MOV WORD PTR[ 0030H], AX ;送 100H到 00030H 和 00031H内存单元中MOV AX , 2000HMOV WORD PTR[ 0032H], AX ;送 2000H到 00032H 和 00033H内存单元中

Page 82: 第七章   串行通信接口

设置允许 /屏蔽位

对 8250 送中断允许寄存器( 3F9H )设置允许 /屏蔽位。例如,允许发送与接收中断请求。 MOV AL , 3

MOV DX , 3F9H

OUT DX , AL

Page 83: 第七章   串行通信接口

对 8259A 发 EOI命令

在中断结束返回时,需要对 8259A 发 EOI命令,保证 8250 可以重新响应中断请求。MOV AL , 20H

MOV DX , 20H

OUT DX , AL ;发 EOI命令, OCW2

IRET ;开中断允许,并从中断返回

Page 84: 第七章   串行通信接口

8250 应用举例

程序设计要求:在 IBM PC 机上用汇编语言按查询方式编制一个发送与接收程序,它能把键入的每一个 ASCII 字符发送出去,并显示在 CRT 上,同时能把接收到的每一个字符也以 ASCII码形式显示在 CRT屏幕上。

设:数据传送速率为 9600 波特:通信格式为 8 位 / 每字符, 1 位停止位,奇校验。

KEY : MOV DX , 3FBH

MOV AL , 80H

OUT DX , AL

MOV DX , 3F8H

MOV AL , 12

OUT DX , AL ;写入对应波特率为 9600 的波特因子的低 8 位

INC DX

MOV AL , 0

OUT DX , AL ;写入波特因子的高 8 位

MOV AL , 0BH

MOV DX , 3FBH

OUT DX , AL ; 8 位字符, 1 位停止位,奇校验

Page 85: 第七章   串行通信接口

8250 应用举例(续 1 )

MOV AL , 13H MOV DX , 3FCH OUT DX , AL ;循环测试

CHECK : MOV DX , 3FDH IN AL , DX ;读线路状态寄存器

TEST AL , 1H ;查接收缓冲器是否满,若满转接收子 程序

JNZ REV TEST AL , 20H ;查发送缓冲器是否空,不空转 CHECK

JZ CHECKTR : MOV AH , 1 ;读键盘缓冲器内容,若有键按下,则

ZF 标志为 0 ,且 AL= 字符码 INT 16H JZ CHECK ;如 ZF=1 ,转 CHECK MOV DX , 3F8H OUT DX , AL ;将键入代码发送出去

Page 86: 第七章   串行通信接口

8250 应用举例(续 2 )

JMP CHECK

REV : MOV DX , 3F8H

IN AL , DX ;读入接收字符

AND AL , 7FH ;屏蔽掉 D7

MOV BX , 0041H ; BH=00H ,选 0页; BL=41H ,显示属性(红底兰字)

MOV AH , 14 ;用中断调用显示接收到的字符

INT 10H

JMP CHECK