8.28251A可编程串行接口芯片•8.2.18251A的引脚信号•8251A是用来作为CPU与外设或调制解调器之间的接口芯片,有28个引脚,如图8.12所示。•D7~D0:三态、双向数据总线。•RESET:芯片复位信号线。该信号有效时,迫使8251A处于空闲状态;在把一组新的控制字写入8251A设定其功能之前,该芯片一直处于空闲状态。当该线上加高电平(宽度为时钟的6倍)时,芯片复位而处于空闲状态,等待命令。通常把它与系统的复位线相连,以便上电复位。•CLK:工作时钟,由外部时钟源提供。为芯片内部电路提供定时,并非发送或接收数据的时钟。在同步方式下,CLK的频率要大于接收器或发送器输入时钟(RxC或TxC)频率的30倍。在异步方式下,CLK的频率要大于接收器或发送器输入时钟频率的4.5倍。另外,CLK的周期要在0.4μs到1.35μs范围内。•RD#:读信号。该信号有效表示CPU正从8251A读数据或状态信息。•WR#:写信号。该信号有效表示CPU正把控制字或数据写入8251A。•CS#:片选信号。该信号有效时,表示该8251A已被选中,可进行读写操作;若为高电平则数据总线处于高阻状态,此时RD和WR对器件无影响。•C/D#:控制/数据选择线。若此引脚加高电平,则CPU访问8251A命令寄存器或状态寄存器;若加低电平,则CPU访问数据寄存器。可见,8251A芯片内部只有两个端口。•DSR#:数据通信设备准备好,是输入信号,低电平有效。通常用以表示MODEM已准备好。CPU通过读8251A的状态寄存器的D7位检测这个信号。•DTR#:数据终端准备好,是输出信号,低电平有效。它由工作命令字的D1位置“1”变为有效,用以表示8251A准备就绪。通常用于MODEM的控制。•RTS#:请求发送,是输出信号,低电平有效。通常用于通知MODEM8251A要求发送数据。用工作命令字的D5位置“1”来使其有效。•CTS#:允许传送,是输入信号,低电平有效。通常是MODEM对8251A的信号的响应,当CTS#有效且工作命令字中的TxE位为1时8251A方可发送数据。•如果在发送器工作过程中,TxE位变为0或CTS#变为无效,则发送器关闭之前要将已经写入的所有数据发送出去后才关闭。如果在最后一个字符出现在串行数据流之前出现这种状况,则最后一个字符将在CTS#变为有效和TxE变为1时再发送一次。•TxRDY(TransmitterReady):发送器准备好,输出,高电平有效。当它有效时,表示发送器已准备好接收CPU送来的数据字符,通知CPU可以向8251A发送数据。CPU向8251A写入了一个字符以后,TxRDY自动复位。在用查询方式时,此信号作为一个状态位,CPU可从状态寄存器的D0位检测这个信号;在用中断方式时,此信号作为中断请求信号。•TxEMPTY(TransmitterEmpty):发送器空,输出,高电平有效。当它有效时,指示发送器中的数据已发送出去,已经没有要发送的字符了。当8251A从CPU接收待发的字符后,自动复位。TxEMPTY既然表示发送已经结束,这样在半双工方式中,CPU就从它知道何时切换数据的传输方向,由发送转为接收。此信号可从状态寄存器的D2位检测到。•在同步方式下,该引脚为高电平表示字符还未写入8251A,8251A正在发送‘填充字符’。当同步字符正在移出时,TxEMPTY是不会变为低电平的。•TxC:发送器时钟,输入,由外部(波特率时钟发生器)提供。由它控制8251A发送数据的速率。在异步方式下,TxC的频率可以等于波特率,也可以是波特率的16倍或64倍。在同步方式下,TxC的频率与数据速率相同。TxC的下降沿把串行数据移出8251A。•TxD:发送数据线,输出,串行数据从该引脚发送出去。•RxRDY(ReceiverReady):接收器准备好,输出,高电平有效。当它有效时,表示8251A已经从它的串行输入端接受了一个字符,通知CPU读取数据。当CPU从8251A读了一个字符后,此信号自动复位。•在查询方式时,此信号可作为状态位,CPU通过读状态寄存器的D0位检测这个信号。在中断方式时可作为中断请求信号。RxRDY的电平状态还受工作命令字的RxE位控制,只有当RxE=1时,接收器接收到字符后才能将RxRDY变高,否则即使接收到字符RxRDY也不变高。•RxC:接收器时钟,输入,由外部(波特率时钟发生器)提供,由它控制8251A接收数据的速率。其频率的选择往往和TxC相同。在异步方式下,RxC的频率可以等于波特率,也可以是波特率的16倍或64倍。在同步方式下,RxC的频率与数据速率相同。•实际应用中,把TxC和RxC连接在一起,使用同一个时钟源——波特率时钟发生器。•RxD:接收数据线,输入,接收器从该引脚接收串行数据。•SYNDET(SynchronousDetection)/BD(BreakDetection):同步检测/间断检测,是双功能引脚。•在同步方式时,作同步字符检出信号SYNDET,为双向线。SYNDET是作为输入还是输出,取决于初始化程序指定8251A是工作于内同步或外同步。当8251A工作于内同步方式时,SYNDET是输出,高电平有效,表示接收/发送器已经同步;当8251A工作于外同步方式时,SYNDET是输入,它的一个正跳变信号将启动8251A在下个的下降沿开始装配字符。•在异步方式时,作间断检出信号BD,输出,高电平有效。只要接受器在两个连续的停止位串中间(包括起始位、数据位、奇偶位)保持低电平,那么该引脚就输出高电平。在8251A被复位或RxD恢复为1时该引脚变低。8.2.28251A的内部结构•8251A的结构分成5个主要部分:接收器、发送器、调制控制、读/写控制以及系统数据总线缓冲器。8251A的内部由内部数据总线实现相互之间的通信。8251A的内部结构如图8.13所示。1.数据总线缓冲器•数据总线缓冲器是三态、双向、8位缓冲器,与系统数据总线连接起来。包含状态缓冲器、接收数据缓冲器、发送数据/命令缓冲器。•状态缓冲器用来存放8251A的内部工作状态,以供CPU读出查询;•接收数据缓冲器用来存放接收器已经装配好的字符,准备让CPU读出;•发送数据/命令缓冲器用来存放CPU写入8251A的数据或命令。CPU向8251A写入命令字是为了控制8251A的内部操作,使其建立所需要的工作方式。命令一旦写入,8251A立即就执行,不需要占用发送数据/命令缓冲器多少时间。CPU向8251A写入输出数据,由于串并转换才能输出所以需要较长的时间。•因此,一旦给发送数据/命令缓冲写入发送数据,发送控制器的TxRDY信号就变低,此时CPU不能向8251A写入新的数据或者命令,只有当发送器完成数据发送,TxRDY=1时,才能写入新的数据或命令,否则就会出错。•由此,让CPU向8251A发送数据或命令时,一般需要先测试TxRDY的电平状态,这TxRDY为高电平时才将数据或命令写入8251A。2.接收器•接收器的功能是在接收时钟的作用下接收RxD引脚上的串行数据并按指定的方式把它转换为并行数据。•在异步方式下,当接收器成功的接收到起始位后,8251A便接收数据位、校验位、停止位。•在内同步方式时,8251A首先搜索同步字符,在RxD是以一次一位的方式移动数据,在接收到每一位时都将现在接收的8位与同步字符寄存器的内容进行比较,若相等就搜索结束,使SYNDET=1表示已经同步,然后开始接收数据。•在外同步方式时,通过SYNDET引脚检测到外部电路提供的同步信号之后,开始接收数据。•无论在什么方式下,接收的同时进行校验,若发现错误,则在状态寄存器中保存,以便CPU处理;当校验无错时,才将并行数据存放在数据总线缓冲器的接收数据缓冲器中,并发出接收器准备好信号(RxRDY=1),通知CPU读数据。3.发送器•发送器的功能是,首先把待发送的并行数据转换成所要求的帧格式并加上校验位,然后在发送时钟的作用下,在TxD引脚上一位一位地串行发送出去。•在异步方式时,发送器总是要加上起始位,并根据命令字的设定加上奇偶校验位和停止位;•在同步方式下,发送器最先发送的是同步字符,而在随后发送的数据中除了奇偶校验位外不再插入别的位,如果在发送过程中CPU未及时提供发送数据,发送器就自动发送同步字符。•不管哪种方式,发送完一帧数据后,发送器准备好信号置位(TxRDY=1),通知CPU发送下一个数据。4.读/写控制•读/写控制逻辑对CPU输出的控制信号进行译码以实现表8.5所示的读/写功能。C/D#功能0000l0l01×001l×1l00×CPU从8251A读数据CPU从8251A读状态CPU写数据到8251ACPU写命令到8251AUSART总线浮空(无操作)CSRD#WR#5.MODEM控制•MODEM控制部分有四条信号线,一般用于实现对MODEM的控制联络,有时也可以用来作与外设联络的标准信号使用。8.2.38251A的工作方式1.方式命令字•方式命令字的作用是指定通信方式及该方式下的数据格式,即指定8251A为异步方式还是同步方式,并按照其通信方式约定帧数据格式。它必须跟在一个复位操作(内部或外部的)之后。•方式命令字长为8位,可以分为4组,每组2位,其格式是:×0=内同步×l=外同步0×=双同步1×=单同步00=不使用01=1位10=1.5位11=2位×0=无校验01=奇校验11=偶校验00=5位01=6位10=7位11=8位00=同步01=异步(×1)10=异步(×16)11=异步(×64)D7D6D5D4D3D2D1D0SlS0EPPENL1L0BlB0同步控制异步时的停止位数校验方式数据位数同步方式、异步方式的波特率因子•D1D0(B1B0):这两位确定8251A是工作于同步方式还是异步方式。当D1D0=00时,为同步方式;当D1D0≠00时,为异步方式,并且由D1D0的3种组合用以选择异步方式的波特率因子(1、16或64)。•D3D2(L1L0):用以指定1个字符数据包含的数据位位数。•D5D4(EP、PEN):用以指定要不要校验以及采用奇校验还是偶校验。•D7D6(S1S0):在同步和异步方式下的意义是不同的。异步方式时用以指定停止位的长度;同步方式时用以指定是内同步还是外同步,以及同步字符的个数是一个或两个。•例如,在某异步通信中,数据格式采用8位数据位,1位起始位,2位停止位,奇校验,波特率因子是16,则其方式命令字为11011110B=0DEH。若将方式命令写入命令口,则程序段为:•MOVDX,8251A-C;8251A命令口地址•MOVAL,0DEH;异步方式命令字•OUTDX,AL•某同步通信中,若帧数据格式为:字符长度8位,双同步字符,内同步方式,奇校验,则方式命令字是00011100B=1CH。若将方式命令写入命令口,则程序段为:•MOVDX,8251A-C;8251A命令口地址•MOVAL,1CH;同步方式命令字•OUTDX,AL•某同步通信中,若帧数据格式为:字符长度8位,外同步方式,偶校验,则方式命令字是01111100B=7CH。若将方式命令写入命令口,则程序段为:•MOVDX,8251A-C;8251A命令口地址•MOVAL,7CH;同步方式命令字•OUTDX,AL2.工作命令字•工作命令字的作用是指定8251A进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种工作状态,以便接收或发送数据。•在异步方式和外同步方式时,它必须跟在方式命令字之后;在内同步方式时,它必须跟在同步字符之后。•工作命令字长为8位,其格式为:进入搜索方式内部复位发送请求错误标志复位发终止字符接收允许数据终端准备好发送允许D7D6D5D4D3D2D1D0EHIRRTSERSBRKRxEDTRTxE说明:•D0是允许发送TxEN(TransmitEnable)。D0=1,允许发送。D0=0,禁止发送。可作为发送中断屏蔽位。•D1是数据终端准备就绪DTR。D1=1时,强置有效,表示终端设备已准备好。D1=0时,