第 12 章
串行通信和串行接口
第12章 串行通信和串行接口
本章重点:
掌握串行通信的概念;串行通信的标准;可编程通用串行通信接口 8251A芯片的结构、功能、编程和使用方法。
本章难点:
在实际应用中正确地连接可编程通用串行通信接口 8251A芯片,并编写正确的应用程序。
计算机与外部设备之间或计算机与计算机之间的信息交换或数据传输称为通信。通信的有两种基本方式:并行通信和串行通信。并行通信是指数据的各位同时进行传送,而串行通信是指数据一位一位地按顺序传送。
概述
串行通信是指两个功能模块只通过一条或两条数据线进行数据交换。在串行通信中,数据通常是在两个站(如终端或微机)之间进行传送。
按照数据传送的方向的不同,可分三种基本的传送方式:单工方式、半双工方式和全双工方式。
概述
串行数据传送方向
串行通信中常用的同步方法有两种:同步方式和异步方式,也称同步通信和异步通信。
异步通信把每一个字符当作独立的信息来传送,并按照一固定且预定的时序传送。每一个字符为一帧信息,由4部分组成:起始位、数据位、校验位和停止位。
串行数据传送方向
同步方式是将许多的字符聚集成一字符块后,在每块信息(常称为信息帧)之前加上1至2个同步字符,字符块之后再加入适当的错误检测数据才传出去。
波特率,是指单位时间内传送二进制数据的位数,单位为位/秒(b/s) ,是衡量串行数据速度快慢的重要指标。
调制器把数字信号转换成模拟信号,送到通信链路上传输,解调器把从通信链路上接收到的模拟信号转换成数字信号。
串行数据传送方向
目前,串行通信中使用得最普遍的是EIA RS-232C标准, 也称为串行接口标准。RS-232C标准对串行通信接口的相关问题做了统一规定。
RS-232C标准中使用负逻辑定义信号逻辑电平,即:
逻辑“1”电平-3~-15V;
逻辑“0”电平;+3~+15V。
串行通信的物理标准
RS-232C标准中共定义了25条信号线,其中4条数据线,11条控制线,3条定时线,7条备用和未定义线。
RS-232C接口通往外部的连接器(插针和插座)是标准的D型25针插头。
近距离(小于15m)通信时,可以不使用MODEM,通信双方直接相连,使用的信号线较少。而远距离(大于15m)通信时要加接MODEM,使用的信号线较多。
串行通信的物理标准
1. 数据格式化
2. 串并转换
3. 控制数据传输速率
4. 错误检测
5. TTL与EIA电平转换
6. 提供符合EIARS-232C接口标准的信号线
串行通信的物理标准
串行接口基本功能
串行接口电路的内部一般除了有完成数据串并转换的部件外,还有4个主要的寄存器。即控制寄存器、状态寄存器、数据输入寄存器和数据输出寄存器。4个寄存器通常被CPU访问。
在接收过程中,由内部控制电路自动进行错误检查,包括奇偶错误、帧格式错误和溢出错误。
串行接口的基本结构
Intel8251A是一种通用同步/异步数据接受发送器,广泛应用于微型计算机。
8251A可以分成5个主要部分:接收器、发送器、调制/解调控制、读写控制逻辑以及数据总线缓冲器。 8251A的结构如图所示。
可编程通用串行通信接口 8251A
可编程通用串行通信接口 8251A
8251A是一个采用NMOS工艺制造的28条引脚双列直插式芯片,其外部引脚如图所示。
可编程通用串行通信接口 8251A
8251A的引脚功能
与CPU相连的信号线
D7~D0 三态双向数据总线
CLK 时钟信号输入线
片选信号输入线
信息类型信号输入线
TxRDY 发送准备好信号状态输
出线
TxE 发送器空闲状态信号输
出线
RxRDY 接收器准备好状态信号
输出线
SYNDET同步检测信号线
8251A的引脚功能
与外设或调制解调器相连的信号线:
数据终端准备好状态输出线;
数据设备准备好状态输入线;
请求传送信号输出线;
清除发送(准许传送)信号输入
线;
接收器时钟输入线;
接收器数据输入线;
发送器时钟输入线;
发送器数据输出线。
8251A的引脚功能
8251A的工作方式需要初始化编程,用两种控制字进行设置,即方式控制字和操作控制字,还有一个供CPU查询的状态字。
8251A的引脚功能
方式控制字用于约定双方通信的方式(同步/异步)及其数据格式(数据位和停止位长度,检验特性,同步字符特性)、传送速率(波特率因子)等参数,格式如图所示。
1、方式控制字
操作控制字用于指定8251A进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种工作状态,以便接收或发送数据,其格式如图所示。
2. 操作控制字
状态字用于报告8251A何时才能开始发送或接收,以及接收数据有无错误。状态字为8位,其状态字格式如图所示。
3. 状态字
8251A是一个可编程的多功能通信接口,在系统复位以后,在8251A工作以前进行初始化编程,确定具体工作方式。初始化编程的过程的流程图如图所示。
8251A的初始化编程
例如 编写一段通过8251A采用查询方式接收数据的程序。将8251A定义为异步传送方式,波特率因子为64,采用偶校验,1位停止位,7位数据位。设8251A数据口地址为04A0H,控制口地址为04A2H。
8251A的初始化编程
程序片段如下:
MOV DX,04A2H
MOV AL,7BH ;写方式控制字
OUT DX,AL
MOV AL,14H ;写操作控制字
OUT DX,AL
WAIT:IN AL,DX ;读入状态字
AND AL,02H
JZ WAIT ;检查RRDY是否为1
MOV DX,04A0H
IN AL,DX ;输入数据
例如 编写使8251A发送数据的程序。将8251A定义为异步传送方式,波特率因子为64。采用偶校验,1位停止位,7位数据位。8251A与外设有握手信号,采用查询方式发送数据。设8251A数据口地址为04A0H,控制口地址为04A2H。
程序片段如下:
MOV DX, 04A2H
MOV AL, 7BH ;写方式控制字
OUT DX, AL
MOV AL, 31H ;写操作控制字
OUT DX, AL
WAIT:IN AL, DX ;读入状态字
AND AL, 01H ;检查TxRDY是否为1
JZ WAIT
MOV DX, 04A0H
MOV AL, 36H ;输出的数据送AL
OUT DX, AL
程序片段如下:
MOV DX, 04A2H
MOV AL, 7BH ;写方式控制字
OUT DX, AL
MOV AL, 31H ;写操作控制字
OUT DX, AL
WAIT:IN AL, DX ;读入状态字
AND AL, 01H ;检查TxRDY是否为1
JZ WAIT
MOV DX, 04A0H
MOV AL, 36H ;输出的数据送AL
OUT DX, AL
本章完
谢谢大家