单片机 串行接口

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

串行接口串行接口★概述★单片机串行口的结构与工作原理★串行口的控制寄存器★串行口的工作方式★串行口的应用编程串行接口1概述单片机应用与数据采集或工业控制时,往往作为前端机安装在工业现场,远离主机,现场数据采用串行通信方式发往主机进行处理,以降低通信成本,提高通信可靠性。如下图所示。串行接口★数据通信方式有两种:并行通信与串行通信串行接口★串行通信的分类:同步串行通信和异步串行通信一、异步通信:通信的双方应该有一个约定,什么时候开始发送,什么时候发送完毕;接收方收到的信息是否正确等,这就是通信协议。异步串行通信一帧数据格式:一个起始位“0”,表示字符的开始,然后是5~8位数据即该字符的代码,规定低位在前,高位在后,接下来是奇偶校验位(可省略),最后以停止位“1”表示字符的结束。串行接口优点:硬件结构简单。缺点:传输速度慢。…P1D0D1D2D3D4D5D6D7P10第n个字符(一帧)n-1n+10D0…起始位数据位(5~8位)校验位停止位串行接口二、同步通信在同步通信中,发送方在数据或字符开始处就用同步字符(常约定1~2个字节)指示一帧的开始,由时钟来实现发送端和接收端同步,接收方一旦检测到与规定的同步字符符合,下面就连续按顺序传送若干个数据,最后发校验字节。见下图:SYN字符1SYN字符2数据1数据2….数据n连续传送n个数据校验串行接口三、单工、半双工、全双工通信方式按通信方向分类:单工、半双工、全双工通信方式1.单工方式:一端是发送端,另外一端是接收端:2.半双工方式每端口有一个发送器和一个接收器,通过开关连接在线路上,数据可以双向传送,但不能同时发送和接收.要通过换向器转换方向。串行接口3.全双工方式通信双方用两个独立的收发器单独连接,可以同时发送和接收数据,因而提高了速度。串行接口1.实现数据格式化因为CPU发出的数据是并行数据,接口电路应实现不同串行通信方式下的数据格式化任务,如自动生成起止方式的帧数据格式(异步方式)或在待传送的数据块前加上同步字符在串行传输中,通信的双方都按通信协议进行,所谓通信协议就是通信双方必须共同遵守的一种约定,约定包括数据的格式、同步的方式、传送的步骤、检纠错方式及控制字符的定义等。串行接口的基本任务就是:串行接口2.在发送端,接口将CPU送来的并行信号转换成串行数据进行传送;而在接收端,接口要将接收到串行数据变成并行数据送往CPU,由CPU3.控制数据的传输速率接口应具备对数据传输率—波特率的控制选择能力,即具4.在发送时,对传送的数据自动生成校验位或校验码,在接收端能检查校验位或校验码,以确定传送中是否有误码。串行接口51系列单片机内有一个全双工的异步通信接口,通过对串行接口写控制字可以选择其数据格式,同时内部有波特率发生器,提供可选的波特率,可完成双机通信或多机通信。四、波特率单位时间内传送的信息量。在计算机中,以每秒传送的二进制位数为单位。例如:100字符/秒,1个字符11位,波特率为:100×11=1100(波特)平均每位传送占用时间Td=1/1100=0.909ms串行接口(一)通信线的连接通信速率和通信距离这两个方面是相互制约的,降低通信速率,可以提高通信距离.不同的通信距离,串行通信电路有不同的连接方法。五.串行通信总线标准及接口串行接口RXDTXDGNDRXDTXDGNDRXDTXDGND电平转换RXDTXDGNDRXDTXDGND电平转换RXDTXDGND微机微机其他设备较远距离传送电路近距离传送电路串行接口微机接口调制解调器调制解调器接口微机电话分机电话分机远距离传送电路数字信号通过调制器变成模拟信号通过电话线传送到对方,接收方通过解调器将模拟信号转换成数字信号接收。串行接口(二)串行通信接口总线标准测控系统中,计算机通信主要采用异步串行通信方式,常用的异步总线标准有三种:●RS-232(RS-232ARS-232BRS-232C)●RS-449(RS422RS423RS485)●20mA电流环这里重点介绍RS-232RS-232C:速率:20Kbit/S,最大通信距离:15mRS422:10Mbit/s,:300m90Kbit/s,:1200m串行接口2单片机串行口的结构与工作原理51单片机有一个可编程的全双工异串行通信接口,它可作UART用,也可作同步移位寄存器,其帧格式可有8位、10位或ll位,并能设置各种波特率,给使用者带来很大的灵活性。一、串行口的内部结构串行接口发送SBUF(99H)门88图8.7串行口结构框图RXD(P3.0)TXD(P3.1)中断接收SBUF(99H)定时器T1fosc2分频器发送控制器接收控制器串寄行存控器制SCON(98H)输入移位寄存器TIRI内部总线串行接口5l单片机通过引脚RXD(P3.0)串行数据接收端)和引脚TXD(P3.l)串行数据发送端)与外界进行通信。图中有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H,可同时发送、接收数据。●发送缓冲器只能写入,不能读出,CPU写SBUF,一方面修改发送寄存器,同时启动数据串行发送;●接收缓冲器只能读出、不能写入。读SBUF,就是读接收寄存器。串行接口●串行控制寄存器SCON用以存放串行口的控制和状态信息。8XX51串行口正是通过对上述专用寄存器的设置、检测与读取来管理串行通信的。●特殊功能寄存器PCON的最高位SMOD为串行口波特率的倍增控制位。●波特率发生器可以有两种选择:1.定时器T1作波特率发生器,改变计数初值就可以改变串行通信的速率,称为可变波特率。2.以内部时钟的分频器作波特率发生器,因内部时钟频率一定,称为固定波特率串行接口shiftMOVA,SBUF串行数据CPUCPUSBUFSBUFshiftMOVSBUF,A并行数据并行数据甲方(发送)乙方(接收)甲方发送时,CPU执行指令MOVSBUF,A启动了发送过程,数据并行送入SBUF,在发送时钟shift的控制下由低位到高位一位一位发送,乙方在接收时钟shift的控制下由低位到高位顺序进入移位寄存器SBUF,甲方一帧数据发送完毕,置位发送中断标志二、串行通信的传送过程用下面简图说明串行接口TI,该位可作为查询标志(或引起中断),CPU可再发送下一帧数据。乙方一帧数据到齐即接收缓冲器满,置位接收中断标志RI,该位可作为查询标志(或引起接收中断),通过MOVA,SBUFCPU将这帧数据并行读入。由上述可知:1.甲、乙方的移位时钟频率应相同,即应具有相同的波特率,否则会造成数据丢失。2.发送方是先发数据再查标志,接收方是先查标志再收数据。3.CPU通过指令和SBUF并行交换数据,并不能控制数据的串行移位,它只能查询标志位来确定数据的移位是否完成。串行接口51单片机串行口是一个可编程接口,对它的编程只用两个控制字分别写入特殊功能寄存器:串行口控制寄存器SCON(98H)电源控制寄存器PCON(97H)三、串行口的控制寄存器串行接口3串行口的控制寄存器(1)串行口的控制寄存器SCON8XX51串行通信的方式选择,接受和发送控制及串行口的标志均由专用寄存器SCON控制和指示,其格式如下:SM0SM1SM2RENTB8RB8TIRI方式选择多机控制串行接收允许/禁止欲发的第九位收到的第九位发送中断有/无接收中断有/无串行接口SM0.SM1:串行口工作方式控制位。00---方式0,01---方式110---方式2,11---方式3REN:串行接收允许位。0---禁止接收,1---允许接收TB8:在方式2,3中,TB8是发送机要发送的第9位数据。RB8:在方式2,3中,RB8是接受机收到的第9位数据,该数据来自发送机的TB8。TI:发送中断标志位。发送前必须用软件清零,发送过程中TI保持零电平,发送完一帧数据后,由硬件置“1”,如果再发送,必须用软件再清零。串行接口RI:接收中断标志位。接收前,必须用软件清零,接收过程中RI保持零电平,接收完一帧数据后由片内硬件自动置“1”。如果再接收必须用软件清零。SM2:多机通信控制位,仅用于方式2和方式3。当选择方式2或方式3时,发送机设置SM2=1,以发送第九位TB8为1作为地址帧寻找从机,以TB8为0作为数据帧进行通信,从机初始化时设置SM2=1,若接收到的第九位数据RB8=0,不置位RI,即不引起接收中断,亦既不接收数据帧,继续监听,如接收到的RB8=1,置位RI,引起接收中断,中断程序中判断所接收的地址帧和本机的地址。串行接口是否符合,若不符合,维持SM2=1,继续监听,若符合,则清SM2,接收对放发来的后续信息.综上所述,SM2的作用为:在方式2,3中,发送机SM2=1(程序设置).接收机SM2=1,若RB8=1,激活RI,引起接收中断.RB8=0,不激活RI,不引起接断.SM2=0,无论RB8=1还是RB8=0均激活RI引起接收中断。串行接口PCON的字节地址为87H,无位地址,只能字节寻址.,初始化时SMOD=0.SMODXXXXXXXPCON87H(2)电源控制寄存器PCONPCON的格式如下图所示,串行通信只用其中的最高位SMODSMOD:波特率加倍位。在计算串行方式1、2、3的波特率时,SMOD=0—不加倍;SMOD=1—加倍串行接口4串行口的工作方式根据串行通信数据格式和波特率的不同,51系列单片机的串行通信有四种工作方式,通过编程进行选择,各工作方式的特点如下:1.方式0RXD为串行数据的发送端或接收端,TXD输出频率为fosc/12的时钟脉冲。波特率固定为fosc/12(fosc为单片机晶振频率)方式0的数据格式为8位,低位在前,高位在后串行接口移位寄位器方式多用于接口的扩展,当用单片机构成系统时,往往感到并行口不够用,此时可通过外接串入并出移位寄存器扩展输出接口;通过外接并入串出移位寄存器扩展输入接口,方式0也可应用于短距离的单片机之间的通信。2.方式1为10位异步通信方式,几每帧数据由1个起始位“0”.八个数据位和1个停止位“1”共10位构成.其中起始位和停止位在发送时是自动插入的.以TXD为串行数据的发送端,T1提供位时钟,RXD为数据的接收端,由T1提供移位时钟,是波特率可变方式串行接口波特率=(2SMOD/32)×(TI的溢出率)=(2SMOD/32)×(fosc/12(256-x))根据给定的波特率,可以计算T1的计数初值X。11位异步发送/接收方式,即每帧数据由有一个起始位“0”,9个数据位和1个停止位“1”组成.发送时九个数据位,由SCON寄存器的TB8位提供,接收到的第九位数据存放在SCON寄存器的RB8位.第九位数据可作为检验位,也可用于多机通信中识别传送的是地址还是数据的特征位。波特率固定为(2SMOD/64)×fosc.3.方式2串行接口4.方式3数据格式同方式2,所不同的是波特率可变,计算方式同方式1。串行接口5串行口的应用编程串行口的波特率有两种方式:–固定波特率–可变波特率注意:使用可变波特率时,先确定TI的计数初值,并对TI进行初始化。串行通信的编程方式:–查询方式:查C是否为“1”。–中断方式:如果预先开了中断,当TI、RI为“1”,会自动产生中断。注意:两种方式中当发送或接受数据后都要注意清TI或RI。串行接口(1)查询方式查询方式发送流程图和接收流程图见下页串行接口T1初始化、启动T1工作设定串行通信方式置发送数据块首址数据块长度计数器清TI发送数据TI=1?修改地址指针和块长度计数器全部数据发送完?开始结束YNNY查询方式发送流程图YNYN串行接口T1初始化、启动T1工作设定串行通信方式,允许接收置接收缓冲区首址接收数据块长度清RIRI=1?修改地址指针和块长度计数器全部数据接收完?开始结束接收数据NYYN查询方式接收流程图YNYN串行接口(2)中断方式中断方式的初始化编程同查询方式,不同的是要开中断,即置位EA和ES,编写中断服务程序。中断方式串行通信的程序流程见下图:串行接口T1初始化、启动T1工作设定串行通信方式置发送数据块首址数据块长度计数器发送数据全部数据发送完?YN中断方式发送流程图

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功