搜索到同步字符了。此时,如果8251A被编程设定为采用一个同步字符方式,8251A的SYNDET引脚就升为高电平,以示同步已经实现。如果是采用双同步字符方式,那么只有连续接收到两个约定的同步字符,才认为实现了同步。
在外同步方式下,由其它设备在其SYNDET引脚(此时为同步输入)加一个高电平实现同步。SYNDET引脚一出现高电平,8251A就会立即脱离对同步字符的搜索过程,只要此高电平能维持一个接收时钟周期的时间,8251A便认为已经实现同步了。
8251A实现同步后,接收器利用时钟信号对RXD线进行采样,并把接收到的数据位送到移位寄存器中。每当接收到的数据位够一个字符的数位时,就把移位寄存器内容送至接收数据输入缓冲寄存器,同时发出RXRDY准备好信号。
Ⅱ. 发送器。
发送器接收CPU输出的并行数据,通过发送移位寄存器,串行从TXD引脚输出。 ? 在异步方式下,发送器为每一个字符自动加上1个起始位,并且按照编程要求加上
奇/偶校验位以及1个、1.5个或者2个停止位。起始位、数据位、校验位、停止位总是在发送时钟TXC的下降沿从8251A发出,数据传输的波特率可以是发送时钟频率的1、1/16或者1/64,具体取决于初始化编程时方式选择字中的波特率因子。 ? 在同步方式下,发送器在发送数据前,依据初始化编程时的设定插入一个或两个同
步字符,然后发送数据块。而在数据块中,除了插入初始化编程时设定的奇偶校验位外,不再插入别的位。当8251A正在发送数据,而CPU却来不及提供新数据时,8251A发送器会自动插入同步字符在TXD端发出,因为在同步方式时被传送的字符间不允许存在间隙。
不论在同步还是异步工作方式,只有当程序设置了TXEN(Transmitter Enable——允许发送)和CTS(Clear to Send——由外设发来的、对CPU请求发送信号的响应信号)有效时,才能发送。
发送器的另一个功能是发送中止字符(BREAK)。中止字符是由在通信线上的连续低电平信号组成。只要8251A的命令寄存器的Bit3为“1”,发送器就始终发送中止字符。 ② 8251A的接口信号
8251A用来作为CPU与外设或调制解调器间的接口,请参见教科书P267,现把难理解部分总结如下:
Ⅰ. 片选信号CS。
它是通过对CPU发出的端口地址信号进行译码后和M/IO相与得到的。当CS信号为低
电平时,8251A被选中。
Ⅱ. C/D── 控制/数据信号,它是CPU送往8251A的信号,用来区分当前读/写的是数据信息,还是控制信息或状态信息。当C/D为高电平时,表示传送的是控制信息(写过程)或者状态信息(读过程);当C/D为低电平时,表示传送的是数据信息。硬件连接时将AB0接至C/D引脚, 写控制信息或者读状态信息时用奇地址,输入/输出数据时用偶地址即可。
Ⅲ. SYNDET──同步检测信号,只用于同步方式。SYNDET引脚既可以作为输入,也可以作为输出。当8251A工作在内同步方式时,SYNDET作为输出端,如果8251A检测到了规定的同步字符,则SYNDET引脚变为高电平,以此表示8251A当前已经达到同步。在双同步字符情况下,SYNDET会在第二个同步字符的最后一位被检测到后,变为高电平,表
13
明已经达到同步。当8251A工作在外同步方式时,SYNDET作为输入端,从这个输入端输入一个正脉冲作为起动脉冲,这样会使8251A在RXC的下一个下降沿开始装配字符。
在内同步方式下,SYNDET作为输出端,它会在CPU执行一次读操作后,变为低电平。在外同步方式下,SYNDET作为输入端,它的电平信号取决于外部启动信号。在复位时,SYNDET变为低电平。
Ⅳ. 收发联络信号。
? DTR── 数据终端准备好信号。这是8251A送往调制解调器的输出信号,低电平有效。可通过对8251A的初始化编程使其变为有效,用以表示CPU已经准备好接收数据。
? DSR── 数据装置准备好信号。这是一个来自调制解调器的输入信号,低电平有效,表示调制解调器或外设已经准备好发送数据。CPU可通过读取8251A的状态寄存器内容,在状态寄存器的D7检测到该信号。
? RTS── 请求发送信号。由8251A送往调制解调器或外设的信号,低电平有效。CPU可以通过对8251A的编程使其有效,以表示CPU已经准备好发送数据。 ? CTS── 清除发送信号。来自调制解调器的输入信号,低电平有效。这是调制器或外设对RTS的响应信号,当其有效时8251A才能执行发送操作。
以上四个信号,对于远距离串行通信时,因为要用到调制解调器,实际上是8251A和调制解调器的接口信号。
若以上四个信号用于和计算机外部设备连接,外设不要求有联络信号时,这些信号端可以悬空不用,但CTS应该接地。因为只有CTS有效,才能使TXRDY为高电平;只有TXRDY为高电平时,CPU才能往8251A发送数据。
Ⅴ. 时钟信号。
? CLK ── 8251A内部工作时钟信号,输入。8251A由这个CLK输入产生其内部工作时序。应注意:CLK的频率在同步方式工作时,必须大于接收器和发送器时钟频率的30倍;在异步方式工作时,必须大于接收器和发送器时钟频率的4.5倍。 ? RXC── 接收器时钟信号,输入。此时钟信号控制8251A接收器接收字符的速度。在同步方式下,RXC等于波特率。在异步方式,RXC可以取波特率的1、16或64倍,在8251A初始化时由波特率系数指明。
? TXC── 发送器时钟信号,输入。此时钟信号控制8251A发送器发送字符的速度。
TXC频率和波特率之间的关系与RXC相同。在异步方式下,读者要自己设计接收器和发送器时钟信号接入这两个引脚。 ③ 8251A的编程
计算机接口技术是一个软件、硬件的结合体,有了硬件作为物质基础,软件才能充分发挥其作用。8251A是一个可编程的多功能串行通信接口芯片。在实际应用中,必须首先对其进行初始化编程,以选择其具体的工作方式。对8251A进行初始化编程,要求按照以下顺序进行:
?首先,在芯片复位后,第一次应该向其奇地址端口(C/D=1)写入方式选择控制字。(该控制字存入8251A内部的模式寄存器。)
?其次,如果方式选择控制字中规定了8251A工作在同步方式,则应该向其奇地址端口
14
(C/D=1)再写入1个或者2个字节的同步字符。
?最后,不论是同步方式还是异步方式,均应向其奇地址端口(C/D=1)写入操作命令控制字,使其开始进行输入/输出工作。(该控制字存入8251A内部的控制寄存器。)
Ⅰ. 方式选择控制字
8251A方式选择控制字格式如图8-11所示。 方式选择控制字可分为四个部分,其中:
D1D0 —— 用于确定工作于同步方式还是异步方式。当D1D0=00时,表示为同步方式;当D1D0≠00时,表示为异步方式,且D1D0的三种组合用来选择输入或输出时钟频率与波特率之间的系数。
D3D2 —— 用于确定字符的位数。当D3D2=00时,传输字符被定义为5位;D3D2=01、10或11时,传输字符分别被定义为6、7、8位。
D5D4 —— 用于确定奇偶校验性质。当D5D4的编码为00或10时,无奇偶校验;D5D4=01时,为奇校验;D5D4=11时,为偶校验。
D7D6 —— 在同步方式和异步方式下的意义不同:
在异步方式下,该两位除编码为00时无意义外,其它编码定义停止位的位数。D7D6=01时,为1个停止位;D7D6=10时,为1.5个停止位;D7D6=11时,为2 个停止位。
在同步方式下,该两位用以确定是内同步还是外同步,以及同步字符的个数。D6=1定义为外同步;D6=0定义为内同步。D7=0定义为2个同步字符;D7=1定义为1个同步字符。
图8-11 方式选择控制字格式
例如,有一8251A芯片用于异步串行通信,要求波特率系数为16,字符长度为7位,偶校验,2个停止位。此时的方式选择控制字应为:
11111010B=FAH
15
又如,将8251A用于同步通信接口,且要求内同步、2个同步字符、字符长度为7位、偶校验。其方式选择控制字应为:
00111000B=38H
在选择了同步方式时,紧跟在方式选择控制字后面输出到8251A芯片的应是同步字符。此时,端口地址都要用奇地址,原因是它们均属于控制信息。
Ⅱ. 操作命令控制字
初始化8251A芯片时,当写入方式选择控制字,定义8251A芯片为异步通信,或者定义为同步通信且同步字符已经写入8251A后,接下来应该向8251A写入操作命令控制字,用于规定8251A的工作状态——启动串行通信开始工作或者芯片复位。操作命令控制字的格式如图8-12所示。
对于8251A芯片,在通过方式选择控制字,规定了其工作方式之后,可以根据对8251A工作状态的不同要求,随时向其奇地址端口(C/D=1)写入操作命令控制字。也即,在不改变8251A工作方式的前题下,操作命令控制字可以根据需要随时再次写入其奇地址端口,以便重新规定其工作状态。
图8-12 8251A操作命令控制字格式
若要改变8251A工作方式,则必须先使8251A芯片复位。操作命令控制字为40H时,表示是内部复位命令。只要把40H输出到8251A奇地址端口(C/D=1),8251A芯片即被复位。之后,又可重新向8251A写入方式选择控制字,规定其新的工作方式。
Ⅲ. 状态寄存器格式
通过读取8251A奇地址端口(C/D=1),可以获得其内部状态寄存器内容 —— 状态字。状态寄存器的格式如图8-13所示。
状态寄存器的第1、2、6位分别与8251A 的RxRDY、TxE、SYNDET引脚上的信号有关。
状态寄存器的第0位TXRDY为1时,用来指出当前数据输出缓冲器空。此处需注意的
16

