1、第十章 串行通信,和可编程接口芯片8251A,了解串行通信的基本概念 掌握8251的实现串/并和并/串转换的原理 掌握8251的编程方法 了解串行通信的标准 学会使用8251进行计算机串行通信,10.1 串行通信的基本概念(P356),计算机与外部的信息交换称为通信,基本的通信方式有两种: 并行通信和串行通信.,并行通信: 速度快,但成本高,传输距离受限; 串行通信: 通信线少,传输距离远,但速度较慢,一、数据传输的方向,1 、单工(Simplex)两个传输站点之间一方只能发送,另一方只能接收,串行通信的基本概念,一、数据传输的方向,2 、半双工(Half Duplex),两个传输站点之间任何
2、一方都能发送数据,但由于设备之间只有一条通信线路,在同一时刻只能在一个方向上传输数据,如对讲机。,两个传输站点之间双方使用不同的通信线路,同时发送和接收数据.如电话。,3 、全双工(Full Duplex),串行通信的基本概念,二、串行通信的两种基本工作方式,异步方式、同步方式。,所有串行通信都需要一个时钟信号来作为数据的定时参考。发送器和接收器用时钟来决定何时发送和读取每一位数据。,根据采用统一时钟还是本地局部时钟,分为同步传输和异步传输两种。,异步传输的时钟定时方法:,数据 (61H),1,0,0,0,1,1,停止位,异步传输先发送低位(LSB),发送方利用自己的内部时钟来决定什么时候发送
3、每个位,接收方检测开始信号的下降沿,然后利用它的内部时钟接收数据,0,0,起始位,LSB,MSB,串行通信的基本概念,串行通信的基本概念,二、串行通信的两种基本工作方式,空闲时,传输线呈现高电平(MARK状态)。,1 、异步方式(Asynchronous),1) 格式:,采用不同的编码方案,1个字符可为5,6,7,或8位;,采用奇校验,保证“1”的个数为奇数(采用偶校验,保证1的个数为偶数),停止位可以是1, 1.5或2位。,同步传输的时钟定时方法 :,数据(61H),1位,1,1,0,0,0,0,1,先发送高位(MSB),发送方在时钟信号的下降沿发送字节,接收方在时钟信号的上升沿接收字节,时
4、钟,串行通信的基本概念,0,同步通信的帧格式:同步传输需要定义一个帧的开始和结束。通常用1个同步字符(标志符)来表示。,串行通信的基本概念,空闲时,传输线呈现高电平(MARK状态)。,同步字符可以为1个或2个。,根据双方约定,接收方监测到同步字符后,接收被发送的字符流。,内同步、外同步。,串行通信的基本概念,三、串行传送速率(P358),在串行通信中,常用波特率来表示数据传输的速率。,波特率:每秒传送的二进制位数。,单位:波特 Bd,如某串行通信规定:一个串行字符包括1个起始位,7个数据位,1个奇偶校验位和1个停止位,共10个数据位构成,每秒传送120个字符,则波特率为:10位/字符120字符
5、/秒=1200位/秒传送每一位占用的时间为:1秒/1200=0.833毫秒,波特率因子:发送/接收时钟与波特率之比。,串行通信的基本概念,四、串行接口芯片UART和USART (P358),UART:又称为通用异步收发器,USART:又称为通用同步异步收发器,如,Intel8251A,也是本章重点介绍的内容。,串行通信的基本概念,五、 调制解调器(P360),使用UART和USART接口芯片设计的串行接口,其传输距离也受到一定的限制,不适于长距离传送。为了能长距离传送串行数据,常常利用标准电话线进行传送。但是电话线只能传送3003000HZ的音频信号,不能接受频带很宽的数字信号。,因此发送方在
6、传送前,先将数字信号调制成音频信号进行传输,接收方再将音频信号解调成数字信号,从而完成数据的长距离传输。,串行通信的基本概念,六、 数据校验,串行通信主要用于远距离数据传输。问题:干扰、衰减,信号畸变。,解决方法:差错控制技术 检测、纠正。,常用的数据校验方法:,奇偶校验:以字符为单位进行校验。,奇偶校验可以检查出一个字节中发生的单个错误。 奇偶校验不能自动纠错,发现错误后需“重传”。,发送方使发送的每个字节中1的个数为奇数或偶数;接收方检查收到的每个字节中1的个数是否符合双方的事先约定。,串行通信的基本概念,循环冗余校验CRC (循环冗余码/多项式编码):,以数据块(帧, Frame)为单位
7、进行校验,编码思想:将数据块构成的位串看成是系数为0或 1的多项式。如1 1 0 0 0 1,可表示成多项式 x5 + x4 + 1,数据块构成的多项式除以另一个多项式G(x),得到的余数多项式R(x)就称为CRC码(或称为校验和),而G(x)则称为生成多项式。,CRC校验的检错方式:收发双方约定一个生成多项式G(x)(其最高阶和最低阶系数必须为1),发送方在帧的末尾加上校验和,使带校验和的帧的多项式能被G(x)整除;接收方收到后,用G(x)去除它,若有余数,则传输有错。,串行通信的基本概念,CRC校验和计算方法 :,若G(x)为r 阶,原帧为m位,其多项式为M(x),则在原帧后面添加r个0,
8、帧成为m+r位,得到多项式2rM(x) 按模2除法用2rM(x)除以G(x):商Q(x),余R(x) 即 2rM(x) = G(x)Q(x)+R(x),按模2加法把2rM(x)与余数R(x)相加,结果就是要传送的带校验和的帧的多项式T(x)T(x) = 2rM(x) + R(x),实际上,T(x) = 2rM(x) + R(x) = G(x)Q(x) + R(x) + R(x) = G(x)Q(x) (模2运算) =0所以,若接收的T(x)正确,则它肯定能被G(x)除尽。,串行通信的基本概念,CRC校验码的纠错能力 :,可检出所有奇数个错可检出所有单/双比特错可检出所有G(x)长度的突发错,常
9、用的生成多项式:,CRC12 = x12+x11+x3+x2+1CRC16 = x16+x12+x5+1CRC32 =x32+x26+x23+x22+x16+x11+x10+x8+x7+x5+x4+x2+x+1,CRC码,如要发送的数据为100100,生成多项式为1101,则得到的余数为001,10.2 可编程串行通信接口芯片8251A(P361),一、8251A的基本性能:,可用于同步和异步传送; 同步传送:58bit/字符,采用内同步或外同步; 异步传送:58bit/字符,波特率因子(时钟速率与传输速率之比)可为1,16,64; 波特率:同步方式下:0-64Kbps;异步方式下:0-19.
10、2Kbps 全双工发送和接收; 具有奇偶,溢出等检测电路。,串行通信接口芯片8251A,二、8251A的内部结构和外部引脚,串行通信接口芯片8251A,二、8251A的内部结构和外部引脚,1、数据总线缓冲器,状态缓冲器:为程序提供8251工作过程的状态信息; 接收数据缓冲器:接收完成串并转换的数据; 发送数据/命令缓冲器:存放待发送的并行数据或命令;,2、接收缓冲器和接收控制电路,在接收时钟RxC的控制下,将RxD端的串行数据转换成并行数据。异步方式下RxC的频率可以是波特率的1,16或64倍。,A、与接收有关的信号 :(见362页图,363后说明),RxD: 串行数据输入信号; RxRDY:
11、 接收数据准备好信号,高电平有效.CPU读数后,变为低电平;,串行通信接口芯片8251A,2、接收缓冲器和接收控制电路,SYNDET/BRKDET: 同步检测/断点检测信号。内同步作为输出,表明8251达到同步,外同步作为输入,使8251在下一个RxC的上升沿接收数据; 异步接收方式,作为输出,表示RxD端收到两个全“0”数位组成的字符,无数据可读。,RxC: 接收时钟输入信号,同步时,该频率与接收数据的波特率相等;异步时,该频率是接收数据波特率的1,16或64倍。,B、异步接收:,CPU发方式命令字,允许8251接收数据; 8251监测RxD信号,确定起始位;(见pP363图10-9),2、
12、接收缓冲器和接收控制电路 (P362),之后,每隔一个数据位时间,采样RxD,得到规定位数的串行数据; 进行奇偶校验,去掉停止位,将数据送接收数据缓冲器; 将RxRDY置为高电平,通知CPU取数。可用查询,可用中断。,C、同步接收:,CPU发方式、命令字,允许8251接收数据; 8251监测RxD信号,确定同步字符(内同步,外同步) 之后,采样RxD,得到规定位数的串行数据; 将数据送接收数据缓冲器; 将RxRDY置为高电平,通知CPU取数。可用查询,可用中断。,A. 与发送有关的信号:,TxD:发送串行数据信号; TxRDY:发送准备好信号,高电平有效.通知CPU,8251已做好发送数据的准
13、备,CPU可以送来数据;可采用查询或中断方式. TxE:表示发送移位寄存器空.表示暂无数据发送 TxC:发送时钟输入信号,同步时,该频率与发送数据的波特率相等;异步时,该频率是发送数据波特率的1,16或64倍.,3、发送缓冲器和发送控制电路 (P364),在发送时钟TxC的控制下,将CPU送来的数据从TxD端按串行数据发送出去,串行通信接口芯片8251A,3、发送缓冲器和发送控制电路 (P364),B. 异步发送:,CPU用输出指令输出待发送的数据; 发送控制器按程序规定的格式为发送数据加上起始位,奇偶校验位和停止位; 将数据经移位寄存器在TxC的控制下由TxD端发出去;,C. 同步发送:,C
14、PU用输出指令输出待发送的数据到8251; 发送控制器按程序规定为发送数据加上一个或两个同步字符; 将数据经移位寄存器在TxC的控制下由TxD端发出去.,在同步发送过程中,不允许数据之间存在空隙,若CPU由于某种原因来不及送发送数据,8251在此期间自动插入同步字符.,串行通信接口芯片8251A,4、 读/写控制电路 (P365),接收CPU的控制信号,决定8251的工作方式,并向8251的其他部件发相应的控制信号。,8251A的控制信号操作表,串行通信接口芯片8251A,5、调制解调器控制电路(P366),当计算机和计算机远距离通信时,可用8251作为接口芯片,并借助于MODEM经过电话线建
15、立两台计算机之间的通信联系。,异步方式,发送和接收时钟由时钟发生器或将系统时钟分频后提供;同步方式直接由调制解调器提供。,8251与MODEM之间通过4条信号线建立通信联络,见P366图10-10。,串行通信接口芯片8251A,5、调制解调器控制电路,DTR(Data Terminal Ready): 表示计算机做好接收数据的准备;可用程序控制使控制寄存器的DTR位置“1”,使该管脚输出有效低电平。,DSR(Data Set Ready): 表示Modem已做好向CPU发送数据的准备;是对DTR信号的回答,它影响状态寄存器DSR的内容,CPU可查询。,串行通信接口芯片8251A,5、调制解调器
16、控制电路,RTS(Request To Send): 表示计算机想通过MODEM发送数据;可用程序控制使控制寄存器的RTS位置“1”,使该管脚输出低电平。,CTS(Clear To Send): 表示MODEM已做好向外发送串行数据的准备;是对RTS信号的回答,MODEM发送完数据后变为高。,串行通信接口芯片8251A,6、8251与CPU及外设的连接 (P367),1)与CPU的连接,串行通信接口芯片8251A,6、8251与CPU及外设的连接,1)与CPU的连接,2)与外设的连接,两个联络信号,查询方式时供CPU查询;中断方式时,TxRDY和RxRDY可作为中断请求信号,表示请求发送和接收
17、。 地址译码(本题A7A4=1111,A3A2A0=000时选中8251)。 A1=1时选中控制端口(F2H),A1=0时选中数据端口(F0H)。,在RS-232接口中,需要进行电平转换,发送串行数据时,将计算机的TTL电平转换成RS-232电平,接收数据时,将RS-232电平转换成TTL电平。 发送时钟和接收时钟统一提供。,串行通信接口芯片8251A,三、8251A的编程 (P368),1. 8251的编程流程,8251是一种功能很强的串行接口,但使用前必须按照规定进行初始化。包括:,1)写入方式控制字: 确定8251A的工作方式,是异步还是同步,传送的波特率,字符长度,奇偶校验等;,2)写
18、入命令控制字: 控制8251A工作,如允许或禁止8251A收发数据,启动搜索同步字符,使8251A进行内部复位等。,串行通信接口芯片8251A,三、8251A的编程,1. 8251的编程流程,3)读出状态字: 使CPU了解8251A的工作状态。 编程时通常读取状态字后判断是否出错,如果出错转向错误处理子程序,否则继续传输数据,串行通信接口芯片8251A,三、8251A的编程,00:5位 00:6位 10:7位 11:8位,X0:无奇偶校验位 01:奇校验 11:偶校验,串行通信接口芯片8251A,三、8251A的编程,串行通信接口芯片8251A,串行通信接口芯片8251A,串行通信接口芯片82
19、51A,四、8251A的初始化编程举例(P372),由于8251芯片本身特性,在对8251A进行初始化时,应注意: 为确保8251A可靠复位,应向8251A控制端口连续输出3个全“0”,再输出一个内部复位命令(控制字的D6=1);然后再进行初始化。,初始化的步骤是:向控制端口按顺序写入方式字、控制字。(同步方式下,在控制字后再接着向控制口写入一个或两个同步字符。) 每向控制口写一次,需要手动延时以提供写恢复时间。,注意:向控制端口进行写入操作时,两次写入操作之间必须有16个时钟周期以上的时间间隔以备写恢复。,1.异步方式的初始化程序 (见P372) 2.同步方式的初始化程序 (见P373) 。
20、,四、8251A的初始化编程举例(P372),DELAY_TIME MACROMOV CX,02DO: LOOP DO ENDM,串行通信接口芯片8251A,四、8251A的初始化编程举例,MOV DX, 3F2H ; 控制口地址 MOV AL, 00H ; OUT DX, AL ; 向控制口输出一个0 DELAY_TIME ; 延时,16个时钟周期 OUT DX, AL ; 向控制口输出一个0 DELAY_TIME OUT DX, AL ; 向控制口输出一个0 DELAY_TIME MOV AL, 40H ; 内部复位字 OUT DX, AL DELAY_TIME,1. 异步方式:,MOV
21、AL , 01111010B; 方式字 OUT DX, AL DELAY_TIME MOV AL, 00010101B; 命令字;允许发送;接收,清错误标志 OUT DX, AL,异步,波特率系数16,7个数据位,1停止位,偶校验,控制口地址3F2H,串行通信接口芯片8251A,四、8251A的初始化编程举例(P390),同步,双同步字符,奇校验,数据位为7位,同步字符16H,10.3 EIA RS-232C串行口和8251应用举例(P373),RS-232C标准,一、 EIA RS-232C串行口,1.信号电平RS-232C采用负逻辑,规定:逻辑“1”:有负载时-3V-15V之间,无负载时-
22、25V。逻辑“0”: 有负载时+3V+15V之间,无负载时+25V。,TTL电平规定:逻辑“1”:+2V+5V之间,逻辑“0”:0V+0.8V之间。,RS-232C不是TTL电平的接口标准,当计算机与外设进行通信时,必须有相应的电平转换电路。,EIA RS-232C和8251应用,一、 EIA RS-232C串行口,1.信号电平,通常采用的是MC1488和MC1489。,发送数据时用MC1488, 接收数据时用MC1489。,TTL电平 输入,-12V,RS-232C,电平输出,-12V,1489,TTL电平,输出,RS-232C,电平输入,MC,1488,EIA RS-232C和8251应用
23、,RS-232C标准,一、 EIA RS-232C串行口,1.信号电平,2. 接插件规格 (见P375图11-17)。,MAX233电平转换器:MAX233即可用于发送,也可用于接收(见P374图10-16)。,EIA RS-232C和8251应用,一、 EIA RS-232C串行口,TxD,RxD,EIA RS-232C和8251应用,二、8251A应用举例 p376):,有两台以8086为cpu的计算机要通信,以8251A为接口,通过RS-232C串行接口实现。一端连接如图:,题目要求:设串行数据传输的波特率为9600Bd,波特率系数为16,8251A的端口地址为310H、312H,两台计
24、算机之间采用查询、异步、半双工通信,即发送端的CPU一直查询TxRDY是否为有效的高电平,如为高则用OUT向8251输出一个字节。接收端的 CPU不断检测RxRDY,如为高则数据已准备好,可以IN一个字节。 对发送端计算机,设要把BUFF_T 开始的COUNT_T 个数据发送出去 对接收端计算机,把接收到的数据存放到BUFF_R开始的内存,EIA RS-232C和8251应用, ;送三个0及复位字40H BEGIN: MOV DX, 312H ; 控制口地址MOV AL, 7AH ; 方式字:异步,数据位,停止位OUT DX, ALMOV CX, 02H ; 延时D1: LOOP D1MOV
25、AL, 11H ; 命令字,清除三个错误标志且OUT DX, AL ;允许发送数据MOV CX, 02HD2: LOOP D2 ;下面开始发送数据LEA DI, BUFF_T ; 发送数据的内存 首址MOV CX, COUNT_T ; 要发数据的个数,二、8251A应用举例,对发送端计算机,设要把BUFF_T 开始的COUNT_T 个数据发送出去:,EIA RS-232C和8251应用,NEXT: IN AL, DX ;发送数据前要判断状态TEST AL, 01H ; TxRDY有效吗?JZ NEXT ;如果无效说明8251没有就绪MOV DX, 310H ; 数据口地址MOV AL, DI
26、; 取一个数据OUT DX, AL ;向8251输出一个数据INC DI ;成功发送一个数据后, ;如果还没有发完则读状态MOV DX, 312HDEC CXJNZ NEXT ;后两个语句可用loop next替换,二、8251A应用举例,见P377的后续程序,8251接收数据的程序见P377,同样要掌握。 注意:发送前判断8251是否就绪 NEXT_T: IN AL, ControPort TEST AL, 01HJZ NEXT_T 接收前要判断是否就绪,并且判断是否出错 NEXT_R: IN AL, ControPort TEST AL, 02HJZ NEXT_RTEST AL,38HJN
27、Z ERROR,补充作业,某系统用8251A串行发送起始于BUFFER的内存单元中的信息“Good luck!”,异步传送方式,6个数据位,奇校验位,1个停止位,波特率因子为16。波特率为2400,问: TxC的时钟频率应为多少? 需要多少时间才能传送完毕? 8251A的方式控制字是什么? 编写汇编程序实现该信息的发送。,TxC的时钟频率为16*240034KHZ T=9*10/2400=*S8251的方式字为01010111B,REVTIME MACRO MOV CX,02 D0:LOOP DO ENDM ;定义宏 MOV DX,1F2H MOV AL,00H OUT DX,AL REVTIME OUT DX,AL REVTIME OUT DX,AL REVTIME ;送3个全00H MOV AL,40H OUT DX,AL REVTIME ;送复位字,MOV AL,01010111B OUT DX,AL REVTIME MOV AL,00010101B OUT DX,AL REVTIME LEA DI,BUFFER MOV CX,8 NEXT: IN AL,DXTEST AL,01HJZ NEXTMOV DX,1F0HMOV AL,DIOUT DX,ALINC DIMOV DX,1F2H LOOP NEXT,