当前位置:课程学习>>第六章>>知识讲解>>视频课堂>>知识点五


知识点五: 可编程串行通信接口芯片8251A




本节请也参见[e10 附录 芯片速查表\1 速查表.docx]。

1. 串行数据传送概念

计算机传送数据有两种方式:一种是并行通信,一种是串行通信。

二者对比如下。

并行通信一般是8位以上的数据一起传送,具体是多少位要根据设备的线宽来决定。由于并行通信方式使用的信号线较多,一般用在短距离的数据量大场合。

串行通信是指利用一条传输线将数据一位一位地按顺序分时传输。一般用于长距离的数据偏传送。

以下分别是单工单双工全双工的传送方式原理示意。

传输速率

在并行通信中,传输速率用每秒传输的字节数表示,单位是:Bps。

在串行通信中,传输速率用波特率来表示。波特率是指单位时间内传送的二进制数据的位数,是衡量串行数据传送速度的重要指标。波特率的单位是:波特,1波特=1位/秒(bps)。

常见的标准波特率有:110bps、1200bps、9600bps和115200bps。

发送/接收时钟

在发送数据时,发送器在发送时钟的有效沿作用下将移位寄存器的数据按位移位串行输出;在接收数据时,接收器在接收时钟的有效沿作用下对接收数据按位采样,并按位串行移入移位寄存器。

发送/接收时钟是对数据信号进行同步的,其频率将直接影响设备发送/接收数据的速度。发送/接收时钟频率一般是发送/接收波特率的n倍,n称为波特率因子,一般取1、16、32或64。

发送时钟与传送数据对对应关系,如下图所示。

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

串行通信中,传输距离随着传输速率的增加而减小。

异步串行通信

异步串行通信中的异步是指发送端和接收端不使用共同的时钟,也不在数据中传送同步信号,但接收方与发送方之间必须约定传送数据的帧格式和波特率。

在异步串行通信中,通信双方以一个字符(含附加位)作为数据传输单位(一个数据帧),而且发送方传送字符的时间是不定的。在传输一个字符时,总是以起始位(1位,低电平)开始,以停止位(1、1.5或2位,高电平)结束。为了使数据可靠传送,还可包含奇偶校验位。

同步串行通信

在异步串行通信中数据的每一帧都需要附加起始位和停止位,因而降低了传送有效数据的效率。对于快速传送大量数据的场合,为了提高数传的效率,一般采用同步串行传送方式。

同步传送时,无需起始位、停止位。每一帧包含较多的数据,在每一帧开始处使用1-2个同步字符以表示一帧的开始。

同步传送要求对传送的每一位在收发两端保持严格同步,发送、接收端可使用同一时钟源以保证同步。

2. 介绍8251A的基本功能

能以同步方式异步方式进行工作。

工作于同步方式时,每个字符可定义为5、6、7或8位,可以选择进行奇校验、偶校验或不校验。内部能自动检测同步字符实现内同步或通过外部电路获得外同步,波特率为0~64K。

工作于异步方式时,每个字符可定义为5、6、7或8位,用1位作为奇偶校验(可选择)。时钟速率可用软件定义为通信波特率的1、16或64倍。能自动为每个被输出的数据增加1个起始位,并能根据软件编程为每个输出数据增加1个、1.5个或2个停止位。异步方式下,波特率为0~19200bps。

8251A能进行出错检测,具有奇偶、溢出和帧错误等检测电路。

具有独立的接收器和发送器,因此,能够以单工、半双工或全双工的方式进行通信。并且提供一些基本控制信号,可以方便地与调制解调器连接。

3. 内部结构

8251A主要由5个功能模块组成,包括数据总线缓冲器、接收器、发送器、读/写控制逻辑和调制解调器控制电路。8251A内部通过内部数据总线实现相互之间数据传送。

读写控制

4. 引脚

8251A采用28个引脚双列直插式封装。

5. 工作方式

8251共有2个端口地址,

数据输入口端口 和 输出输出端口共同同一端口地址,

状态端口 和 控制端口 共同同一端口地址,

RD由和 WR信号区别。

CSRDWR、C/D信号共同决定CPU对8251A的具体操作。

6. 编程

6.1 8251A的命令字和状态字

(1) 方式选择命令字

(2) 工作命令字

(3) 状态字

6.2 8251A的初始化编程

(1) 初始化编程步骤

第一步:芯片复位后,第一个写入奇地址端口的是方式选择命令字。约定双方的通信方式,数据格式及传输速率等参数。

第二步:如果方式选择命令字规定了8251A工作在同步方式,那么,接下来必须向奇地址端口写入规定的1个或2个同步字符。

第三步:只要不是复位命令,不论同步方式还是异步方式,接下来还需向奇地址端口写入工作命令字。

(2) 复位命令

要改变8251A的工作方式,必须先复位,再重新设置方式。8251A有两种复位方式:硬件复位和软件复位。

软件复位是编程中常采用的方法。软件复位的步骤是:

向控制/状态端口连续写入3个0;

写入控制字40H。

请同学们进入下一个知识点的学习