您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > ch09 单片机串行通信
Ch09单片机串行通信9.1串行通信概述•9.1.1数据通信•设备之间进行的数据交换,如CPU与外设之间进行的数据交换,计算机之间进行的数据交换等,称为数据通信。•通信方式有两种:并行通信和串行通信。并行通信是多位数据同时通过多根数据线传送,每一根数据线传送一位二进制代码。其优点是传送速度快,效率高;缺点是硬件设备复杂,数据有多少位,就需要多少根数据线。因此,并行通信适用于近距离通信,如在计算机内部,数据传送都是并行通信。•串行通信是数据通过一根数据线,一位一位地传送。其优点是硬件设备简单,只需一对传输线,在远距离通信时就大大降低了成本;其缺点是传输速度慢,效率低。9.1串行通信概述•9.1.2串行通信方式•串行通信有单工通信、半双工通信和全双工通信3种方式。单工通信是指数据只能单方向地从一端向另一端传送。如目前的有线电视节目,只能单向传送;半双工通信是指数据可以双向传送,但任一时刻只能向一个方向传送。即分时双向传送数据;全双工通信是指数据可同时向两个方向传送,全双工通信效率最高,适用于计算机之间的通信。9.1串行通信概述•9.1.3异步通信和同步通信•通信双方要正确地进行数据传输,需要解决何时开始传输,何时结束传输,以及数据传输速率等问题,即解决数据同步问题。实现数据同步,通常有两种方式,一种是异步通信,另一种是同步通信。9.1串行通信概述•1.异步通信•在异步通信中,每个数据都是以特定的帧形式传送,数据在通信线上一位一位地串行传送,每帧按先后顺序由以下几部分组成:•①起始位表示传送一个数据的开始,用低电平表示,占1位。•②数据位要传送的数据的具体内容,可以是5位、6位或更多,数据从低位开始传送。•③奇偶校验位为了保证数据传输的正确性,在数据位之后紧跟一位奇偶校验位,用于有限差错检测。当数据不需进行奇偶校验时,此位可省略。9.1串行通信概述•④停止位表示发送一个数据的结束,用高电平表示,占1位、1.5位或2位。•线路空闲时,线路处于逻辑“1”等待状态,即空闲位为1。空闲位是异步通信特征之一。异步通信中数据传送格式如图9.1所示。•图9.1异步通信数据帧格式图9.1异步通信数据帧格式9.1串行通信概述•2.同步通信•在异步通信中,每一个数据都包含起始位和停止位,占用了传送的时间,当数据量较大时,这一问题更为突出,因此在大量数据传输时采用同步通信方式来实现。•同步通信中,通常先发送1~2个字符作为数据传送的开始,称为同步字符SYNC,并由时钟来实现发送端和接收端同步,即检测到规定的同步字符后,紧接着按顺序传送数据,中间不能有空闲位,也不需要停止位和开始位,仅在数据块开始时用同步字符SYNC来指示,其数据格式如图9.2所示。9.1串行通信概述图9.2同步传送的数据格式9.1串行通信概述•同步字符的多少可以由用户自己规定,当然也可以采用ASCII码中规定的SYNC代码,即16H。接收端收到同步字符后,开始准备接收数据。不过,在同步通信中,为了准确无误地接收数据,发送端和接收端的时钟频率必须一致。在实际中,可通过硬件从发送的信息中提取时钟。当然,发送端的数据编码要包含时钟信息。•同步通信传送速度快,传输速率可达56kb/s或更高,但硬件结构比较复杂;异步通信硬件结构比较简单,但传送速度较慢。MCS-51单片机采用异步通信方式。9.1串行通信概述•3.波特率•波特率是数据传递的速率,指每秒传送二进制数据的位数,单位为位/秒(bit/s)。•例9.1假设微型打印机最快的传送速率为30字符/秒,每个字符为10位,计算波特率。•解:•波特率=10b/字符×30字符/s=300b/s•每一位代码的传送时间Td为波特率的倒数:•Td=1/300=3.3ms•异步通信的波特率一般在50~19200b/s之间,常用于计算机到终端机和打印机之间的通信、直通电报以及无线电通信的数据发送等。9.2串行口结构与工作原理•9.2.1串行口结构•在8051中有一个可编程的全双工串行通信接口,此串行接口既可用作UATR(通用异步接收和发送器),也可用作同步移位寄存器,其帧格式有8位、10位或11位,并能设置各种波特率,很容易地构成双机、多机串行通信接口。该接口的结构简图如图9.3所示。•8051的串行口主要由两个物理上独立的串行数据缓冲器SBUF、接收发送控制器、输入输出移位寄存器及其他一些逻辑电路组成。9.2串行口结构与工作原理发送SBUF(99H)接收SBUF(99H)TI输入移位寄存器RI移位时钟÷16÷16内部总线写SBUF装载SBUF读SBUFTXD○○○÷2●TH1TL1fOSC÷12SMOD=1SMOD=0RXD●●●图9.38051串行口组成框图9.2串行口结构与工作原理•1.串行数据缓冲器SBUF(99H)•MCS-51系列单片机串行口有两个串行数据缓冲器,一个用于发送数据,另一个用于接收数据,可以同时用来发送和接收数据。发送缓冲器只能写入,不能读出。接收缓冲器只能读出,不能写入。两个缓冲器使用同一符号SBUF,共用一个地址99H,根据读、写指令确定访问其中的哪一个。•发送数据时,执行一条数据写入SBUF的传送指令(执行“MOVSBUF,A”指令),•即是向发送缓冲器SBUF装载并开始有TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1。•在满足串行口接收中断标志位RI(SCON.0)=0的条件下,置允许接收位REN(SCON.4)=1就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使得RI=1。当发读SBUF命令时(执行“MOVA,SBUF”指令),便由接收缓冲器(SBUF)取出信息通过8051内部总线送CPU。9.2串行口结构与工作原理•从结构图中,可以看出接收器是双缓冲器结构,在前一个字节被从接收缓冲器SBUF读出之前,第二个字节即开始接收(串行输入至移位寄存器),但是,在第二个字节接收完毕而前一个字节CPU未读取时,会丢失前一个字节。•对于发送缓冲器,因为发送时CPU是主动的,不会产生重叠的错误,一般不需要双缓冲器结构来保持最大的传送速率。9.2串行口结构与工作原理•2.串行口控制寄存器SCON(98H)•特殊功能寄存器SCON字节地址为98H,可以进行位寻址。8051串行通信的方式选择、接收和发送控制以及串行口的状态标志等均由该寄存器控制或标示,控制字的格式如下:SCOND7D6D5D4D3D2D1D098HSM0SM1SM2SMNTB8RB8TIRI9.2串行口结构与工作原理•SM0、SM1:串口工作方式选择位。可选择4种工作方式,详细用法如表9.1所示。其中fosc是振荡频率,n为因子,10和11为一帧的总位数,对应的数据位为8和9。9.2串行口结构与工作原理表9.1串行接口工作方式SM0SM1工作方式功能波特率00方式0同步移位寄存器方式fosc/1201方式1异步10位收发由定时器控制,可变10方式2异步11位收发fosc/32或fosc/6411方式3异步11位收发由定时器控制,可变9.2串行口结构与工作原理•SM2:多机通信控制位。•a.用于方式2和方式3。若SM2=1,则允许多机通信。多机通信协议规定,若第9位数据(RB8)为1,则表明本帧数据为地址帧。否则,若第9位数据(RB8)为0,则表明本帧数据为数据帧。•当一个8051(主机)与多个8051(从机)进行通信时,令所有从机的SM2都置1。主机要与某个从机通信,首先发送一个与该从机相一致的地址帧(每个从机的地址必须惟一),且第9位为1,所有从机接收到数据后,将第9位送入RB8中。•若RB8=1,说明是地址帧,将数据装入SBUF,且置RI=1,即中断所有从机,若从机判断出该地址帧数据与本机号(地址)一致,则置SM2=0,准备接收主机发来的数据。其他从机仍然保持SM2=1。9.2串行口结构与工作原理•若RB8=0,说明是数据帧。当从机SM2=1时,置接收中断标志位RI=0,不予理睬该数据帧。当从机SM2=0时,则不属于多机通信方式,此时不论第9位是0还是1,都置RI=1,并将接收到的数据装入SBUF中。•b.用于方式0和方式1。在方式0时,必须SM1=0;在方式1时,当SM2=1,则只有收到有效停止位时,RI才置1,以准备接收下一帧数据。•REN:允许串行接收控制位。由软件置1或置0,若REN=1时允许接收,REN=0时禁止接收。•TB8:保存发送数据的第9位。在方式2或方式3中,可由软件置1或置0。既可用于多机通信中作为发送地址帧和数据帧的标志位,也可用于许多通信协议中的奇偶校验位。在方式0或方式1中,该位未用。9.2串行口结构与工作原理•RB8:保存接收数据的第9位。在方式2或方式3中,保存接收的第9位数据。用于多机通信中作为地址、数据的标志位,RB8=1表示接收的数据是地址帧,RB8=0为数据帧;或用作其他通信协议中的奇偶校验位。在方式1中,若SM2=0,RB8中保存的是已接收到的停止位。在方式0中,该位未用。•TI:发送中断标志。在方式0时,发送完第8位数据时,硬件自动置1。在其他方式中,则在刚发送停止位时,硬件自动置1。TI=1相当于发送缓冲器SBUF为空,通知CPU可以发送下一帧数据。在任何方式中,TI不会自动清0,必须由软件清0。否则,一个数据可能发送多次。9.2串行口结构与工作原理•RI:接收中断标志。在方式0时,接收完第8位数据时,硬件自动置1。在其他方式中,则在接收停止位的中间点,硬件自动置1。RI=1相当于接收缓冲器SBUF为空,通知CPU可以取走数据。但在方式1中,当SM2=1时,若未收到有效的停止位,不会对RI置1。RI在任何方式中不会自动清位,必须由软件清0。•串行发送中断标志TI和接收中断标志RI是同一个中断源,CPU事先不知道是由TI还是RI产生的中断,因此,在全双工通信中,必须由软件判别是谁引起的中断。另外,8051复位时,SCON的所有位都清0。9.2串行口结构与工作原理•3.电源控制寄存器PCON(87H)•电源控制寄存器PCON只有SMOD位与串行接口工作有关,控制字的格式如下:PCOND7D6D5D4D3D2D1D087HSMOD9.2串行口结构与工作原理•SMOD是波特率倍增位。当SMOD=1时,波特率提高一倍。复位时,SMOD=0。工作在方式0时,该位无效。9.2串行口结构与工作原理•9.2.2串行接口的工作方式•8051串行接口有4种工件方式,但在串行通信中,一般只用方式1、方式2或方式3,方式0常作为扩展I/O口之用。下面分别介绍。•1.方式0•当SM0=0,SM1=0时,串行口工作于方式0。方式0是同步移位寄存器输入/输出方式。其传输的波特率是固定的,等于振荡频率的12分频,即fosc/12,只与振荡频率有关,不能用软件设置。通信的数据帧固定为8位,没有起始位和停止位,先发送或接收低位,后高位。串行接口数据通过RxD(P3.0)发送或接收,而TxD(P3.1)用于提供同步移位脉冲,作为外部器件的同步信号。9.2串行口结构与工作原理•(1)发送。发送时,假定8051写入一个数据到发送缓冲器SBUF(99H),即执行MOVSBUF,A命令,串行接口将SBUF中的8位数据按波特率为fosc/12从RxD脚输出,低位在前,高位在后。发送完8位数据后,由硬件将TI标志置1。再次发送数据之前,必须由软件将TI清0,方式0发送时序如图9.4(a)所示。•(2)接收。接收时,先用软件写SCON(98H),即同时置REN=1,置RI=0。满足这两个条件,就会启动一次接收过程。此时RXD为数据输入端,TXD为同步信号输出端。串行数据输入的波特率为fosc/12。当接收完8位数据后,由硬件将RI标志置1。当再次接收时,必须由软件将RI标志清0。方式0接收时序如图9.4(b)所示。9.2串行口结构与工作原理图9.4串行接口方式0的时序9.2串行口结构与工作原理•2.方式1•当SM0=0,SM1=1时,串行口工作于方式1。串行接口方式1是10位异步通信接口。其中数据位为8位(低位在先,高位在后),起始位和停止
本文标题:ch09 单片机串行通信
链接地址:https://www.777doc.com/doc-5590711 .html