一、串行通信概述
采用串行通信的原因主要是为了降低通信线路的价格和简化通信设备,并且可以利用现有的通信线路。目前,随着微型计算机性能的提高和价格的降低,微型计算机在通信领域中的应用日益增多,它不仅可以作为智能终端同其他计算机进行数据通信,而且微型计算机本身也可以带有若干其他的终端(如CRT显示器终端,打印机终端等),以及在微型计算机和微型计算机之间进行数据通信。为此,大多数微型计算机都备有各种串行通信接口,这些接口是由相应的器件和线路实现的。
(一)并行通信和串行通信
在计算机领域中,有两种数据通信方式——串行传送和并行传送。
1. 并行传送
数据在多条并行1位宽的传输线上同时由源传送到目的。以1字节的数据为例,在并行传送中,1字节的数据通过8条并行传输线同时由源传送到目的。
2. 串行传送
数据在单条1位宽的传输线上,一位一位地按顺序分时传送,也以1字节的数据为例,在串行传送中,1字节的数据要通过一条传输线分8次由低位到高位按顺序一位一位地传送。
并行传送和串行传送的示意图见图7-25。
图7-25 并行与串行传送的示意图
3. 并行传送与串行传送的比较
(1)从距离上看。并行通信适宜于近距离的数据传送,通常小于30m,而串行通信适宜于远距离传送,可以从几米到数千公里。
(2)从速度上看。在短距离内,并行接口的数据传输速度显然比串行接口的传输速度高得多。另一方面串行和并行数据传送速率与距离成反比。
(3)从设备、费用上看。随着大规模和超大规模集成电路的发展、逻辑器件价格趋低,而通信线路费用趋高,因此对远距离通信而言,串行通信的费用显然会低得多。另一方面串行通信还可利用现有的电话网络来实现远程通信,降低了通信费用。
(二)同步通信与异步通信
所谓“串行通信”是指数据是一位一位顺序传送。在单行通信中有两种基本的通信方式,即异步通信ASYNC(Asynchronous Data Communication)和同步通信SYNC(Synhronous Data Communication)。
1. 异步通信
在异步通信中,CPU与外设之间有两项约定:
(1)字符格式。即字符的编码形式及规定,每个串行字符由以下4个部分组成:
1)1个起始位,低电平;
2)5~8个数据位(如标准ASCⅡ码,则为7位);
3)1个奇偶校验位(作为检错用);
4)1~2个终止位(停止位),高电平。
图7-26为串行码字符传送的两种格式。
图7-26 异步串行码格式
(a)小于最高数据传送率;(b)最高数据传送率
起始位后面紧跟的是要传送字符的最低位,每个字符的结束是一个高电平的终止位,起始位至终止位构成一帧。相邻两个字符之间的间隔可以是任意长度的,以便使它有能力处理实时的串行数据。两个相邻字符之间叫空闲位,为高电平。然而,下一个字符的开始,必然以高电平变成低电平起始位的下降沿作为标志。图7-26(a)示出小于最高数据传送率的格式,其最高数据传送率的格式即为在相邻字符之间去除空闲位后的格式,如图7-26(b)所示。
(2)波特率(Baud rate)。波特率是指单位时间内传送二进制数据的位数,以位/s为单位,它是衡量串行数据传送速度快慢的重要标志和参数。
假如数据传送速率是120字符/s,而每一个字符格式规定包含10位二进制数据(1位起始位、1位终止位、7位数据位、1位奇偶校验位)则传送的波特率为
10×120=1200位/s=1200波特
而每个数据位的传送时间Td即为波特率的倒数:
Td=1/1200=0.833ms
异步通信的传送速度一般在50~19200波特之间,常用于计算机到CRT终端和字符打印机之间的通信等。
2. 同步通信
在异步传送中,每一个字符要用起始位和终止位作为字符开始和结束的标志,占用了一些时间,因而在数据块传送时,为了提高速度,就要设法去掉这些标志,而采用同步传送。此时,在数据块开始处要用同步字符来指明,如图7-27所示。
图7-27 同步字符
同步传送速度高于异步传送速度,可达500千波特。但它要求有时钟来实现发送端及接收端之间的同步,故硬件电路比较复杂。通常用于计算机之间的通信或计算机到CRT等外设之间的通信等。
(三)串行通信的传送方向
通常串行通信数据在两个站(或设备)A与B之间传送,有单工、半双工、全双工三种传送,如图7-28所示。
图7-28 单工和双工
(a)单工;(b)半双工;(c)全双工
(1)单工(Simplex)。仅能进行一个方向的传送,即A只能作为发送器,B只能作为接收器。
(2)半双工(Half-Duplex)。能交替地进行双向数据传送,但两设备之间只有一根传输线,因此两个方向的数据传送不能同时进行。
(3)全双工(Full-Duplex)。A、B之间有两条传输线,能在两个方向上同时进行数据传送。
(四)信号的调制与解调
计算机通信传送的是数字信号,如图7-29所示,它要求传送的频带很宽,而计算机在远程通信中通常是通过载波电话(Carrier Telephone)线传送的,不可能有这样宽的频带。如果数字信号直接进行通信,经过传输线后必然会产生畸变。如图7-30所示。因此,在发送端必需采用调制器把数字信号转换为模拟信号,即对载波电话线上载波进行调制;而在接收端又必须用解调器检出发送端来的模拟信号,并恢复为原来的数字信号,如图7-31所示。
图7-29 通信信号示意图
图中Modem即调制—解调器(Modulator-Demodulator),是计算机远程通信中的一种辅助设备。按调制方式,Modem可分三类:即调幅、调频和调相。其中,调频方式是常用的一种调制方式。调频时,数字信号“1”与“0”被调制成易于鉴别的两个不同频率的模拟信号。这种形式的调制称为频移健控FSK(Frequency Shift Keying),其原理如图7-32所示。
图7-31 调制与解调示意图
图7-32 FSK调制法原理图
两个不同频率的模拟信号分别由电子开关控制,在运算放大器的输入端输入,而电子开关由需要传输的数字信号(即数据)来控制。当信号为“1”时,控制1号电子开关导通,送出一串频率较高的模拟信号;当信号为“0”时,控制2号电子开关导通,送出一串频率较低的模拟信号。于是在运算放大器的输出端,就得到了调制后的信号。
(五)异步通信规程
在数据传送过程中,为了正确地进行数据传送而制定了各种传送控制规程。串行通信中的控制规程很多,但在微型计算机中主要使用三种通信控制规程,即异步控制规程(ASYNC),同步控制规程(BISYNC)和高级数据链路控制规程(HDLC)。IBM PC/XT机具有异步和同步两种通信功能。目前,对每一种通信控制规程,都有相应的大规模集成电路的接口片子去实现。
上述三种通信规程中使用最多的是异步通信控制规程。异步的含义是发送器和接收器不共享共用的同步信号,也不在数据中传送同步信号。为了确认被传送的脉冲序列从某处到某处表示1个字符,它的定时控制方法是在1个字符的首尾放置起始符号和停止符号,供接收端用起始符号和停止符号判断1个字符,所以这种通信控制规程有时也称为起止同步控制方式或无规程控制方式。图7-26所示为异步串行通信所使用的位格式。当发送器不工作(处于空闲状态)时,它维持线路处在连续的“1”状态(高电平的“传号”状态)。发送器可以在任一时刻通过传送起始位,即在线路上放置1个位时间的“空号”状态(低电平),启动一个字符的传送、接着传送数据位(低位在前,高位在后),其后是可供选择的奇数或偶数检查位(如果选择偶数检查,数据位和奇偶位中1的数目应是偶数)。最后,发送器维持线路处在“传号”(MARK)状态,其维持时间可以为1、1.5或2位,把它们称为停止位。
从起始位到停止位结束的时间周期称为1帧(FRAME)。在停止位以后,如果有另一个字符要传送,发送器可以立即传送1个新的起始位。否则,发送器一直维持线路处在传号状态。自最后1个停止位起,发送器可以在任一时刻(不需要是位时间的整数倍)传送1个新的起始位。
在大多数微型计算机中,奇偶位之前还可以传送和接收可供选择的第八个数据位。对于第八个数据位,有如下四种情况:不传送,恒为1,恒为0或有用的数据。如果是后一种情况,则可以产生外加的128种非ASCⅡ字符代码,用以扩充字符组,或用于专门的控制功能,在串行电路中进行传送。
在异步通信中是由数据时钟控制数据的发送和接收的,为了保证数据的正确传送,还必须保证发送和接收的双方有相同的数据传送速率。如前述在一般串行通信中,数据位的传送速率称为波特率。标准的位速度有75,110,150,300,600,1200,2400,4800,9600和19200位/s。
串行通信接口直接发送由直流电平表示的数据,难以传送很远的距离,通常,为了使传送距离增加,需要加大电平的幅值,电平幅值的增加,又会影响数据的传送速率,在电平幅值一定的情况下,数据传送的距离和数据传送的速率成反比。
为了实现远距离传送数据,可以通过调制-解调器(MODEM)把直流电平转换成交流信号,通过通信线路进行传送。
(六)RS-232C串行接口标准
1. 概述
一个完整的串行通信系统如图7-33所示,该通信系统包括数据终端设备(DTE)和数据通信设备(DCE)。
图7-33 串行通信系统
(1)数据终端设备DTE(Data Terminal Equipment)。DTE是产生二进制信号的数据源,也是接收信息的目的地,是由数据发送器或接收器或兼具两者组成的设备,它可以是一台计算机。
(2)数据通信设备DCE(Data Communication Equipment)。DCE是一个使传输信号符合线路要求,或者满足DTE要求的信号匹配器,它是提供数据终端设备与通信线路之间通信的建立、维持和终止连接等功能的设备,同时执行信号变换与编码。它可以是一个MODEM。
在DTE与DCE之间传输的是“l”或“0”的数据,同时传送一些控制应答信号,以协调这两个设备之间的工作。
RS-232C(RS即Recommended Standard推荐标准之意)是由美国电子工业协会(EIA--Electronic Industries Association)推荐的标准接口,它是应用于串行二进制交换的数据通信设备和数据终端设备之间的标准接口。
1)数据“0”(“空号”,space)及控制线的接通状态规定为+3~+15V;
2)数据“1”(“传号”,mark)及控制线的断开状态规定为-3~-15V;
3)噪声容限为±(3~5)V;
4)当输入恰好为±3V时,分别确定为空号和传号,当输入端开路时,终端定为传号。
RS-232C规定的逻辑电平同TTL及MOS电平不一样,实现两种电平转换可用两种方法,一种是用晶体管电路作电平转换,另一种是用集成收发器电路,如图7-34所示。图中集成电路芯片MC1488和MC1489专用于TTL电平和RS-232C电平的转换。
图7-34 集成电路转换电路
2. 接口功能
RS-232C标准规定使用DB-25插头座(25引脚),每个引脚的信号定义见表7-10。表中信号的表示有两种形式:一种是在“代号”栏中表示的,如BA(103),括号中的编号是CCITT的V.24用的表示符号。另一种是在“其它表示方法”栏中表示的,如TD,这是.在串行接口电路中的信号表示。CCITT(国际电话电报委员会,Consultative Committee on International Telephone and Telegraph)的V.24标准建议文本也是适用于DTE和DCE连接的标准,它同RS-232C的基本规定是相同的。信号传送方向中的T表示DTE、M表示DCE。
表7-10 RS-232C接口功能定义
引脚号 |
名 称 |
代号(CCITT) |
其它表示方法 |
方向 |
1 |
保护地(屏蔽) |
AA(101) |
|
|
2 |
发送数据 |
BA(103) |
TD.SD |
T→M |
3 |
接收数据 |
BB(104) |
RD |
T→M |
4 |
请求发送 |
CA(105) |
RS.RTS |
T→M |
5 |
允许发送 |
CB(106) |
CS、CTS |
T→M |
6 |
DCE就绪 |
CC(107) |
DSR、MR(MODEM就绪) |
T→M |
7 |
信号地(公共回路) |
AB(102) |
|
|
8 |
接收线路信号检测器 |
CF(109) |
RLSD、DCD(载波检测) |
T→M |
9 |
测试预留 |
|
+V(+10V DC) |
|
10 |
测试预留 |
|
-V(-10V DC) |
|
11 |
未定义 |
|
|
|
12 |
第二接收线路信号检测器 |
SCF(122) |
|
T→M |
13 |
第二允许发送 |
SCB(121) |
|
T→M |
14 |
第二发送数据 |
SBA(118) |
NS(重新同步) |
T→M |
15 |
发送器信号元定时 |
DB(114) |
SCT(串行时钟发送) DCT(分频时钟发送) |
T→M |
16 |
第二接收数据 |
SBB(119) |
|
T→M |
17 |
接收器信号元定时 |
DD(115) |
SCR(串行时钟接收) DCR(分频时钟接收) |
T→M |
18 |
未定义 |
|
|
|
19 |
第二请求发送 |
SCA(120) |
|
T→M |
20 |
DTE就绪 |
CD(108.2) |
DTR |
T→M |
21 |
信号质量检测 |
CG(110) |
SQ |
T→M |
22 |
振铃检测 |
CE(125) |
RI |
T→M |
23 |
数据速率选择 |
CH(111) CI(112) |
SS(数据速率选择) |
T→M T←M |
24 |
发送器信号元定时 |
DA(113) |
SCTE(向外提供串行发送时钟) |
T→M |
25 |
未定义 |
|
C/D |
|
|
|
数据线功能特点 |
0 |
0 |
1 |
0 |
8251A数据→数据总线 |
0 |
1 |
0 |
0 |
数据总线→8251A数据 |
1 |
0 |
1 |
0 |
8251A状态→数据总线 |
1 |
1 |
0 |
0 |
数据总线→8251A控制字 |
X |
1 |
1 |
0 |
高阻 |
X |
X |
X |
1 |
高阻 |
2. MODEM控制信号
8251A还提供了四个与MODEM相连的控制信号,信号的含义与RS232C标准相同。
(1) (Data Terminal Ready)——数据终端准备好(输出,低电平有效)。这是一个通用的输出信号,可由命令字的位1置“1”,而变为有效,用以表示CPU准备就绪。
(2) (Data Set Ready)——数据装置准备好(输入,低电平有效)。这是一个通用的输入信号,用以表示调制解调器或外设的数据已准备好。CPU可通过读入状态操作,在状态寄存器的位7检测此信号。
(3) (Request To Send)——请求发送(输出,低电平有效)。此信号用于通知调制器,CPU已准备好发送。它可由命令字的位5置“1”而变为有效(低电平有效)。
(4) (Clear To Send)——清除发送信号(输入,低电平有效)。这是调制解调器或其它外设送到8251A中的调制解调器控制器的信号。当其有效时,表示允许USART发送数据。
上述四个信号在使用时应按规定引脚连接。信号在传输过程中, 由MODEM输入后存放在8251A的状态字节中,芯片内对此并不作处理,只有当CPU读状态后才可能给出响应。 也是从MODEM送来的信号,如果为低电平,且8251A中已经设置了允许发送命令,芯片就可以向MODEM送出串行数据。如果在数据传送中,出现了某个条件不满足的情况,那么,在传输完当前的字节后,即行停止。 和 都是由CPU写命令时给8251A设置的,为使两个引脚有效(低电平),对寄存器中这两位应写入“1”。
3. 发送器有关信号
(1)TXD发送数据。发送缓冲器从数据总线上接收数据,转换成串行数据,并按要求插入附加字符或附加位后,在时钟 的下降沿按位从TXD上发送出去。
(2)TXRDY。发送器准备好信号。如果该信号有效,就表示发送缓冲器已空,CPU可以向芯片送入新的数据。这个信号的状态要受到命令字中TXEN位(允许发送)的控制。如果把TXRDY信号作为向CPU请求数据的中断信号,TXEN位就可以看作是中断控制的屏蔽位。在825lA的状态字中有一位TXRDY,CPU也可以用查询的方式判断是否可以送数据。
(3)TXE。发送缓冲器空标志。不管发送时是处于等待还是发送状态,只要发送缓冲器中没有再要发送的字符,这个标志就变高。当从CPU送入一个数据字符时,该位标志就被复位。这个标志可以用来表示一段数据传输的结束。如果是半双工工作,这个标志可以用作从发到收的转换。同步工作时,如果临时出现TXE,就意味着数据发送出现空缺,芯片会自动插补同步字符。
(4) 。输入控制发送器数据速率的时钟。每个数据的移位输出,是在TXC的下降沿实现的。异步方式下,TXC的频率可以是数据速率的l、16或64倍。同步方式时,TXC的频率与数据速率相同。
4. 接收器有关信号
(1)RXD。接收数据。用来接收外设送来的串行数据,按规定检查有关字符或有关位后,经串一并转换送入数据总线缓冲器,RXD在时钟 上升沿采样输入。
(2)RXRDY。接收器准备好标志。如果该位为高电平,接收缓冲器中就已经有组装好了的一个数据字符,可通知CPU将它取走。与TXRDY相似,RXRDY也可用作中断请求信号,也可以通过读状态字了解接收器状态。一旦CPU读走这个数据字符,RXRDY被复位。要是CPU没有及时取走数据,新接收数据将覆盖原数据,使一个数据丢失,出现溢出错误,并反映在状态字中。
(3) 。接收时钟输入端。当时钟处在上升沿时,才可能把数据取样输入。时钟速率的规定与 相同。实际上, 和 往往连接在一起,用同一个时钟源。
(4)SYNDET/BD。同步和间断检测。芯片在同步方式工作时,用作同步检测端;异步时则用作间断检测输出。芯片可以由编程确定是内同步还是外同步。如果是内同步,就由芯片内电路搜索同步字符,一旦找到,就由该端输出一个高电平。如果是外同步,当片外检测电路找到同步字符后,就可以从该引脚输入一个高电平信号,使825lA正式开始接收。一旦开始正常接收数据,同步检测端恢复低电平输出。
异步方式工作中,通常在线路上无数据时以高电平表示。在8251A中也可以由程序控制,使无数据的间断时间内线路上呈现低电平,即发送一个字符长度的全“0”码。接收端具有对这种间断码检测的能力,如果检测到间断码,将从该端输出一个高电平。为了避免接收器对尚未正式开始工作的线路低电平误认为间断状态,8251A在复位后总是要在检测到一次高电平输入后,才开始对间断状态的检测。
(三)初始化
8251A的各种工作方式及工作进程都是用初始化及实时控制实现的。概括地说,编程包括两个部分,一个是方式指令,另一个是命令指令。方式指令用来定义8251A的一般工作特性,它必须紧接在复位后由CPU写入。命令指令用来指定芯片的实际操作,只有在已经写入了方式指令后,才能由CPU写入同步字符和命令指令。
1. 方式指令字
图7-40是方式指令字指定为异步工作时各位的定义。最低两位B2B1表示时钟频率与数据速率之间的关系,如B2B1设置“10”,收和发的时钟输入为4800Hz,那么,这时输出和输入数据的速率应为300波特。这两位只在异步时有用,同步时应置“0”。L2L1用来确定串行数据中每个字符的数据位数。S2S1用来指定停止位的位数,但是在接收端只检测一个停止位。EP和PEN分别指定是否使用及如何使用校验位的控制位。
后一单元-textbox: #_x0000_s1027" inset=".5mm,.3mm,.5mm,.3mm">
S2
后一单元-textbox: #_x0000_s1028" inset=".5mm,.3mm,.5mm,.3mm">
S1
后一单元-textbox: #_x0000_s1029" inset=".5mm,.3mm,.5mm,.3mm">
EP
后一单元-textbox: #_x0000_s1030" inset=".5mm,.3mm,.5mm,.3mm">
PEN
后一单元-textbox: #_x0000_s1031" inset=".5mm,.3mm,.5mm,.3mm">
L2
后一单元-textbox: #_x0000_s1032" inset=".5mm,.3mm,.5mm,.3mm">
L1
后一单元-textbox: #_x0000_s1033" inset=".5mm,.3mm,.5mm,.3mm">
B2
后一单元-textbox: #_x0000_s1034" inset=".5mm,.3mm,.5mm,.3mm">
B1
后一单元-textbox: #_x0000_s1035" inset=".5mm,.3mm,.5mm,.3mm">
D7
后一单元-textbox: #_x0000_s1036" inset=".5mm,.3mm,.5mm,.3mm">
D6
后一单元-textbox: #_x0000_s1037" inset=".5mm,.3mm,.5mm,.3mm">
D5
后一单元-textbox: #_x0000_s1038" inset=".5mm,.3mm,.5mm,.3mm">
D4
后一单元-textbox: #_x0000_s1039" inset=".5mm,.3mm,.5mm,.3mm">
D3
后一单元-textbox: #_x0000_s1040" inset=".5mm,.3mm,.5mm,.3mm">
D2
后一单元-textbox: #_x0000_s1041" inset=".5mm,.3mm,.5mm,.3mm">
D1
后一单元-textbox: #_x0000_s1042" inset=".5mm,.3mm,.5mm,.3mm">
D0
0
1
0
1
0
0
1
1
同步
1X
16X
64X
后一单元-textbox: #_x0000_s1046" inset=".5mm,.3mm,.5mm,.3mm">
波特率因子
0
1
0
1
0
0
1
1
5b
6b
7b
8b
后一单元-textbox: #_x0000_s1052" inset=".5mm,.3mm,.5mm,.3mm">
字符长度
后一单元-textbox: #_x0000_s1057" inset=".5mm,.3mm,.5mm,.3mm">
奇偶校验
后一单元-textbox: #_x0000_s1058" inset=".5mm,.3mm,.5mm,.3mm">
1用
0不用
后一单元-textbox: #_x0000_s1061" inset=".5mm,.3mm,.5mm,.3mm">
偶校验产生/检查
后一单元-textbox: #_x0000_s1062" inset=".5mm,.3mm,.5mm,.3mm">
1偶
0奇
后一单元-textbox: #_x0000_s1065" inset=".5mm,.3mm,.5mm,.3mm">
校验
0
1
0
1
0
0
1
1
/
1b
2b
后一单元-textbox: #_x0000_s1068" inset=".5mm,.3mm,.5mm,.3mm">
停止位位数
后一单元-textbox: #_x0000_s1072">
图7-40 异步方式下方式指令字各位的定义
如果B2B1设置成同步方式,指令字除了最高两位用来定义同步通信的控制外,其余各位的含义不变。D6位ESD用来规定对同步字符的检测方式,如果该位置“1”,规定为外部检测,反之则为内部检测。D7位SCS用以指定同步字符的个数,如果置“1”就将收发两部分都设定为单个同步字符,反之则指定为双同步字符。
2. 命令指令字
图7-41是命令指令字各位的定义情况,搞清它们的含义对正确使用芯片很重要,D0和D2分别用以控制发送器和接收器的工作与否,如果要求作半双工通信,CPU应轮流地将它们置为“l”。D1和D5是两个送往MODEM去的控制信号,当CPU给它们置为“1”,相应的引脚 和 成为低电平。D3位选择是否使用专门的间断字符。如果该位置“1”,将使空闲时的输出数据成为低电平,以此作为数据间断时的线路状态表示法。如果该位置“0”,在出现数据间断时,线路仍处于高电平。这一位同时还控制接收端的工作,亦即使接收端在接收数据的过程中自动检测间断字符,送出间断信号给CPU作相应处理。命令字中设了两个复位控制位,D4位只用来使三个出错标志复位,而D6的IR位是使825lA回到方式指令用的复位,从而可以使芯片回到初始化编程的阶段。最高位D7为“l”,使825lA进入同步搜索状态,此时将接收到的数据码逐位组合成字符,作同步比较,直到找到同步码后,引脚SYNDET输出为“1”为止。然后再把这个控制位回到“0”,作正常接收。
后一单元-textbox: #_x0000_s1075" inset=".5mm,.3mm,.5mm,.3mm">
EH
后一单元-textbox: #_x0000_s1076" inset=".5mm,.3mm,.5mm,.3mm">
IR
后一单元-textbox: #_x0000_s1077" inset=".5mm,.3mm,.5mm,.3mm">
RTS
后一单元-textbox: #_x0000_s1078" inset=".5mm,.3mm,.5mm,.3mm">
ER
后一单元-textbox: #_x0000_s1079" inset=".5mm,.3mm,.5mm,.3mm">
SBRK
后一单元-textbox: #_x0000_s1080" inset=".5mm,.3mm,.5mm,.3mm">
RXE
后一单元-textbox: #_x0000_s1081" inset=".5mm,.3mm,.5mm,.3mm">
DTR
后一单元-textbox: #_x0000_s1082" inset=".5mm,.3mm,.5mm,.3mm">
TXEN
后一单元-textbox: #_x0000_s1083" inset=".5mm,.3mm,.5mm,.3mm">
D7
后一单元-textbox: #_x0000_s1084" inset=".5mm,.3mm,.5mm,.3mm">
D6
后一单元-textbox: #_x0000_s1085" inset=".5mm,.3mm,.5mm,.3mm">
D5
后一单元-textbox: #_x0000_s1086" inset=".5mm,.3mm,.5mm,.3mm">
D4
后一单元-textbox: #_x0000_s1087" inset=".5mm,.3mm,.5mm,.3mm">
D3
后一单元-textbox: #_x0000_s1088" inset=".5mm,.3mm,.5mm,.3mm">
D2
后一单元-textbox: #_x0000_s1089" inset=".5mm,.3mm,.5mm,.3mm">
D1
后一单元-textbox: #_x0000_s1090" inset=".5mm,.3mm,.5mm,.3mm">
D0
后一单元-textbox: #_x0000_s1093" inset=".5mm,.3mm,.5mm,.3mm">
允许发送
后一单元-textbox: #_x0000_s1094" inset=".5mm,.3mm,.5mm,.3mm">
“1”允许
“0”不允许
后一单元-textbox: #_x0000_s1098" inset=".5mm,.3mm,.5mm,.3mm">
数据终端就绪:“1”使 输出为低
后一单元-textbox: #_x0000_s1101" inset=".5mm,.3mm,.5mm,.3mm">
允许接收
后一单元-textbox: #_x0000_s1102" inset=".5mm,.3mm,.5mm,.3mm">
“1”允许
“0”不允许
后一单元-textbox: #_x0000_s1106" inset=".5mm,.3mm,.5mm,.3mm">
送间隔字符
后一单元-textbox: #_x0000_s1107" inset=".5mm,.3mm,.5mm,.3mm">
“1”使TXD为低
“0”正常工作
后一单元-textbox: #_x0000_s1111" inset=".5mm,.3mm,.5mm,.3mm">
出错标志复位:“1”使PE、OE、TE标志复位
后一单元-textbox: #_x0000_s1114" inset=".5mm,.3mm,.5mm,.3mm">
请求发送:“1”使 输出变低
后一单元-textbox: #_x0000_s1117" inset=".5mm,.3mm,.5mm,.3mm">
内部复位:“1”使芯片回到方式指令状态
后一单元-textbox: #_x0000_s1120" inset=".5mm,.3mm,.5mm,.3mm">
进入搜索态:“1”使开始搜索同步字符
图7-41 命令指令字各位的意义
方式指令与命令指令都是由CPU作为控制字写入的,按照前面所讲的方式,写入时所用的口地址是相同的。为了在芯片内不致造成混淆,825lA采用了对写入次序进行控制的办法来区分两种指令。在复位后写入的控制字,被825lA解释为方式指令,此后写入的才是命令指令,且在对芯片复位以前,所有写入的控制字都是命令指令。
3. 状态字
CPU向8251A发送各种操作命令,许多时候是依据825lA当前的运行状态决定的。图7-42是片内状态寄存器的各位定义,除了D3~D5这三位用来标志接收时检测三类错误的情况外,其余各位的定义在引脚中已经出现过,下面仅就状态与引脚在定义上的差别作些说明。
后一单元-textbox: #_x0000_s1122">
DSR
后一单元-textbox: #_x0000_s1123" inset="1.5mm,,1.5mm">
SYN
DET
后一单元-textbox: #_x0000_s1124">
TE
后一单元-textbox: #_x0000_s1125">
OE
后一单元-textbox: #_x0000_s1126">
PE
后一单元-textbox: #_x0000_s1127" inset=".5mm,,.5mm">
TXE
MPTY
后一单元-textbox: #_x0000_s1128" inset="1.5mm,,1.5mm">
RX
RDY
后一单元-textbox: #_x0000_s1129" inset="1.5mm,,1.5mm">
TX
RDY
后一单元-textbox: #_x0000_s1130" inset=",0,,0">
D7
后一单元-textbox: #_x0000_s1131" inset=",0,,0">
D6
后一单元-textbox: #_x0000_s1132" inset=",0,,0">
D5
后一单元-textbox: #_x0000_s1133" inset=",0,,0">
D4
后一单元-textbox: #_x0000_s1134" inset=",0,,0">
D3
后一单元-textbox: #_x0000_s1135" inset=",0,,0">
D2
后一单元-textbox: #_x0000_s1136" inset=",0,,0">
D1
后一单元-textbox: #_x0000_s1137" inset=",0,,0">
D0
后一单元-textbox: #_x0000_s1145" inset=",0,,0">
与引脚
定义相同
后一单元-textbox: #_x0000_s1147" inset=",0,,0">
奇偶校验错
后一单元-textbox: #_x0000_s1149" inset=",0,,0">
超限错
后一单元-textbox: #_x0000_s1151" inset=",0,,0">
帧出错
后一单元-textbox: #_x0000_s1154" inset=",0,,0">
数据设备就绪
图7-42 8251A状态字各位定义
D0所示的TXRDY与引脚的含义不同。当发送缓冲器一出现空闲,这一位就置“1”。而引脚的TXRDY除了上述条件外,还必须满足 且TXEN=1的条件,才能使输出置为“1”。D7位的DSR与引脚 只是在电平上相反,其含义是相同的。
状态字中设置的三类出错标志,其意义在前面有关叙述中都已涉及,这里不再重复。这些出错标志是在接收过程中自动检测并设置的,它们并不影响后续的工作。这些错误只有当CPU读取状态字,对三个出错位检查时才能被发现,从而得到适当的处理。
8251A的初始化和操作流程如图7-43所示。8251A在设置方式指令字后,或在同步方式中又设置了同步字符后,任何时候都可以写入命令指令,命令指令是芯片进行操作,或改变操作时必须写入的内容。而每次写人命令指令后,825lA都要检查其IR位是否有内部复位,如有复位,825lA应重新设置方式指令。
图7-43中“能传输?”判别框表示了对状态字有关位的检查,也包括对其他一些传输条件的检查,如 、TXRDY等。
发送或接收字符是个外部程序控制的过程,由程序决定待发送字符是否已经送完。而接收方则要根据对方送来的信息,判断是否接收完了全部信息,这就要在双方作些约定,比如规定传送字符数,或者以某一个特定字符作结束标志(如ASCⅡ码表上的EOT控制符)。
(四)应用举例
图7-44是把8251A作为一个异步通信口时的应用举例。CPU与8251A之间的连接比较简单,不必再作解释。图中所用的 和 时钟是由一个4.916MHz晶振产生,经分频后提供的。且可从不同的抽头,输出不同的频率,以满足不同数据速率传输的需要。另外,8251A的各输入输出引脚与TTL电平兼容,在按照RS232C标准与MODEM相接时,必须进行电平变换。图中分别用75150和75154芯片作发送和接收变换。
对8251A编程中的方式指令可以根据通信要求很快地确定,而命令指令则要根据MODEM和825lA自身的状态,才能最后确定如何设置。
最后提一下设计8251A与CPU的联络方式的问题,8251A在工作中必须要CPU对它进行干预。分类而言,CPU要作三种干预。首先是对825lA初始化,设置基本工作方式,这往往在一次设定后不常改变。其次是改变它的工作状况,如收、发转换,出错处理等,这是由CPU判断并及时给予处理的工作。最后就是及时写或读数据操作,这是最频繁的操作,因为每传送一个字节都要读写一次。所谓825lA与CPU的联络方式,就是指的第三种干预应该何时进行。图中我们采用了中断方式联络,TXRDY和RXRDY输出经或门后作为中断请求信号。
本文标签:广东自考 工学类 微型计算机原理及应用学习笔记 串行接口芯片
转载请注明:文章转载自(http://www.gdzkw.net)
热点关注: