1第五章串行通讯及其接口主要内容:串行通讯的一般概念单片机的串行通讯接口串行通讯接口应用举例25.1串行通讯的一般概念•通讯的基本方式•数据传输速率——波特率•串行通讯的两种基本方式•串行数据传送的方向•通用的异步接收器/发送器UART3串行通讯的一般概念通讯:CPU与外部的信息交换。并行通讯:数据各位同时传送。串行通讯:数据一位一位顺序传送。4通讯的基本方式计算机(或外设)D0D1D2D3D4D5D6D7001控制(选通)状态10010001计算机01001001T(a)计算机计算机(或外设)8T(b)5数据传输速率——波特率•定义:数据传送速率,即每秒钟传送多少位•例:某计算机串行传送,每秒送120个字符编码,一个字符编码为10位,求波特率?•120×10=1200位/秒=1200波特波特率≠有效数据位传送速率字符编码中10位不都是数据,比如有一个停止位、启动位、奇偶标志位,则有效数据位只有7位∴有效数据位传送速率为:7×120=840位/秒6串行通讯的两种基本方式•同步通信:严格同步,发送同步码,数据连续,信息量大,速度较高•异步通信:帧格式传送,信息量不大7异步传送异步传送:以字符为单位一个个地发送和接收的字符由10位组成,分为三部分:1)起始位(0),用逻辑”0”低电平表示①通知接收设备,新字符到达。②复位接收设备,准备接收2)字符位(5-8位)3)停止位(1),用逻辑”1”高电平表示8异步传送(1)无空闲位0/10/1100/10/10/10/10/10/10/10/1100/10/10/10/1第n个字符7位数据奇偶校验停止位起始位7位数据起始位停止位奇偶校验第(n+1)个字符第(n-1)个字符下降沿指出下一个字符的开始低位高位9异步传送(2)加空闲位低位高位00/10/10/10/10/10/10/10/1111100/10/1MARK第n个字符7位数据起始位奇偶校验停止位空闲位下降沿指出下一个字符的开始第(n+1)个字符起始位(b)10异步传送•异步传送是靠字符不同格式联络•传送双方要事先约定:•1、字符格式•2、波特率(Bandrate)11同步传送SYN字符#1SYN字符#2数据1、有效数据位传送速率高于异步传送2、硬件设备较为复杂:1)要求发送端和接收端的严格同步,2)对相位一致性要求严格--锁相器12发送器接收器接收器(发送器)发送器(接收器)发送器接收器发送器接收器串行数据传送的方向13主从多终端通讯方式ADCBADCB(a)(b)图5-5主从多终端通讯方式(a)多终端半双工通讯方式(b)多终端全双工通讯方式14通用的异步接收器/发送器UART1)计算机发送端,并串2)串行接收端计算机,串并计算机完成这一并串,串并的硬件电路就是UART15•如图,它既能发送(并--串输出),又能接收(串--并输入)。对每一方来说,都是一个双缓冲结构。•接收时,RXD--移位寄存器--缓冲器--数据总线--CPU•发送时,CPU--总线--•缓冲器--移位寄存器--TXD端一位一位移位输出(变为串行的)CONTROLURATRXDINTXDOUTTBEFRERROVRNRDADATABUSRXCTXCRESETWERDCS16UART的出错标志位,一般有以下三种奇偶错误帧错误溢出(丢失)错误17通用的异步接收器/发送器UART•一般用外时钟和接收的数据进行同步•设外时钟周期为Tc,每位数据传送时间为Td则•Tc=Td/k,其中k=16或64•外时钟以16倍的数据传送速率来采样数据线当发现第一个“0”连续采到9个“0”,即可确认为起始信号,如下图:1810000000001起始位(Td=16Tc)数据最低位0/1连续读出9个“0”由此开始,下降沿指出下一个字符的开始接收输入数据(110波特)停止或空闲位图5-7外部时钟与接收数据的起始位同步19每16个时钟读一次数据位是“1”还是“0”•1、保证每次采样在数据位的中间•2、避开了信号在上升或下降时可能产生的不稳定状态单片机中,连采三次,取至少两次相同的值相当于数值滤波--抗干扰问题200/10/10/10/10/10/10/10/10/110一个字符起始位第一数据位第二数据位奇偶校验位第八数据位8Tc到9Tc停止位16Tc32Tc3×16Tc=48Tc4×16Tc=64Tc5×16Tc=80Tc6×16Tc=96Tc7×16Tc=72Tc8×16Tc=128Tc9×16Tc=144Tc10×16Tc=160Tc图5-8UART接收数据的读数时刻215.2MCS-51的串行通讯接口•串行接口的控制寄存器•串行接口的四种工作方式•多处理机通信•波特率的设定22MCS-51的串行通讯接口•其串行口为全双工的:可同时发送、接收数据这是由硬件上的相互独立的接收、发送缓冲器保证的.•发送:只写不读(保证发送,只能由内--外)•接收:只读不写(保证接收,只能由内--外)•串行口是可编程的,其功能可由用户在控制寄存器SCON中写入不同的控制字来改变23串行接口的控制寄存器•1、控制寄存器SCON•(98H,可位寻址)•2、特殊功能寄存器PCON(字节地址87H,没有位寻址)SM0SM1SM2RENTB8RB8TIRI01234567串行方式选择位00移位寄存器方式方式0018位UART方式1109位UART方式2119位UART方式3方式0:SM2≡0方式1:(点-点)一般SM2=0,若取SM2=1则收不到停止位,不置位RI,不产生RI中断(接收的数据将丢失)方式2、3:若SM2=1,收到的第九位数据(RB8)为0,不产生RI中断(接收到的数据将丢失)方式2、3多机通讯控制位0禁止接收1允许接收发送数据位8未用要发送的第九位数据(应前写入TB8)在多机通讯中1地址帧0数据帧TB8接收数据位8方式0:未用方式1:SM2=0,存接收到的停止位方式2、3存接收到的第九位数据接收中断标志发送中断标志硬件自动置位软件(用户)清025多机通讯第一次送地址帧,SM2=1,TB8=1送出去RB8=1,各从机全接收,和自己地址对不符SM2=1,拒绝接收下次送数据帧,TB8=0接收从机RB8=0,则地址相符,SM2=0无条件接收不符,SM2=1且RB8=0,不产生RI,丢失从而实现主机与多个从机中,主从“一对一”的通讯相符SM2=0,准备接受数据26特殊功能寄存器PCON波特率选择位=0维持原波特率1使方式2、3中波特率加倍SMOD27串行接口的四种工作方式1、方式0:移位寄存器方式,输出可直接与移位寄存器、I/O口、同步输入输出设备相连发送:启动了数据SBUF一次发送RXD输出数据TXD输出同步脉冲1/12fosc,即每个机器周期送一位使TI=1,申请中断每个机器周期S6P2期间发送移位寄存器右移一次要求新的发送数据--SUBF28•接收:置方式0,REN=1(允许接收),清除RI(方式接收)清除RI接收RXD:数据输入TXD:移位脉冲输出可以接收控制器以1/12fosc采样RXD引脚输入数据完,使RI=1申请接收中断方式0:1、SM2≡02、中断时,须在“中处”中用指令清RI,TI标志29•(1)方式0工作时波形图如下:S1~S6ALE写入SBUF(S6P2)S1~S6S1~S6S1~S6S1~S6S1~S6S1~S6S1~S6S1~S6S1~S6发送移位RXD数据输出TXD移位时钟S3P1S6P1T1D0D1D2D3D4D5D6D7发送(a)30(b)写入SCON(清除RI)RI接收移位RXD(数据输入)TXD(移位时钟)S6P2D0D1D2D3D4D5D6D7接收312.其它方式方式1,2,3为UART方式,原理一样1)发送过程(数据由TXD端输出):奇偶校验位或程控位(TB8)停止位,一帧完,硬件使TI=1,产生发送中断在中处中,若还有数据要发送,请求CPU送出新的发送字节MOVSBUF,A,直到全部数据发送完,关串口中断,返回起始位数据低位数据高位后发再发写入SBUF的指令启动发送,缓冲器移位寄存器先发322)接收过程:(数据均由RXD输入)串行口以16倍选定波特率采样RXD端状态,当采到该端电平由”1”到”0”的跳变时接收一帧代码拼成并行码接收缓冲器方式1:停止位方式2、3:可程控第九位RB8完,使RI=1申请接收中断,在“中处”中执行指令MOVA,SBUF,取走该帧字符,否则不产生RI中断、不执行MOVA,SBUF,则下一次接收到的数据将本次冲掉,数据就会无条件丢失启动接收器33方式1时串行通道工作波形D0D1D2D3D4D5D6D7TX时钟发送数据移位TXDTI起始位停止位S1P1发送D0D1D2D3D4D5D6D7起始位停止位RX位检测器采样时间移位RI接收34方式2、3时串行通道工作波形D0D7TX时钟发送数据移位TXDTI起始位停止位S1P1发送写入BBUF停止位TB8D0起始位停止位RXD位检测器采样时间移位RI接收D7RB8发生器RX时钟35方式1、2、3的区别方式1、2、3主要区别在两方面(1)字符格式(2)波特率这是异步通信事先要规定的两个重要约定36方式1、2、3的区别•1)字符格式约定•方式1为8位异步通讯口:•方式2、3为9位异步通讯口:0101启动位停止位启动位停止位数据:8位数据:8位接收送入SCON的RB8位发送时用户通过置TB8决定该位为”0”还是”1”37在方式1工作时定时器1是作为波特率发生器用,其中断应无效,而方式2的波特率为溢出率定时器波特率=工作方式13223SMOD振荡器频率波特率=工作方式6422SMOD2)波特率方式1、3的波特率可变,由定时/计数器产生38•因振荡器的频率是固定的,故方式2的波特率只能取为由编程PCON的SMOD=显然,方式2波特率变化范围小于方式1、31加倍0不变振荡器频率或振荡器频率641321393)发送(输出)区别:方式1、2、3应写入不同的方式控制字方式2,3可程控TB8(1)使第九位数据做多机通讯中地址/数据位(2)做奇偶校验位40方式1与方式2、3的主要区别4)接收(输入)区别:写入不同控制字,均使REN=1,允许接收但要保存接收到的数据还应使:方式1方式2、3RI=0RI=0SM2=0SM2=0或SM2=1且接收到的第9个数据=141在单机通讯时可利用TB8、RB8作为奇偶校验位例:设R2为发送数据区地址指针,加入奇偶校验位的发送程序如下:RIPTI:PUSHPSWPUSHASETBPSW.4CLRPSW.3CLRTI42MOVA,@R0MOVTB8,PMOVSBUF,AINCR0POPAPOPPSWRETI43多处理机通讯•由控制字SM2位规定可知•SM2=1,串行口接收到的第九位数据存于RB8:RB8=1产生中断,接收数据RB8=0不产生中断,信息丢失根据这一特性可用于实现多机通讯。44•从机编程方式为方式2或39位异步通讯方式###0,1,2SM2=1,多机通讯控制REN=1,允许接收TXDRXD主机RXDTXD08031#18031#28031#TXDTXDRXDRXD图5-13多机通讯系统示意图451、置所有从机SM2=1;2、发地址,且使主机TB8=1;从机RB8=1∴各从机响应中断,对照地址相符:使SM2=0不符:维持SM2=1SM2=14、主机发送数据信息,且此时TB8=0(主机)3、∵其过程简述如下:465、从机接收后RB8=0从机中地址相符地址不符SM2=0RB8=0可接收,数据送被寻址从机SM2=1RB8=0不产生RI中断,数据丢失∵∵1、RI=01、RI=02、SM2=02、若SM2=1,则应使RB8=1接收条件:否则接收到的数据将丢失47波特率的设定•方式2:波特率固定为振荡频率的1/32或1/64•方式1、3波特率可变。•∴波特率的制定主要是对方式1、3而言的。•由于方式1、3波特率可变,无法采用固定的振荡频率,一般采用定时器1,且让工作于自动装载方式(方式2,不中断)来产生波特率。48•