您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第7章MSP430单片机片内通信模块
合肥工业大学DSP及MSP430实验室MSP430单片机原理与应用第七章MSP430单片机片内通信模块数据通信是单片机系统与外界联系的重要手段,每种型号的MSP430单片机均具有数据通信的功能。本章详细讲述USCI通信模块和USB通信模块的结构、原理及功能,并给出简单的数据通信例程。USCI通信模块7.1USB通信模块7.27.1USCI通信模块通用串行通信接口(USCI)模块支持多种串行通信模式,不同的USCI模块支持不同的通信模式。每个不同的USCI模块以不同的字母命名,如USCI_A、USCI_B等。如果在一个MSP430单片机上实现了不止一个相同的USCI模块,那么这些模块将以递增的数字命名。例如,当一个MSP430单片机支持两个USCI_A模块时,这两个模块应该被命名为USCI_A0和USCI_A1。具体可查阅相关芯片的数据手册,来确定该芯片具有哪些USCI通信模块。USCI_Ax模块支持以下模式:UART通信模式;具有脉冲整形的IrDA通信模式;具有自动波特率检测的LIN通信模式;SPI通信模式。USCI_Bx模块支持以下通信模式:I2C通信模式;SPI通信模式。7.1.1USCI的异步模式异步串行通信(UART)的特点如下:传输7位或8位数据,可采用奇校验、偶校验或者无校验;具有独立的发送和接收移位寄存器;具有独立的发送和接收缓冲寄存器;支持最低位优先或最高位优先的数据发送和接收方式;内置多处理器系统,包括线路空闲和地址位通信协议;通过有效的起始位检测将MSP430单片机从低功耗模式下唤醒;可编程实现分频因子为整数或小数的波特率;具有用于检测错误或排除错误的状态标志位;具有用于地址检测的状态标志位;具有独立的发送和接收中断能力。7.1USCI通信模块在UART模式下,USCI_Ax的结构如图7.1.1所示。图7.1.1UART模式下的USCI_Ax结构框图(UCSYNC=0)7.1USCI通信模块1.USCI初始化和复位通过产生一个PUC复位信号或者置位UCSWRST控制位可以使USCI模块复位。在产生一个PUC复位信号之后,系统可自动置位UCSWRST控制位,保持USCI模块在复位状态。若UCSWRST控制位置位,将重置UCRXIE、UCTXIE、UCRXIFG、UCRXERR、UCBRK、UCPE、UCOE、UCFE、UCSTOE和UCBTOE寄存器,并置位UCTXIFG中断标志位。清除UCSWRST控制位,USCI模块才可进行工作。因此,可按照以下步骤进行初始化或重新配置USCI模块:①置位UCSWRST控制位;②在UCSWRST=1时,初始化所有的USCI寄存器(包括UCTxCTL1);③将相应的引脚端口配置为UART通信功能;④软件清除UCSWRST控制位;⑤通过设置接收或发送中断使能控制寄存器UCRXIE和UCTXIE或两者之一,使能中断。7.1USCI通信模块2.异步通信字符格式如图7.1.2所示,异步通信字符格式由5个部分组成:一个起始位、7位或8位数据位、一个奇/偶/无校验位、一个地址位和一个或两个停止位。其中,用户可以通过软件设置数据位、停止位的位数,还可以设置奇偶校验位的有无。通过选择时钟源和波特率寄存器的数据来确定传输速率。UCMSB控制位用来设置传输的方向和选择最低位还是最高位先发送。一般情况下,对于UART通信选择先发送最低位。图7.1.2异步通信字符格式7.1USCI通信模块3.异步多机通信模式当两个设备异步通信时,不需要多机通信协议。当3个或更多的设备通信时,USCI支持两种多机通信模式,即线路空闲和地址位多机模式。信息以一个多帧数据块,从一个指定的源传送到一个或多个目的位置。在同一个串行链路上,多个处理机之间可以用这些格式来交换信息,实现在多处理机通信系统间的有效数据传输。控制寄存器的UCMODEx控制位可用来确定这两种模式,这两种模式具有唤醒发送、地址特征和激活等功能。在两种多处理机模式下,USCI数据交换过程可以用数据查询方式,也可以用中断方式来实现。(1)线路空闲多机模式当UCMODEx控制位被配置为01时,USCI就选择了线路空闲多机模式,如图7.1.3所示。在这种模式下,发送和接收数据线上的数据块被空闲时间分割。图7.1.3(a)为数据块传输的总体示意,图(b)为每个数据块中字符的传输示意。在图7.1.3(a)中,在字符的一个或两个停止位之后,若收到10个以上的1,则表示检测到接收线路空闲。在识别到线路空闲后,波特率发生器就会被关断,直到检测到下一个起始位才会重新被启动。当检测到空闲线路后,将置位UCIDLE标志位。在图7.1.3(b)中,每两个数据块之间的线路空闲时间应少于10个空闲周期,这样数据才能正确、正常地传输。图7.1.3线路空闲多机模式通信示意图7.1USCI通信模块(2)地址位多机模式当UCMODEx控制位被配置为10时,USCI就选择了地址位多机模式。在这种模式下,字符包含一个附加的位作为地址标志。地址位多机模式的格式如图7.1.4所示。数据块的第1个字符带有一个置位的地址位,用以表明该字符是一个地址。当接收到的字符地址位置位且被传送到UCAxRXBUF接收缓冲寄存器中,USCI模块将置位UCADDR标志位。图7.1.4地址位多机模式格式示意图7.1USCI通信模块4.自动波特率检测当UCMODEx控制位被配置为11时,就选择了带自动波特率选择的UART模式。对于UART自动波特率检测方式,在数据帧前面会有一个包含打断和同步域的同步序列。当在总线上检测到11个或更多个0时,被识别为总线打断。如果总线打断的长度超过21位时间长度,则将置位打断超时错误标志UCBTOE。当接收打断或同步域时,USCI不能发送数据。同步域在打断域之后,示意图如图7.1.5所示。在1个字节里,同步域包含数据055h,如图7.1.6所示。同步是基于这种模式的第一个下降沿和最后一个下降沿之间的时间测量,如果通过置位UCABDEN控制位,将使能自动波特率检测功能,则发送波特率发生器通常用于时间的测量。否则,在该模式下只接收并不测量。测量的结果将被移送到波特率控制寄存器(UCAxBR0、UCAxBR1和UCAxMCTL)中。如果同步域的长度超过了可测量的时间,将置位同步超时错误标志位UCSTOE。图7.1.5自动波特率检测——打断/同步域序列示意图图7.1.6自动波特率检测——同步域示意图7.1USCI通信模块5.IrDA编码和解码当置位UCIREN控制位时,将会使能IrDA编码器和解码器,并对IrDA通信提供硬件编码和解码。(1)IrDA编码IrDA编码器会在UART数据流的基础上,对UART传输中遇到的每一位0发送一个脉冲进行编码,编码方式如图7.1.7所示,脉冲的持续时间由UCIRTXPLx进行定义。图7.1.7UART与IrDA数据编码方式(2)IrDA解码当UCIRRXPL=0时,解码器检测到高电平,否则检测低电平。除了模拟抗尖峰脉冲滤波器,USCI内部还包含可编程数字滤波器,用户可通过置位UCIRRXFE控制位使能该内部可编程数字滤波器。当UCIRRXFE置位时,只有超过编程过滤长度的脉冲可以通过,短脉冲被丢弃。过滤器长度UCIRRXFLx的编程计算公式如下PULSEWAKEBRCLKUCIRRXFLx24ttf式中,tPULSE为最小接收脉冲宽度;tWAKE为从任何低功耗模式下的唤醒时间,在活动模式下,该值为0。7.1USCI通信模块6.自动错误检测USCI模块接收字符时,能够自动进行校验错误、帧错误、溢出错误和打断状态检测。当检测到它们各自的状态时,会置位相应的中断标志位UCFE、UCPE、UCOE和UCBRK。当这些错误标志位置位时,UCRXERR也会被置位。各种错误的含义和标志如表7.1.1所示。错误状态错误标志描述帧错误标志UCFE当检测到停止位为0时,则认为发生了帧错误。当用到两个停止位时,需检测两个停止位来判断是否产生了帧错误。当检测到帧错误发生时,将置位UCFE标志位奇偶校验错误标志UCPE奇偶校验错误是指在接收的一个字符中1的个数与其校验位不相符。当字符中包含地址位时,地址位也参与奇偶计算。当检测奇偶校验错误时,将置位UCPE标志位接收溢出错误标志UCOE当一个字符被写入接收缓存寄存器UCAxRXBUF时,前一个字符还没有被读出,这时前一个字符因被覆盖而丢失,发生溢出错误。当检测到接收溢出错误时,将置位UCPE标志位打断检测标志UCBRK当不用自动波特率检测功能时,所有的数据位、奇偶校验位和停止位都是低电平时,将会检测到打断状态。检测到打断状态就会置位UCBRK。如果置位打断中断使能标志位UCBRKIE,则检测到打断状态也将置位中断标志位UCRXIFG表7.1.1接收错误状态描述列表7.1USCI通信模块7.USCI接收使能通过清除UCSWRST控制位可以使能USCI模块,此时,接收端准备接收数据并处于空闲状态,接收波特率发生器处于准备状态,但并没有产生时钟。起始位的下降沿可以使能波特率发生器。UART状态机可检测有效起始位,如果未检测到有效起始位,则UART状态机返回空闲状态同时停止波特率发生器;如果检测到有效起始位,则字符将会被接收。当选择线路空闲多机模式时(UCMODEx=01),在接收完一个字符之后,UART状态机检测空闲线路。若检测到一个起始位,则接收下一个字符。否则,如果在线路上检测到10个1,就会置位UCIDLE空闲标志位,并且UART状态机返回空闲状态同时波特率发生器被禁止。抑制接收数据脉冲干扰能够防止USCI模块意外启动,任何在UCAxRXD的时间少于抗尖峰脉冲时间tt(近似150ns)的短时脉冲都将被USCI忽略,紧接着进行初始化,如图7.1.8所示,若在UCAxRXD上的短时脉冲时间少于tt,USCI并没有开始接收数据。当一个尖峰脉冲时间长于tt,或者在UCAxRXD上发生一个有效的起始位,USCI开始接收工作并采用多数表决方式,如图7.1.9所示。如果多数表决没有检测到起始位,则USCI停止接收字符。图7.1.8短时脉冲抑制——USCI并没有开始接收数据图7.1.9短时脉冲抑制——USCI活动7.1USCI通信模块8.USCI发送使能通过清除UCSWRST控制位可以使能USCI模块,此时,发送端准备发送数据并处于空闲状态,发送波特率发生器处于准备状态,但是,并没有产生时钟。通过写数据到发送缓冲寄存器中,USCI就可以开始发送数据。波特率发生器开始工作,当发送移位寄存器为空时,在下一个BITCLK上,发送缓冲寄存器中的数据将被移送到发送移位寄存器中。在前一字节发送完成之后,只要发送缓冲寄存器UCAxTXBUF中有新数据,发送即可继续。若前一字节发送完成之后,发送缓冲寄存器UCAxTXBUF中并没有写入新的数据,发送端将返回空闲状态,同时停止波特率发生器。7.1USCI通信模块9.UART波特率的产生USCI波特率发生器可以从非标准的时钟源频率中产生标准的波特率,可以通过UCOS16控制位选择系统提供的两种操作模式,分别为:产生低频波特率模式(UCOS16=0)和产生过采样波特率模式(UCOS16=1)。UART波特率的参考时钟来自于BRCLK,具体请参考图7.1.1,BRCLK可以通过UCSSELx控制位配置为外部时钟UCAxCLK或内部时钟ACLK或SMCLK。(1)产生低频波特率模式当UCOS16=0时,选择低频波特率模式。该模式允许从低频时钟源产生标准的波特率(例如,从32768Hz晶振产生9600bps的波特率)。通过使用较低的输入频率,可以降低系统的功耗。注意:在高频输入或高分频设置下,使用这种模式,将导致在更小的窗口中采用多数表决方式,因此会降低多数表决法的优势。在低频模式下,波特率发生器使用1个预分频器和1个调制器产生时钟时序。在这种组合下,产生的波特率支持小数分频。在这种模式下,最大的USCI波特率是UA
本文标题:第7章MSP430单片机片内通信模块
链接地址:https://www.777doc.com/doc-2111562 .html