《(16)--第11章 MSP430通信接口单片机技术.pdf》由会员分享,可在线阅读,更多相关《(16)--第11章 MSP430通信接口单片机技术.pdf(109页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第11章章 MSP430通信接口通信接口(一)(一)11.1 USCI模块概述模块概述11.1.1 USCI模块特性1.低功耗运行模式(自动启动)低功耗运行模式(自动启动)2.两个独立模块:两个独立模块:USCI_A:支持支持Lin/IrDA的的UART;SPI(主(主/从、从、3线和线和4线模式)。线模式)。USCI_B:SPI(主(主/从、从、3线和线和4线模式);线模式);I2C(主(主/从,高达从,高达400kHz)。)。3.双缓冲双缓冲 TX/RX;4.波特率波特率/位时钟发生器:位时钟发生器:自动波特率检测;自动波特率检测;灵活的时钟源。灵活的时钟源。5.RX干扰抑制;干扰抑制;
2、6.使能使能DMA;7.错误检测。错误检测。图图4-4 USCI模块结构模块结构11.1.2 USCI模块结构USCI模块结构如模块结构如图图4-4所示。所示。分别由分别由USCI_A和和USCI_B两个子模块两个子模块构成。构成。USCI_A包含:包含:UART,SPI,IrDA三个通信模块。三个通信模块。USCI_B包含:包含:SPI,I2C两个通信模两个通信模块。块。11.1.3 初始化USCI模块使用使用USCI模块之前,要先对其进行初始化配置。建议采模块之前,要先对其进行初始化配置。建议采用以下步骤初始化或重配置用以下步骤初始化或重配置USCI模块:模块:置位置位UCAxCTL1的的
3、UCSWRST位;位;初始化初始化USCI寄存器;寄存器;配置相应引脚端口;配置相应引脚端口;软件清零软件清零UCSWRST位;位;使能使能UCxRXIE和和/或或UCxTXIE中断。中断。USCI波特率发生器可以从非标准的时钟源频率中产生波特率发生器可以从非标准的时钟源频率中产生标准的波特率,可以通过标准的波特率,可以通过UCOS16控制位选择系统提供的两控制位选择系统提供的两种操作模式,分别为:产生低频波特率模式(种操作模式,分别为:产生低频波特率模式(UCOS16=0)和产生过采样波特率模式(和产生过采样波特率模式(UCOS16=1)。)。UART波特率的参考时钟来自于波特率的参考时钟来
4、自于BRCLK,BRCLK可以可以通过通过UCSSELx控制位配置为外部时钟控制位配置为外部时钟UCAxCLK或内部时钟或内部时钟ACLK或或SMCLK。11.1.4 波特率的产生11.1.5 波特率发生器图图4-5 波特率发生器结构波特率发生器结构波特率发生器的结构如图波特率发生器的结构如图4-5所示。所示。1.产生低频波特率模式产生低频波特率模式当当UCOS16=0时,选择低频波特率模式。该模式允许从时,选择低频波特率模式。该模式允许从低频时钟源产生标准的波特率(例如,从低频时钟源产生标准的波特率(例如,从32.768kHz晶振产晶振产生生9600bps的波特率)。通过使用较低的输入频率,
5、可以降的波特率)。通过使用较低的输入频率,可以降低系统的功耗。低系统的功耗。在低频模式下,波特率发生器使用在低频模式下,波特率发生器使用1个预分频器和个预分频器和1个调个调制器产生时钟时序。在这种组合下,产生的波特率支持小数制器产生时钟时序。在这种组合下,产生的波特率支持小数分频。在这种模式下,最大的分频。在这种模式下,最大的USCI波特率是波特率是UART源时钟频源时钟频率率BRCLK的的1/3。注意:注意:在高频输入或高分频设置下,使用这种模式,将在高频输入或高分频设置下,使用这种模式,将导致在更小的窗口中采用多数表决方式,因此会降低多数表导致在更小的窗口中采用多数表决方式,因此会降低多数
6、表决法的优势。决法的优势。多数表决法:多数表决法:串行传输每一位的时序如图串行传输每一位的时序如图4-6所示。所示。图图4-6 在在UCOS16=0时的时的BITCLK波特率时序波特率时序对于接收的每一位,为了确定该位的值,采用多数表对于接收的每一位,为了确定该位的值,采用多数表决法,即决法,即3取取2表决法。每次表决时采样表决法。每次表决时采样3次,最终该位的值次,最终该位的值至少在采样中出现两次。至少在采样中出现两次。这些采样发生在这些采样发生在(N/2-1/2),N/2和和(N/2+1/2)个个BRCLK周期处,如图周期处,如图4-6中的方框所示,这里的中的方框所示,这里的N是每个是每个
7、BITCLK包包含的含的BRCLKs的数值,图中的的数值,图中的m为调制设置,具体参见表为调制设置,具体参见表4-1所示所示。UCBRSxBit0(开始位)Bit1Bit2Bit3Bit4Bit5Bit6Bit7000000000101000000201000100301010100401010101501110101601110111701111111表表4-1 BITCLK调制模式列表调制模式列表2.产生过采样波特率模式产生过采样波特率模式当当UCOS16=1时,选择过采样模式。该模式支持在较高时,选择过采样模式。该模式支持在较高的输入参考时钟频率下,产生较高的的输入参考时钟频率下,产生较
8、高的UART波特率。波特率。该模式的参考时钟为经预分频器和调制器产生的该模式的参考时钟为经预分频器和调制器产生的BITCLK16时钟,该时钟频率为时钟,该时钟频率为BITCLK的的1/16。因此,在计。因此,在计算分频系数时,需将波特率发生器的参考时钟频率除以算分频系数时,需将波特率发生器的参考时钟频率除以16之之后,再进行计算。后,再进行计算。例如,若波特率发生器的参考时钟例如,若波特率发生器的参考时钟BITCLK选择内部的选择内部的SMCLK=1.048576MHz,最终需要产生,最终需要产生9600bps的波特率,的波特率,首先将首先将BITCLK除以除以16为为65536Hz,作为该模
9、式下的波特率作为该模式下的波特率参考时钟,计算分频系数为参考时钟,计算分频系数为N=65536/9600=6.83。这种组合方式支持这种组合方式支持BITCLK16和和BITCLK产生不是整数产生不是整数倍的波特率,在这种情况下,最大的倍的波特率,在这种情况下,最大的USCI波特率是波特率是UART源源时钟频率的时钟频率的1/16。当。当UCBRx设置为设置为0或或1时,将忽略第一级时,将忽略第一级分频器和调制器,此时分频器和调制器,此时BITCLK16等于等于BITCLK,在这种情,在这种情况下,况下,BITCLK16没有调制,因此将忽略没有调制,因此将忽略UCBRFx位。位。BITCLK1
10、6的调制是建立在如表的调制是建立在如表4-2所示的所示的UCBRFx设设置的基础之上的。表中的置的基础之上的。表中的0和和1表示表示m的值,的值,m=1时所对应的时所对应的BITCLK的周期比的周期比m=0时所对应的时所对应的BITCLK的周期要长,具的周期要长,具体原理可参考产生低频波特率模式下的调制原理。体原理可参考产生低频波特率模式下的调制原理。UCBRFx在上一个BITCLK的下降沿后BITCLK16位的次序012345678910111213141500h000000000000000001h010000000000000002h010000000000000103h01100000
11、0000000104h011000000000001105h011100000000001106h011100000000011107h011110000000011108h011110000000111109h01111100000011110Ah01111100000111110Bh01111110000111110Ch01111110001111110Dh01111111001111110Eh01111111011111110Fh0111111111111111表表4-2 BITCLK16调制模式列表调制模式列表11.2 通用串行通信接口通用串行通信接口(USCI)UART模式模式11.
12、2.1 全双工串行接口(UART)应用场合UART(Universal Asynchronous Receiver and Transmitter,通用异步收发器通用异步收发器),俗称“串口”俗称“串口”。串口是串口是MSP430与外界联系的重要手段,主要用于以下两与外界联系的重要手段,主要用于以下两个方面:个方面:2.UART和和PC机通信:由于机通信:由于PC机串口是机串口是RS232电平,所以连接时需要使用电平,所以连接时需要使用RS232转换器。如图转换器。如图4-8所示。所示。图图4-8 UART通信模式二通信模式二1.UART直接和其他的控制器进行数据交换。如图直接和其他的控制器进
13、行数据交换。如图4-7所示。所示。图图4-7 UART通信模式一通信模式一11.2.2 UART 工作原理1.需选择一波特率作为发送(需选择一波特率作为发送(/接收)数据的时序,交互双接收)数据的时序,交互双方的波特率必须一致。方的波特率必须一致。2.UART的数据以帧为单位发送,通信双方必须约定其相关的数据以帧为单位发送,通信双方必须约定其相关的通信协议。的通信协议。3.数据成功的发送和接收都有专门的中断和状态位来指出。数据成功的发送和接收都有专门的中断和状态位来指出。11.2.3 UART帧结构起始位起始位1位位数据区(由低到高)数据区(由低到高)一般为一般为7位或位或8位位校验位校验位1
14、位位停止位停止位一般可选为一般可选为1位或位或2位位图图4-9 UART帧结构帧结构一帧数据通常由以下几个部分组成:起始位、数据位一帧数据通常由以下几个部分组成:起始位、数据位(可选位数(可选位数7位或位或8位)、校验位(可选)、停止位(可选位位)、校验位(可选)、停止位(可选位数数1位或位或2位)。如图位)。如图4-9所示。所示。1.传输传输7位或位或8位数据,可采用奇校验、偶校验或者无校验;位数据,可采用奇校验、偶校验或者无校验;2.具有独立的发送和接收移位寄存器;具有独立的发送和接收移位寄存器;3.具有独立的发送和接收缓冲寄存器;具有独立的发送和接收缓冲寄存器;4.支持最低位优先或最高位
15、优先的数据发送和接收方式;支持最低位优先或最高位优先的数据发送和接收方式;5.内置多处理器系统,包括线路空闲和地址位通信协议;内置多处理器系统,包括线路空闲和地址位通信协议;6.通过起始位检测将通过起始位检测将MSP430单片机从低功耗模式下唤醒;单片机从低功耗模式下唤醒;7.可编程实现分频因子为整数或小数的波特率;可编程实现分频因子为整数或小数的波特率;8.具有用于检测错误或排除错误的状态标志位;具有用于检测错误或排除错误的状态标志位;9.具有用于地址检测的状态标志位;具有用于地址检测的状态标志位;10.具有独立的发送和接收中断能力。具有独立的发送和接收中断能力。11.2.4 异步串行通信(
16、UART)的特点11.2.5 USCI_Ax模块结构 UART模式在异步模式下,在异步模式下,USCI_Ax模块通过两模块通过两个外部引脚个外部引脚UCAxRXD和和UCAxTXD将芯片连将芯片连接到外部系统。如图接到外部系统。如图4-10所示。所示。当当UCSYNC=0时,选择时,选择UART模式。模式。图图4-10 USCI_Ax模块结构模块结构11.2.6 UART通信字符格式串行异步通信字符通常由串行异步通信字符通常由5个部分组成:一个起始位、个部分组成:一个起始位、7位或位或8位数据位、一个奇位数据位、一个奇/偶偶/无校验位、一个地址位和一个或无校验位、一个地址位和一个或两个停止位。
17、如图两个停止位。如图4-11所示。所示。图图4-11 异步通信字符格式异步通信字符格式其中,用户可以通过软件设置数据位、停止位的位数,其中,用户可以通过软件设置数据位、停止位的位数,还可以设置奇偶校验位的有无。通过选择时钟源和波特率寄还可以设置奇偶校验位的有无。通过选择时钟源和波特率寄存器的数据来确定传输速率。存器的数据来确定传输速率。UCMSB控制位用来设置传输的方向和选择最低位还是控制位用来设置传输的方向和选择最低位还是最高位先发送。一般情况下,对于最高位先发送。一般情况下,对于UART通信选择先发送最通信选择先发送最低位。低位。11.2.7 UART多机通信模式当当3个或更多的设备通信时
18、,个或更多的设备通信时,USCI支持两种多机通信模支持两种多机通信模式:即线路空闲和地址位多机模式。式:即线路空闲和地址位多机模式。信息以一个多帧数据块,从一个指定的源传送到一个或信息以一个多帧数据块,从一个指定的源传送到一个或多个目的位置。在同一个串行链路上,多个处理机之间可以多个目的位置。在同一个串行链路上,多个处理机之间可以用这些模式来交换信息,实现在多处理机通信系统间的有效用这些模式来交换信息,实现在多处理机通信系统间的有效数据传输。数据传输。控制寄存器的控制寄存器的UCMODEx控制位可用来确定这两种模式控制位可用来确定这两种模式,这两种模式具有唤醒发送、地址特征和激活等功能。,这两
19、种模式具有唤醒发送、地址特征和激活等功能。在这两种多处理机模式下,在这两种多处理机模式下,USCI数据交换过程可以用数据交换过程可以用数据查询方式,也可以用中断方式来实现。数据查询方式,也可以用中断方式来实现。1.线路空闲多机模式线路空闲多机模式当当UCMODEx控制位被配置为控制位被配置为01时,时,USCI就选择了线路就选择了线路空闲多机模式,如图空闲多机模式,如图4-12所示。所示。图图4-12 线路空闲多机模式通信示意图线路空闲多机模式通信示意图在这种模式下,发送和接收数据线上的数据块被空闲时在这种模式下,发送和接收数据线上的数据块被空闲时间分割。上图为数据块传输的间分割。上图为数据块
20、传输的总体示意;下图为每个数据块总体示意;下图为每个数据块中字符的传输示意。中字符的传输示意。上上图中,在字符的一个或两个停止位之后,若收到图中,在字符的一个或两个停止位之后,若收到10个个以上的以上的1,则表示检测到接收线路空闲。在识别到线路空闲,则表示检测到接收线路空闲。在识别到线路空闲后,波特率发生器就会被关断,直到检测到下一个起始位才后,波特率发生器就会被关断,直到检测到下一个起始位才会重新被启动。当检测到线路会重新被启动。当检测到线路空闲空闲后,将置位后,将置位UCIDLE标志标志位。位。下下图中,每两个数据块之间的线路空闲时间应少于图中,每两个数据块之间的线路空闲时间应少于10个个
21、空闲位,这样数据才能正确、正常地传输。空闲位,这样数据才能正确、正常地传输。2.地址位多机模式地址位多机模式当当UCMODEx控制位被配置为控制位被配置为10时,时,USCI就选择了地就选择了地址位多机模式。如图址位多机模式。如图4-13所示。所示。图图4-13 地址位多机模式格式示意图地址位多机模式格式示意图在这种模式下,字符包含一个附加的位作为地址和数在这种模式下,字符包含一个附加的位作为地址和数据标志。据标志。数据块的第数据块的第1个字符带有一个置位的地址位,用以表明个字符带有一个置位的地址位,用以表明该字符是一个地址。其后字符带有一个复位的地址位,用该字符是一个地址。其后字符带有一个复
22、位的地址位,用以表明该字符是一个数据。以表明该字符是一个数据。当接收到的字符地址位置位,且被传送到当接收到的字符地址位置位,且被传送到UCAxRXBUF接收缓冲寄存器中,接收缓冲寄存器中,USCI模块将置位模块将置位UCADDR标志位。标志位。当当UCMODEx控制位被配置为控制位被配置为11时,就选择了带自动波时,就选择了带自动波特率检测的特率检测的UART模式。如图模式。如图4-14所示。所示。11.2.8 UART自动波特率检测模式图图4-14 自动波特率检测自动波特率检测打断打断/同步域序列同步域序列对于对于UART自动波特率检测方式,在数据帧前面会有一个自动波特率检测方式,在数据帧前
23、面会有一个包含打断和同步域的同步序列。包含打断和同步域的同步序列。当在总线上检测到当在总线上检测到11个或更多个个或更多个0时,被识别为总线打断。时,被识别为总线打断。如果总线打断的长度超过如果总线打断的长度超过21位时间长度,则将置位打断超时错位时间长度,则将置位打断超时错误标志误标志UCBTOE。当接收打断或同步域时,当接收打断或同步域时,在在1个字节里,同步域系列为字个字节里,同步域系列为字符符055h。同步域在打断域之后。同步域在打断域之后。同步是基于这种模式的第一个下降沿和最后一个下降沿之同步是基于这种模式的第一个下降沿和最后一个下降沿之间的时间测量间的时间测量。如果通过置位如果通过
24、置位UCABDEN控制位,将使能自动波特率检测功控制位,将使能自动波特率检测功能,则发送波特率发生器通常用于时间的测量。否则,在该模能,则发送波特率发生器通常用于时间的测量。否则,在该模式下只接收并不测量。测量的结果将被移送到波特率控制寄存式下只接收并不测量。测量的结果将被移送到波特率控制寄存器(器(UCAxBR0、UCAxBR1和和UCAxMCTL)中。)中。如果同步域的长度超过了可测量的时间,将置位同步超时如果同步域的长度超过了可测量的时间,将置位同步超时错误标志位错误标志位UCSTOE。11.2.9 UART波特率的设置设置方法:设置波特率时,首先要选择合适的时钟源。设置方法:设置波特率
25、时,首先要选择合适的时钟源。对于对于 9600bps的情况下,应选择频率较高的的情况下,应选择频率较高的SMCLK作为作为时钟源。时钟源。在某些特殊应用中,也可以使用外部的时钟输入作为波在某些特殊应用中,也可以使用外部的时钟输入作为波特率发生器的时钟源。特率发生器的时钟源。BRCLKNff=所选用的波特率分频因子分频因子N通常不是一个整数值通常不是一个整数值,因此至少需要一个,因此至少需要一个分频器和一个调制器来尽可能接近分频因子。分频器和一个调制器来尽可能接近分频因子。如果如果N 16,可以通过,可以通过UCOS16=0选择低频采样波特选择低频采样波特率产生模式。率产生模式。如果如果N 16
26、,可以通过,可以通过UCOS16=1选择过采样波特率产选择过采样波特率产生模式。生模式。对于给定的对于给定的BRCLK时钟源,所使用的波特率将决定分时钟源,所使用的波特率将决定分频因子频因子N,计算公式为,计算公式为:1.低频波特率设置低频波特率设置在低频模式下,分频因子的整数部分在低频模式下,分频因子的整数部分UCBRx通过预分频通过预分频器实现,配置方式为(其中器实现,配置方式为(其中INT为取整)。为取整)。()UCBRx=INT N小数部分小数部分UCBRSx由调制器实现,配置方式为(由调制器实现,配置方式为(round为取附近整数)为取附近整数)()()()UCBRSx=roundI
27、NT8NNUCBRx=INT(16)NUCBRFx=round(16)INT(16)16)NN分频因子的小数部分分频因子的小数部分UCBRSx为:为:2.过采样波特率设置过采样波特率设置在过采样模式下,在过采样模式下,分频因子的整数部分分频因子的整数部分UCBRx为:为:波特率设置也可直接参考表波特率设置也可直接参考表4-3和表和表4-4,更多设置请查,更多设置请查看芯片的数据手册。看芯片的数据手册。波特率波特率(bps)时钟源时钟源BRCLK=32768Hz时钟源时钟源BRCLK=1048576HzUCBRxUCBRSxUCBRFxUCBRxUCBRSxUCBRFx1200272087313
28、024001360436150480067021870960033010920192005450384002720576001810115200910表表4-3 波特率设置速查表波特率设置速查表(UCOS16=0)波特率波特率(bps)时钟源时钟源BRCLK=1048576Hz时钟源时钟源BRCLK=4000000HzUCBRxUCBRSxUCBRFxUCBRxUCBRSxUCBRFx9600601326011920031613003840060857600453115200232表表4-4 波特率设置速查表波特率设置速查表(UCOS16=1)11.2.10 IrDA编码和解码当置位当置位UC
29、IREN控制位时,将会使能控制位时,将会使能IrDA编码器和解码编码器和解码器,并对器,并对IrDA通信提供硬件编码和解码。通信提供硬件编码和解码。1.IrDA编码编码IrDA编码器会在编码器会在UART数据流的基础上,对数据流的基础上,对UART传输中传输中遇到的每一位遇到的每一位0发送一个脉冲进行编码,编码方式如图发送一个脉冲进行编码,编码方式如图4-15所所示,脉冲的持续时间由示,脉冲的持续时间由UCIRTXPLx进行定义。进行定义。图图4-15 UART与与IrDA数据编码方式数据编码方式2.IrDA解码解码当当UCIRRXPL=0时,解码器检测到高电平,否则检测低时,解码器检测到高电
30、平,否则检测低电平。除了模拟抗尖峰脉冲滤波器,电平。除了模拟抗尖峰脉冲滤波器,USCI内部还包含可编程内部还包含可编程数字滤波器,用户可通过置位数字滤波器,用户可通过置位UCIRRXFE控制位使能该内部控制位使能该内部可编程数字滤波器。当可编程数字滤波器。当UCIRRXFE置位时,只有超过编程过置位时,只有超过编程过滤长度的脉冲可以通过,短脉冲被丢弃。滤长度的脉冲可以通过,短脉冲被丢弃。过滤器长度过滤器长度UCIRRXFLx的编程计算公式如下:的编程计算公式如下:()PULSEWAKEBRCLKUCIRRXFLx24ttf=式中,式中,tPULSE为最小接收脉冲宽度;为最小接收脉冲宽度;tWA
31、KE为从任何低功耗为从任何低功耗模式下的唤醒时间,在活动模式下,该值为模式下的唤醒时间,在活动模式下,该值为0。USCI只有一个发送和接收共用的中断向量,只有一个发送和接收共用的中断向量,USCI_Ax和和USCI_Bx不共用中断向量。不共用中断向量。11.2.11 USCI异步方式中断1.UART发送中断操作发送中断操作USCI发送装置置位发送装置置位UCTXIFG中断标志,这表明中断标志,这表明UCAxTXBUF已经准备好接收另一个字符。如果已经准备好接收另一个字符。如果UCTXIE寄寄存器中存器中UCRXIE和和GIE也置位的话,将产生发送中断请求。也置位的话,将产生发送中断请求。如果将
32、字符写入如果将字符写入UCAxTXBUF中,中,UCTXIFG将自动复位。将自动复位。复位复位PUC之后或之后或UCSWRST=1时,将置位发送中断标时,将置位发送中断标志位志位UCTXIFG并清除中断允许寄存器并清除中断允许寄存器UCTXIE。2.UART接收中断操作接收中断操作每接收到一个字符并将其装入每接收到一个字符并将其装入UCAxRXBUF中时,将中时,将置位接收中断标志位置位接收中断标志位UCRXIFG。如果如果UCTXIE寄存器中寄存器中UCTXIE和和GIE也置位的话,将也置位的话,将产生接收中断请求。当读取产生接收中断请求。当读取UCAxRXBUF中的数据时,接中的数据时,接
33、收中断标志位收中断标志位UCRXIFG将自动复位。将自动复位。复位复位PUC之后或之后或UCSWRST=1时,将清除接收中断标时,将清除接收中断标志位志位UCRXIFG和中断允许寄存器和中断允许寄存器UCRXIE。3.其他中断控制操作其他中断控制操作 当当UCAxRXEIE=1时,接收到的错误字符将会置位时,接收到的错误字符将会置位UCRXIFG;当当UCDORM=1(睡眠模式)时,在多机模式下,地址(睡眠模式)时,在多机模式下,地址字符将会置位字符将会置位UCRXIFG;当当UCBRKIE=1时,若出现打断状态,将置位时,若出现打断状态,将置位UCBRK和和UCRXIFG标志位。标志位。11
34、.2.12 USCI寄存器:UART模式寄存器缩 写读/写类型访问方式偏移地址初始状态USCI_Ax控制寄存器0UCAxCTL0读/写字节访问00h01hUSCI_Ax控制寄存器1UCAxCTL1读/写字节访问01h00hUSCI_Ax波特率控制寄存器0UCAxBR0读/写字节访问06h00hUSCI_Ax波特率控制寄存器1UCAxBR1读/写字节访问07h00hUSCI_Ax调制器控制寄存器UCAxMCTL读/写字节访问08h00hUSCI_Ax状态寄存器UCAxSTAT读/写字节访问0Ah00hUSCI_Ax接收缓冲寄存器UCAxRXBUF读/写字节访问0Ch00hUSCI_Ax发送缓冲寄
35、存器UCAxTXBUF读/写字节访问0Eh00hUSCI_Ax自动波特率控制寄存器UCAxABCTL读/写字节访问10h00hUSCI_Ax IrDA发送控制寄存器UCAxIRTCTL读/写字节访问12h00hUSCI_Ax IrDA接收控制寄存器UCAxIRRCTL读/写字节访问13h00hUSCI_Ax中断使能寄存器UCAxIE读/写字节访问1Ch00hUSCI_Ax中断标志位UCAxIFG读/写字节访问1Dh00hUSCI_Ax中断向量UCAxIV读字访问1Eh0000hUSCI_Ax寄存器(基址:05C0h)UCPEN Bit7 奇偶检验位允许0 校验位禁止。1 校验位允许。校验位由U
36、CAxTXD 产生,由UCAxRXD 接收。在地址位多处理器模式下,地址位包含校验计算。UCPAR Bit6 校验位选择。当校验位禁止时,不使用UCPAR。0 奇校验1 偶检验UCMSB Bit5 高位优先选择。控制发送和接收移位寄存器的方向。0 低位优先1 高位优先UC7BIT Bit4 字符长度。选择7 位或者8 位的字符长度。0 8 位数据1 7 位数据UCAxCTL0,USCI_Ax控制寄存器控制寄存器0UART模块寄存器(1/14)UCSPB Bit3 停止位选择。停止位的个数。0 一个停止位1 两个停止位UCMODEx Bits2-1 USCI 模式。当UCSYNC=0时,UCMO
37、DEx 选择异步模式。00 UART模式01 空闲线路多处理器模式10 地址位多处理器模式11 自动波特率检测的UART 模式UCSYNC Bit0 同步模式。0 异步模式1 同步模式UCAxCTL1,USCI_Ax控制寄存器控制寄存器1UCSSELx Bits7-6 USCI时钟源选择。这些位选择BRCLK 的时钟源。00 UCLK01 ACLK10 SMCLK11 SMCLKUCRXEIE Bit5 接收字符错误中断使能。0 不接收出错字符,不置位UCRXIFG 位1 接收出错字符,置位UCRXIFG 位UCBRKIE Bit4 接收打断字符中断使能0 接收打断字符,不置位UCRXIFG
38、位1 接收打断字符,置位UCRXIFG 位UART模块寄存器(2/14)UCDORM Bit3 睡眠。使USCI进入睡眠模式。0 不睡眠。所有接收字符都会置位UCRXIFG。1 睡眠。只有在空闲线路的字符或者地址位的字符将置位UCRXIFG。在自动波特率检测的UART模式下,只有打断和同步域的组合可以置位UCRXIFG。UCTXADDR Bit2 发送地址。当在多机模式下,下一帧发送那个的数据将会被标记为地址。0 发送的下一帧是数据1 发送的下一帧是地址UCTxBRK Bit1 发送打断。下次写入发送缓冲区的时候发送一个打断。在自动波特率检测的UART模式下,要产生要求的中断/同步域,UCAx
39、TXBUF必须被写入055h。否则在发送缓冲器里必须写入00h。0 发送的下一帧不是打断1 发送的下一帧是一个打断或者打断/同步UCSWRST Bit0 软件复位使能0 禁止。USCI复位释放操作。1 使能。USCI在复位后逻辑电平保持不变。UCAxBR0,USCI_Ax波特率控制寄存器波特率控制寄存器0(低字节)(低字节)UCAxBR1,USCI_Ax波特率控制寄存器波特率控制寄存器1(高字节)(高字节)UCBRx 波特率发生器的时钟分频因子。UCBRx=UCAxBR1x28+UCAxBR0UART模块寄存器(3,4/14)UCAxMCTL,USCI_Ax调整控制寄存器调整控制寄存器UCBR
40、Fx Bits7-4 第一调整阶段选择。当 UCOS16=1时,这些位确定BITCLK16 的调整模式。当 UCOS16=0时,这些位被忽略。UCBRSx Bits3-1 第二调整阶段选择。这些位确定BITCLK的调整模式。UCOS16 Bit0 过采样模式使能。0 禁止1 使能UART模块寄存器(5/14)UCAxSTAT,USCI_Ax状态寄存器状态寄存器UCLISTEN Bit7 侦听使能。该位置位就选择一个闭环回路模式。0 禁止1 使能。UCAxTXD端发送的数据就返回给数据接收端。UCFE Bit6 帧错误标志0 没有错误1 接收到的字符以低电平的STOP位结束。UCOE Bit5
41、溢出错误标志。当之前在接收缓存UCAxBUF内的数据没有被读取,新的数据又被装载进去时会导致该位置位。UCOE会在读取了接收缓存自动复位,所以不要去软件清零以免发生功能失常的现象。0 没有溢出错误1 出现溢出错误。UART模块寄存器(6/14)UCPE Bit4 奇偶校验错误。0 没有奇偶校验错误1 出现奇偶校验错误UCBRK Bit3 打断检测标志位0 没有出现打断条件1 发生了打断条件UCRXERR Bit2 接收错误标志。该位表明接收该字符时出现错误。当该位置位时,UCRXERR会在接受缓存被读之后自动清零。0 没有检测到接收错误1 检测到接收错误UCADDR Bit1 在地址位多机模式
42、中,接收到了地址。当接收缓存UCAxRXBUF被读取时,UCADDR位自动复位。0 接收到的字符为数据1 接收到的字符为地址UCBUSY Bit0 USCI 忙状态。该位表明的是当前USCI接收或者发送状况。0 USCI 空闲1 USCI 忙碌状态(正在接收或者发送)UCAxRXBUF,USCI_Ax接收缓冲寄存器接收缓冲寄存器UCRXBUFx Bits7-0 数据接收缓冲器。用户可以访问,包含从接收移位寄存器收到的最后的字符。读UCAxRXBUF将复位接收错误标志位,UCADDR或者UCIDLE位,以及UCRXIFG。在7位数据模式时,UCAxRXBUF是低位优先的,最高位通常是复位的UAR
43、T模块寄存器(7/14)UCAxTXBUF,USCI_Ax发送缓冲寄存器发送缓冲寄存器UCTXBUFx Bits7-0 数据发送缓冲器。用户可以访问,它保持数据到被移入发送移位寄存器并发送数据到UCAxTXD。写数据发送缓冲器将清除UCTXIFG位。在7位模式时,最高位未使用,处于复位状态。UART模块寄存器(8/14)UCAxIRTCTL,USCI_Ax IrDA 发送控制寄存器发送控制寄存器UCIRTXPLx Bits7-2 发送脉冲长度脉冲长度tPULSE=(UCIRTXPLx+1)/(2 fIRTXCLK)。UCIRTXCLK Bit1 IrDA发送脉冲时钟选择0 BRCLK1 当UC
44、OS16=1时,BITCLK16。否则为BRCLK。UCIREN Bit0 IrDA编码器/解码器使能0 IrDA编码器/解码器禁止1 IrDA编码器/解码器使能UART模块寄存器(9/14)UCAxIRRCTL,USCI_Ax IrDA 接收控制寄存器接收控制寄存器UCIRRXFLx Bits7-2 接收滤波器长度。接收的最小的脉冲长度计算如下:tMIN=(UCIRRXFLx+4)/(2 fIRTXCLK)。UCIRRXPL Bit1 IrDA接收输入UCAxRXD 极性0 当检测到一个光脉冲时IrDA发送器发送一个高电平1 当检测到一个光脉冲时IrDA发送器发送一个低电平UCIRRXFE
45、Bit0 IrDA接收滤波器使能0 接收滤波器禁止1 接收滤波器使能UART模块寄存器(10/14)UCAxABCTL,USCI_Ax自动波特率控制寄存器自动波特率控制寄存器UART模块寄存器(11/14)UCDELIMx 打断/同步分隔符长度00 1位时长01 2位时长10 3位时长11 4位时长UCSTOE 同步域超时错误0 没有错误1 同步域长度超出可测量时间UCBTOE 打断超时错误0 没有错误1 打断域长度超出22位时长UCABDEN 自动波特率检测允许0 波特率检测禁止。不测量打断和同步域的长度1 波特率检测允许。测量打断和同步域长度,波特率的设置应此而改变。UCAxIE,USCI
46、_Ax中断使能寄存器中断使能寄存器UART模块寄存器(12/14)UCTXIE 发送中断允许0 中断禁止1 中断允许UCRXIE 接收中断允许0 中断禁止1 中断允许UCAxIFG,USCI_Ax中断标志寄存器中断标志寄存器UART模块寄存器(13/14)UCTXIFG 发送中断标志。当发送缓冲UCAxTXBUF空时UCTXIFG置位。0 没有中断挂起1 中断挂起UCRXIFG 接收中断标志。当接收缓冲UCAxRXBUF接收到完整字符时UCTXIFG置位。0 没有中断挂起1 中断挂起UCAxIV,USCI_Ax中断向量寄存器中断向量寄存器UCIVx Bits2-1 UCAxIV值中断源中断标志
47、中断优先级0000h 无中断0002h 数据接收满 UCRXIFG 中断优先级最高0004h 发送缓存空 UCTXIFG 中断优先级最低UART模块寄存器(14/14)例例1.在在MSP430单片机中,使用单片机中,使用ACLK作为作为UART时钟源,波特率时钟源,波特率设为设为4800bps。分析:在分析:在ACLK=32768Hz时产生时产生4800bps波特率,需要的分频系波特率,需要的分频系数是数是N=32768/4800=6.83。整数部分为。整数部分为6,小数部分为,小数部分为0.83。将整。将整数部分赋给数部分赋给UCA0BR寄存器,调制器分频余数为寄存器,调制器分频余数为0.8
48、3乘以乘以8,为,为6.64,取最接近的整数,取最接近的整数7,因此将,因此将7赋给赋给UCBRS控制位。控制位。UCA0CTL1|=UCSSEL_1;/串口时钟源为ACLKUCA0BR0=0 x06;/整数分频系数为6UCA0BR1=0 x00;UCA0MCTL|=UCBRS_7+UCBRF_0;/调制器分频UCBRSx=7,UCBRFx=0波特率设置举例低频例例2.在在MSP430单片机中,使用单片机中,使用SMCLK作为作为UART时钟源,波特时钟源,波特率设置为率设置为9600bps。分析:在分析:在SMCLK=1048576Hz时产生时产生9600bps波特率,需要的分波特率,需要的
49、分频系数频系数N=1048576/9600=109.23,大于,大于16分频,因此应选择过采分频,因此应选择过采样波特率产生模式,预分频样波特率产生模式,预分频UCBR应设置为应设置为INT(N/16)=INT(6.83)=6。调制器。调制器UCBRF应设置为应设置为UCA0CTL1|=UCSSEL_2;/SMCLKUCA0BR0=6;/整数分频系数为6UCA0BR1=0;UCA0MCTL=UCBRS_0+UCBRF_13+UCOS16;/调制器分频UCBRFx=13,选择过采样模式波特率设置举例过采样例例3.为为MSP430单片机的单片机的USCI_A0模块编写模块编写UART中断服务程序中
50、断服务程序框架。框架。/-在初始化代码中增加下面两句:-UCA0IE|=UCRXIE+UCTXIE;/使能USCI_A0的UART接收和发送中断_ _bis_SR_register(LPM0_bits+GIE);/进入LPM0并使能全局中断/*名 称:USCI_A0_ISR()*功 能:USCI_A0的的UART中断服务程序中断服务程序*/UART中断操作举例#pragma vector=USCI_A0_VECTOR_ _interrupt void USCI_A0_ISR(void)switch(_ _even_in_range(UCA0IV,4)case 0:break;/中断向量 0无中