新闻中心

EEPW首页>嵌入式系统>设计应用> 【UART】USCI:UART模式

【UART】USCI:UART模式

作者: 时间:2016-11-25 来源:网络 收藏


msp430f541x、msp430f543x多达4个通用串行通信接口(USCI)模块,支持多种串行通信模式,不同的 USCI 模块支持不同的模式。

本文引用地址: //m.amcfsurvey.com/article/201611/321230.htm

USCI_Ax模块支持:

  • UART模式;
  • IrDA通信的脉冲整形;
  • LIN通信的自动波特率检测;
  • SPI模式;

USCI_Bx模块支持:

  • IIC模式;
  • SPI模式;

UART模式:


在异步模式下,USCI_Ax模块通过两个外部引脚UCAxRXD和UCAxTXD将芯片连接到外部系统。当UCSYNC

位清零时,选择UART模式。




UART模块特征包括:

  • 带奇校验、偶校验或非奇偶校验的7或8位数据;
  • 独立的发送和接收移位寄存器;
  • 独立的发送和接受缓冲寄存器;
  • 发送和接收的独立中断能力;
  • 最低位优先或最高位优先的数据发送和接收;
  • 多处理器系统的内置空闲线路和地址位通信协议;
  • 用于自动从LPMx模式唤醒的接收机起始边沿检测;
  • 波特率可编程控制,支持小数波特率调制;
  • 用于错误检测和抑制的状态标志;
  • 用于地址检测的状态标志;

一、USCI初始化和复位

PUC或置位UCSWRST,可以使USCI复位。PUC后,UCSWRST位自动置位,这使 USCI保持在复位状态。UCSWRST位置位,将使UCRXIE,UCTXIE,UCRXIFG,UCRXERR,UCBRK,UCPE,UCOE,UCFE,UCSTOE 和 UCBTOE 位复位,UCTXIFG 位置位。清除 UCSWRST 将释放 USCI,使其进入操作状态。



推荐使用以下过程,进行初始化或重新配置:

1.置位UCSWRST (BIS.B#UCSWRST,&UCAxCTL1);

2.2设置UCSWRST=1,初始化所有的USCI寄存器(包括UCAxCTL1);

3.配置端口;

4.软件清除UCSWRST(BIC.B#UCSWRST,&UCAxCTL1);

5.通过UCRXIE和/或UCTXIE使能中断(可选);

例:串口助手发什么就返回什么.

#include "msp430x54x.h"

// ACLK = REFO = 32768Hz, MCLK = SMCLK = default DCO/2 = 1048576Hz

// P3.4,5——USCI_A0 TXD/RXD;P9.4,5——USCI_A2 TXD/RXD;P10.4,5——USCI_A3 TXD/RXD;

void main(void)
{
WDTCTL = WDTPW + WDTHOLD;// Stop WDT

P5SEL = 0xc0;// P5.6,7 = USCI_A1 TXD/RXD
UCA1CTL1 |= UCSWRST;// **Put state machine in reset**
UCA1CTL1 |= UCSSEL_2;// SMCLK
UCA1BR0 = 9;// 1MHz 115200 (see Users Guide)
UCA1BR1 = 0;// 1MHz 115200
UCA1MCTL |= UCBRS_1 + UCBRF_0;// Modulation UCBRSx=1, UCBRFx=0
UCA1CTL1 &= ~UCSWRST;// **Initialize USCI state machine**
UCA1IE |= UCRXIE;// Enable USCI_A1 RX interrupt

__bis_SR_register(LPM0_bits + GIE);// Enter LPM0, interrupts enabled
}

// Echo back RXed character, confirm TX buffer is ready first,发送数据之前确定发送缓存准备好

#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
switch(__even_in_range(UCA1IV,4))
{
case 0:break;// Vector 0 - no interrupt
case 2:// Vector 2 - RXIFG
while (!(UCA1IFG&UCTXIFG));// USCI_A1 TX buffer ready?
UCA1TXBUF = UCA1RXBUF;// TX -> RXed character
break;
case 4:break;// Vector 4 - TXIFG
default: break;
}
}

//UCTXIFG=0x02,UCA1IFG&UCTXIFG,当UCA1IFG的UCTXIFG位为1时,说明UCA1TXBUF为空,跳出while循环循环;当UCTXIFG位为0时UCA1TXBUF不为空,停在循环。


二、USCI中断

USCI只有一个发送和接收共用的中断向量,USCI_Ax和USC_Bx不共用中断向量。

2.1 USCI 发送中断操作

发射机置位 UCTXIFG 中断标志,这表明 UCAxTXBUF 已经准备好接收另一个字符(即UCAxTXBUF 为空)如果UCTXIE 和GIE 也置位的话,将产生中断请求。如果将字符写入,UCAxTXBUF、UCTXIFG将自动复位而无需软件复位。PUC之后或UCSWRST = 1时,UCTXIFG 置位、UCTXIE 复位。

2.2 USCI 接收中断操作

每接收到1个字符并将其载入到 UCAxRXBUF 时,UCRXIFG 中断标志置位,如果 UCTXIE 和 GIE 也置位的话,将产生中断请求。UCRXIFG 和UCRXIE 可以通过系统复位PUC信号或 UCSWRST = 1复位。当读取UCAxRXBUF时,UCRXIFG 自动复位。

2.3UCAxIV,中断向量发生器

USCI 中断标志具有一定的优先次序,组合使用一个中断向量。中断向量寄存器 UCAxIV 用于确定产生中断的标志。使能的具有最高优先级的中断在 UCAxIV寄存器内产生一个数值,该数值可以加到程序计数器上,从而自动跳转到相应的软件子程序处。禁止中断不会影响 UCAxIV的值。

对UCAxIV寄存器的任何访问,读或写,将会自动复位挂起的优先级最高的中断标志。如果另一个中断标志置位,在响应完第一个中断后,立即产生另一个中断。

三、寄存器

3.1




此寄存器主要是定义数据通信的字符格式,UART 的字符格式包括一个起始位,7 或 8 位数据位,一个奇/偶/非奇偶校验位,地址位(地址位模式),以及1或2个停止位,UCMSB位控制传送方向,选择低位或高位优先,UART 通讯的典型选择是低位优先。

PUC之后全为0,即 字符长度8、1个停止位、无奇偶校验、低位优先,UART模式。

UCMODEx Bits2_1位:

两个芯片进行异步通信时,对协议来说,不需要多处理器格式。当3 个或更多个芯片通信时,USCI 支
持线路空闲和地址位多处理器通信格式。


上一页 1 2 下一页

关键词:UARTUSCIUART模

评论


技术专区

关闭