微机及其接口技术 第7章第4节.docx
《微机及其接口技术 第7章第4节.docx》由会员分享,可在线阅读,更多相关《微机及其接口技术 第7章第4节.docx(16页珍藏版)》请在冰豆网上搜索。
微机及其接口技术第7章第4节
第7章微机接口技术
§7.4串行通信和串行接口
概述:
§7.4.1有关串行通信的一些基本概念
一按接口与线路来划分,串行通信有三种基本方式
1.全双工通信
可同时进行接受与发送的串行通信方式为全双工通信。
这种方式要求通信双方各有独立的接口与线路来进行发送与接收。
2.半双工通信
数据可以两个方向传输,但不能同时进行,只能交替进行的串行通信方式为半双工通信。
这种方式要求通信双方各有独立的接口,但公共通信线路只有一条。
3.单工通信
只能一个方向传输数据的串行通信方式。
二按数据的同步方式来划分可分为异步通信与同步通信
1.异步通信
定义:
所谓异步通信是指通信中字符与字符之间的时间间隔是不固定的,但同一字符中的位与位之间的时间间隔是固定的。
特点:
用一个起始位表示字符通信开始,用停止位表示字符结束,在起始位和停止位之间是数据位及奇偶校验位,这种由起始位开始一直到停止位结束的一串数据称为一帧。
显然,异步通信以字符为帧,一帧一帧传送,每帧字符的传送靠起始位同步。
通信协议(规程):
发送方与接收方之间的两项规定:
(1)字符(帧)的格式定义必须相同。
(2)波特率(Baudrate)必须相同。
波特率是指传送数据位速度,用“位/秒”(bit/s)来表示。
比如:
设数据传送的速率为:
120字符/秒,每个字符(帧)包含10位,则传送速率(波特率)=120*10=1200位/秒=1200波特。
而每一位的宽度(时间)=1/1200=0.833秒。
异步通信的波特率一般在50—19200之间。
2.同步通信
背景知识:
由于异步通信以字符为帧,每个字符都要配上起始位、停止位或奇偶校验位,使有效数据的传送速率降低。
为了提高速度,要求取消这些辅助位,因而引出了“同步通信”的概念。
同步通信的格式:
同步通信的特点:
以数据块为帧,速度高,实现的硬件复杂。
三信号的基带传输与频带传输
1.基带传输
2.频带传输
四RS-232C串行接口标准
在串行通信接口标准中,一般采用RS-232C串行接口标准:
在日常使用中,我们一般只用2端(TXD-发送)和接收端(RXD-接收)。
目前,主要采用9芯的D型连接器。
五串行通信的实现
用可编程串行通信接口来实现。
§7.4.2可编程异步通信接口INS8250
一8250结构与功能
1基本功能
▲完全双工、双缓冲器发送和接收的异步通信接口电路;
▲通信波特率为:
50-9600,共分成15种;
▲异步通信格式可通过编程选择,字符位:
5-8位可选;停止位:
1、1.5或2位可选;可产生终止字符。
▲可进行奇偶校验,具有奇偶、溢出和帧错误等检测状态位;
▲具有优先权中断控制逻辑。
2内部结构
8250结构由以下几个部分构成:
(1)发送器与接收器部分
①发送器
发送器主要由发送保持寄存器THR(也叫发送缓冲器)与发送移位寄存器TSR组成,如下图所示:
发送的过程是:
CPU将要发送的数据送到THR,当TSR空时,8250就把数据由THR送到TSR,TSR根据编程格式和波特率从串行数据输出端Sout移位输出,数据的低位在前,高位在后。
当THR送出数据后,THR为空,可向CPU申请中断,要求传送下一个字符。
②接收器
接收器主要由接收移位寄存器RSR与接收缓冲寄存器RBR组成,如下图所示:
接收的过程是:
RSR对来自串行数据输入端Sin的串行数据进行移位接收,接收控制电路按照预先规定的数据格式和波特率自动删除起始位、奇偶校验位和停止位后将串行数据转换成并行数据送入接收数据缓冲器RBR。
当RSR将数据送给了RBR后,可以通过中断控制电路发出中断申请,要求CPU读取数据。
与此同时,RSR继续接收字符。
另外,接收控制电路控制串行数据接收的同时,还对接收数据的正确性和接收过程进行监控。
如果发现出现奇偶校验错(PE)、帧错(FE)、溢出错(OE)等情况时,可以发出中断申请要求CPU进行处理。
(2)通信控制寄存器与状态寄存器部分
①通信控制寄存器LCR(或叫:
通信线路控制寄存器)
LCR用来控制串行通信的数据格式。
CPU可以对其进行读写操作,其格式如下图所示:
②通信线路状态寄存器LSR
LSR保存串行数据发送和接收的状态,供CPU读取和处理,CPU通过查询LSR的各位的状态来进行查询式串行通信。
LSR的内容见下图:
(3)波特率发生控制电路部分
①串行通信波特率由1.8432MHZ的基准时钟分频产生,因此,波特率的设置实质就是设置分频系数(除数),由于分频后的时钟是波特率的16倍,故有以下关系式:
波特率=1843200HZ/(除数*16)
即:
除数=1843200/(16*波特率)
比如:
若要设置波特率为9600
则:
除数(分频系数)=1843200/(16*9600)=12=000CH
②除数寄存器由两个8位寄存器构成,高8位寄存器为MSB,低8位为LSB。
在写入(设置)除数前,须将LCR的DLAB位置1;
(4)调制与解调控制部分(选学)
(5)中断控制
①中断识别寄存器IIR(InterruptIdentifyRegister)
8250内部有四个中断源,但只有一条向外的中断请求线INTPR,为了识别是哪个中断源引起的中断,在8250中设置了IIR,其内容见下图:
在上述4个中断中:
优先级由低到高。
IIR是只读寄存器。
②中断允许寄存器IER
其主要作用是用来开放或屏蔽上述的4个中断,内容见下图所示,为1时,允许相应位的中断源申请中断,否则屏蔽。
IER是读写寄存器。
另外:
8250的总中断申请INTRPT能否送出去,还受制于MCR(调制解调控制寄存器)的OUT2位(见教材P305上面),只有OUT2=1,才能送出去。
二引脚定义
1.与CPU系统相连的部分
(1)数据总线D0—D7
(2)数据选通线
▲数据输入选通信号DISTR与/DISTR:
在8250被选种期间:
当DISTR为高或者/DISTR为低时,允许CPU读取8250内部的
状态信息或数据。
因此这两个信号相当于RD或/RD。
▲数据输出选通信号DOSTR与/DOSTR:
在8250被选种期间:
当DOSTR为高或者/DOSTR为低时,允许CPU向8250内部的
寄存器写入控制命令或数据。
因此这两个信号相当于WR或/WR。
(3)地址线A0—A2
用来寻址8250内部的10个寄存器,见教材P308表7—6.
(4)片选信号CS0、CS1、/CS2
只有当CS0、CS1为高,/CS2为低这三个信号同时满足时,才选中8250。
2.与外部设备相连的引脚
(1)外部时钟输入信号XTAL1、XTAL2
外接基准时钟或晶振
(2)接收时钟RCLK(引脚9)
RCLK接收频率为:
16*波特率的时钟信号,以作为接收器的时钟,一般从引脚15取信号。
(3)波特率时钟输出(引脚15)
这是8250输出的一个时钟信号,频率为:
16*波特率;一般接到9脚的RCLK。
(4)串行数据输入信号Sin;
(5)串行数据输出信号Sout;
(6)调制解调信号(略)
(7)中断请求信号INTRPT
输出,高电平有效。
(8)输出信号OUT1、OUT2;两个普通的输出信号,可通过设置MCR的D2、D3使其输出1或0。
(9)片选输出信号CSOUT。
当三个片选输入端CS0、CS1和/CS2都有效时,CSOUT输出高电平,可作为选中8250的指示信号。
三8250的初始化编程
步骤:
(1)根据要采用的波特率设置除数寄存器;为了实现对除数寄存器的写入,应先将LCR的D7位置1;
(2)设置通信数据格式;
通过对LCR写入控制字来实现;此时,应将LCR的D7置0;
(3)若要使用中断,还须设置IER;若不用中断,可将IER全置0;
(4)设置MCR参数,若不使用中断,可设置为:
00000011B;
若使用中断,可设置为:
00001011B;(使OUT2位为1)。
流程图:
初始化编程举例:
若要求以9600波特率进行异步通信,通信格式为:
字符位8位,停止位2位,无奇偶校验,允许接收和发送中断;设异步通信端口地址为:
2F8H—2FFH。
初始化编程如下:
当发送器THR空或接收寄存器RBR满时,8250向CPU申请中断,转入中断服务子程序:
INTPRG:
MOVDX,2FAH;2FAH为IRR的地址
INAL,DX;读IIR的内容
TESTAL,02H;测试是否为THR空申请的中断
JNZTRAN;结果不为0,说明IIR的D1=1,代
;表THR空,转到发送部分TRAN.
TRVE:
MOVDX,2F8H;否则,是RBR满申请的中断,所以
INAL,DX;读RBR,2F8H为RBR的地址。
……
TRAN:
MOVDX,2F8H;
MOVAL,[BX];从内存的数据缓冲区取数据发送
OUTDX,AL;2F8H为THR的地址
……
IRET
作业:
7-7
(1),7-13