您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第8章MSP430串行外设
第8章MSP430串行通信外设第1节串行通信的基本概念第2节MSP430USART外设第3节MSP430的异步串行方式(UARTMode)第4节MSP430的异步串行方式编程方法本章教学目标1.了解异步串行通信原理;2.掌握MSP430异步串行接口的组成和工作原理;3.掌握MSP430异步串行接口的编程方法。第1节串行通信的基本概念并行——多位信息沿着各自的信号线或引脚同时输入/输出D15D14D1D0CPUP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0MSP430接存储器、I/O接口接外扩并口器件或设备RxDTxD接收器发送器D7D6D5D4D3D2D1D0Td串行——多位信息沿着同一根信号线或引脚依次分时输入/输出串行方式的优点:信号线少,传输距离远,接线方便、成本低等串行方式的缺点:传输速度相对较慢串行通信的基本概念波特率=1/Td,单位:bps(bitspersecond)①波特率(Baudrate)是串行通信中衡量数据传输速率的单位,即每秒传送的二进制数据的位数,以位/秒(bps)表示。常用的波特率有:1200、2400、4800、9600、19200bps等RxDTxD接收器发送器D7D6D5D4D3D2D1D0Td②检错与奇偶校验(奇校验、偶校验)数据在传输过程中,由于干扰可能引起信息的出错。检查传输中的错误,叫检错;最简单的检错方法是奇偶校验,即在传送字符的各位之外,再传送1位奇/偶校验位。可采用奇校验或偶校验:奇校验:使所有传送的数位(含校验位)中1的个数为奇数偶校验:使所有传送的数位(含校验位)中1的个数为偶数LSBMSB起始位数据位校验位停止位按照数据流的方向,分成三种基本的传送方式:单工方式、全双工方式、半双工方式③串行数据传送方式发送器接收器AB发送器发送器AB接收器接收器需要两根数据线单工方式全双工方式半双工方式数据能从A方传送到B方,也能从B方传送到A方,但是不能同时在两个方向上传送,每次只能由一方发送,另一方接收。通信双方通过软件控制实现发送/接收方的角色转换发送器接收器AB接收器发送器发送器接收器AB接收器发送器半双工方式广泛地应用于主从结构的系统中主站从站1从站2从站n•每个站均有通信地址(定址原则)•平时从站都处于接收状态,等待来自主站的命令•当从站接收到来自主站的命令后,若需要响应,则将自己置为发送状态,并发送响应,发送完毕后再置为接收状态•当主站要发送命令时,置主站为发送状态当主站发送命令完毕后,置主站为接收状态,以接收从站的响应例:RS-485总线集散系统分布式系统④异步串行与同步串行同步串行:使用独立的同步时钟信号线来实现位同步异步串行:不使用独立的同步时钟信号线,位同步靠起始位、停止位等实现LSBMSB起始位数据位校验位停止位DATADATASCLK第2节MSP430USART外设UART方式(MSP430x1xxFamily)USARTUSART的两种工作方式:UARTMode——异步串行通信方式SPIMode——同步串行通信方式USART:UniversalSynchronous/AsynchronousReceive/TransmitUART:UniversalAsynchronousReceive/TransmitSPI:SynchronousperipheralinterfaceUARTModeSYNC=0SPIModeSYNC=1实现字符格式、自发自收、同步异步、多处理器方式和软件复位使能等的控制USART控制寄存器UxCTL(USARTcontrolregister)0:paritydisabled1:parityenabled0:oddparity1:evenparity0:onestopbit1:twostopbits0:7-bitdata1:8-bitdata0:listendisabled1:listenenabled0:UARTmode1:SPImode0:idle-linemultiprocessorprotocol1:address-bitmultiprocessorprotocol0:softwareresetdisabled1:softwareresetenabled第3节MSP430的异步串行通信方式(UARTMode,SYNC=0)发送控制/状态寄存器UxTCTL数据缓冲控制逻辑地址译码MDB8接收缓冲器UxRXBUF接收移位寄存器发送缓冲器UxTXBUF发送移位寄存器MABUARTmode的主要编程结构URXDxUTXDx接收控制/状态寄存器UxRCTL控制寄存器UxCTL波特率设置用寄存器UxMCTLUxBR0UxBR1中断使能寄存器IE1/IE2中断标志寄存器IFG1/IFG2模块使能寄存器ME1/ME2MCB读写信号中断信号时钟信号其它特殊功能寄存器SFRUxCTLSPB=1]UARTMode字符格式(CharacterFormat)USART控制寄存器SYNC=0异步串行字符格式举例:8位数据位、偶校验、2位停止位、无地址位格式LSBMSB起始位数据位校验位停止位D0D1D2D3D4D5D6D7UxCTL1111000xBIS.B#PENA+PEV+SPB+CHAR,&U0CTLUxCTL异步通信格式(AsynchronousCommunicationFormats)无地址位格式(MM=0),字符中无地址位(无AD位)带地址位格式(MM=1),字符中带AD位(AD=1:地址字节;AD=0:数据字节)该格式中的块间间隔与块内字符间间隔有特殊要求:块间间隔≥10Bits;0≤块内字符间间隔<10Bits如果格式中有2位停止位,则后一位被自动计入间隔中无地址位格式(MM=0)的间隔规定块间间隔的生成方法:11bitsblockofcharacterblockofcharacter块间间隔UxTCTL置位TXWAKE,然后写任意一个字符到UxTXBUF中该方法可以自动发送一个宽度为11位的间隔(高电平)TXWAKE自动清零注意:待UTXIFGx=1(UxTXBUF已空)时才能写UxTXBUF。UTXIFG0=IFG1.7,UTXIFG1=IFG2.7TcheckBIT.B#UTXIFG0,&IFG1JNZTcheckBIS.B#TXWAKE,&U0TCTLMOV.BR5,&U0TXBUFIFG1IFG2思考:其它块间间隔的生成方法?字符间间隔的生成方法?Tchk1BIT.B#UTXIFG0,&IFG1JNZTchk1BIS.B#TXWAKE,&U0TCTLMOV.BR5,&U0TXBUF;生成11bits块间间隔MOV#16,R9MOV#BUFFER,R5Tchk2BIT.B#UTXIFG0,&IFG1JNZTchk2MOV.B@R5+,&U0TXBUF;R5pointstoadatabyteDECR9JNZTchk2无地址位格式查询方式发送程序举例——发送从BUFFER开始的16字节块间间隔与字符间间隔无特殊要求;注意:PC机中无此格式,因此该格式的应用会受到限制。Eachcharactercontainsanaddressindictor带地址位格式(MM=1)的间隔规定地址位(ADbit)的生成方法:1.编程UxTCTL的TXWAKE位:发送地址字符时,使TXWAKE=1发送数据字符时,使TXWAKE=02.在将被发送字符由UxTXBUF传入发送移位寄存器时,TXWAKE的值由USART自动地装载入AD位,然后自动清零TXWAKE位。UxTCTL编程写入自动装载自动清零Tchk1BIT.B#UTXIFG0,&IFG1JNZTchk1BIS.B#TXWAKE,&U0TCTLMOV.BR5,&U0TXBUF;lowbyteofR5isaaddress查询方式地址字符发送程序:MOV#16,R9MOV#BUFFER,R5Tchk2BIT.B#UTXIFG0,&IFG1JNZTchk2BIC.B#TXWAKE,&U0TCTLMOV.B@R5+,&U0TXBUF;R5pointstoadatabyteDECR9JNZTchk2查询方式数据字符发送程序(BUFFER开始的16字节):UARTMode的接收原理位起始同步:与USART的时钟同步在中间位置3次采样并按少数服从多数的表决机制确定每位的值(majorityvotetaken)MSP430UARTMode的同步与定位原理以N=14为例USART接收控制寄存器(UxRCTL)编程状态状态10BIS.B#URXEIE,&U0RCTL0:若接收到错误字符,则不存入UxRXBUF,并且不置位URXIFGx1:接收到的字符无论错对,都存入UxRXBUF,并置位URXIFGx0:接收到的字符无论是地址还是数据,都置位URXIFGx(URXEIE=1)1:仅接收到地址字符时,才置位URXIFGx(URXEIE=1)URXEIE=URXWIE=UxRCTLUSART的接收器的状态帧错误(framingerrors):停止位错误(第1个停止位=“0”)奇偶校验错(parityerrors)溢出错误(overrunerrors):未及时读出,被新接收到的字节覆盖断开条件(breakconditions):连续接收到10位及以上的“0”1:错误0:正确接收错误RXERR=FE+PE+OE+BRK读UxRXBUF操作将清零FE,PE,OE,BRK,RXERR等标志位因此错误标志位的判断应在读UxRXBUF操作前进行。错误标志位也可由软件清零。0:receivedcharacterisdata1:receivedcharacterisanaddressMOV#16,R9MOV#0,R5RchkBIT.B#URXIFG0,&IFG1JNZRchkMOV.B&U0RXBUF,BUFFER(R5)BIC.B#URXIFG0,&IFG1INCR5DECR9JNZRchk无地址位格式查询方式接收程序举例——共接收16字节并存入BUFFER开始的存储器中。不考虑超时等待假定接收器已初始化为:接收到的字符无论是地址还是数据,无论错对,都存入UxRXBUF,并置位URXIFGx。MSP430USART的波特率发生器波特率=BRCLK/N(3≤N<0FFFFh)最大波特率=BRCLK/3波特率调整寄存器当BRCLK能被波特率整除时UxMCTL=0N=BRCLK周期数每bit波特率时钟选择波特率寄存器N=BRCLK周期数每bitN=BRCLK/波特率=32768/1200=27.31整数部分确定波特率寄存器UxBR1和UxBR0的值27=001Bh---高字节:UxBR1=00h,低字节:UxBR0=1Bh小数部分确定波特率调整寄存器UxMCTL的值0.31×8=2.48---取整---2------8位中使其中的2个bit的宽度=(27+1)个BRCLK,其它的6个bit的宽度=27个BRCLKUxMCTL=00000011bor00010001bor00100010b……波特率寄存器值计算举例要求:BRCLK=ACLK=32768Hz波特率=1200BPSN=32768/2400=13.6513=0x000D------UxBR1=00h,UxBR0=0Dh0.65*8=5.2------5------8位中使其中的5个bit的宽度=13+1个BRCLKUxMCTL=01101011bor01101101bor11011010b……N=32768/4800=6.836=0x0006------UxBR1=00h,UxBR0=06h0.83*8=6.64------6------8位中使其中的6个bit的宽度=6+1个BRCLKUxMCTL=01101111bor11101110bor11011011b……N=32768/9600=3.413=0x0003------UxBR1=00h,UxBR0=03h0.41*8=3.28------3------8位中使其中的3个b
本文标题:第8章MSP430串行外设
链接地址:https://www.777doc.com/doc-4028170 .html