msp430f5419/38学习笔记之USCI:UART模式

发布者:FreeSpirit123最新更新时间:2018-10-15 来源: eefocus关键字:msp430f5419  USCI  UART模式 手机看文章 扫描二维码
随时随地手机看文章

msp430f5419/38学习笔记之USCI:UART模式

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

  USCI_Ax模块支持:

  • UART模式;

  • IrDA通信的脉冲整形;

  • LIN通信的自动波特率检测;

  • SPI模式;

  USCI_Bx模块支持:

  • IIC模式;

  • SPI模式;

UART模式:

msp430f5419/38学习笔记之USCI:UART模式
    在异步模式下,USCI_Ax模块通过两个外部引脚UCAxRXD和UCAxTXD将芯片连接到外部系统。当UCSYNC

位清零时,选择UART模式。

msp430f5419/38学习笔记之USCI:UART模式

msp430f5419/38学习笔记之USCI: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,使其进入操作状态。
msp430f5419/38学习笔记之USCI:UART模式
msp430f5419/38学习笔记之USCI:UART模式

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

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 User's 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不为空,停在循环。 

msp430f5419/38学习笔记之USCI:UART模式
msp430f5419/38学习笔记之USCI:UART模式

二、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 自动复位。 

msp430f5419/38学习笔记之USCI:UART模式

msp430f5419/38学习笔记之USCI:UART模式

  2.3  UCAxIV,中断向量发生器

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

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

三、寄存器

    3.1

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

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

 msp430f5419/38学习笔记之USCI:UART模式

   UCMODEx Bits2_1位:

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

    3.11 线路空闲多处理器模式(待续)

    3.12 地址位多处理器模式(待续)

    3.13 自动波特率检测(待续)

  3.2

msp430f5419/38学习笔记之USCI:UART模式
msp430f5419/38学习笔记之USCI:UART模式
msp430f5419/38学习笔记之USCI:UART模式

    此寄存器主要是配置USCI,PUC后时钟选择外部时钟,所以初始化时除了置位 UCSWRST 位外还需配置时钟源。其它的默认就行。

四、低功耗 UART模式下使用 USCI模块

    USCI 模块提供低功耗模式下的自动时钟激活功能。当 USCI 时钟源由于设备处于低功耗模式不活动时,无论时钟源的控制位如何设置,USCI 模块会在需要时激活时钟源,时钟将保持活动状态直到 USCI模块返回空闲状态。USCI模块返回到闲状态后,将反转时钟源控制位的设置。

eg.
void InitUARTA1(void)
{
  UCA1CTL1 |= UCSWRST;// PUC后,UCSWRST位自动置位,这使 USCI保持在复位状态
  UCA1CTL0 = 0x00;                         
  UCA1CTL1 |= UCSSEL_2;                     // SMCLK
  UCA1BR0 = 216;                            // 24MHz 115200
  UCA1BR1 = 0;                              // 24MHz 115200
  UCA1MCTL = UCBRS_2 + UCBRF_0;             // 0x04+0x00
  P5SEL = 0xC0;                             // P5.6/7 = USCI_A0 TXD/RXD
  UCA1CTL1 &= ~UCSWRST;    // **Initialize USCI state machine**,。清除UCSWRST 将释放 USCI,         UCA1IE |= UCRXIE;                          // Enable USCI_A1 RX interrupt
}
#pragma vector = USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
  switch (__even_in_range(UCA1IV,4))
  {
  case 0:break;                             
  case 2:
   g_uartBufA[g_bufALen] = UCA1RXBUF;
   if (g_uartBufA[g_bufALen]==0xFF)
   {
    }
   if (g_uartBufA[g_bufALen++]==0xFD) //判断PC机发送的命令帧是否已完
   {
     g_bufALen=0;
     g_uartReceive = 1;// 置位
   }
  break;
  case 4:break;                             // Vector 4 - TXIFG
  default: break;
  }
}
void USciSend( )
{
  unsigned char i;
  for (i = 0; i < g_bufALen; i++)
  {
    while (!(UCA1IFG & UCTXIFG));
    UCA1TXBUF = g_uartBufA[uartBuf1];
  }
}// UCA1MCTL 是UCA1的调制控制寄存器

msp430f5419/38学习笔记之USCI:UART模式
msp430f5419/38学习笔记之USCI:UART模式
msp430f5419/38学习笔记之USCI:UART模式

  五、波特率的产生

    USCI 波特率发生器可以从非标准源频率中产生标准的波特率,可以通过UCOS16位选择系统提供的两种操作模式。波特率可以通过使用BRCLK 产生,根据 UCSSELx设置,BRCLK 可以作为外部时钟 UCAxCLK或内部时钟ACLK 或SMCLK 的时钟源。 

  5.1 低频波特率

     当UCOS16=0 时选择低频模式。该模式允许从低频时钟源产生波特率(例如从32768Hz 晶振产生9600波特)。通过使用较低的输入频率,可以降低模块的功耗。在高频和高分频设置下使用这种模式,将会使多数表决在逐渐缩小的窗口中执行,因此会降低多数表决法的优势(下面的例子都是这种模式)。

    在低频模式下,波特率发生器使用1个预分频器和1个调制器产生位时钟时序。这种组合下,产生波特率时支持小数分频;在这种模式下,最大的 USCI波特率是UART 源时钟频率 BRCLK的1/3 。

    每一位的时序如图所示,对于接收的每一位,为了确定该位的值,采用多数表决法。这些采样点发生在N/2-1/2,N/2 和N/2 + 1/2 个BRCLK 周期处,这里N 是每个BITCLK 时钟中 BRCLKs 的数值。 

msp430f5419/38学习笔记之USCI:UART模式

    调制是建立在如表15-2 所示的 UCBRSx 设置基础上的。表中1个1 表示m= 1,相应的BITCLK 周期是一个BRCLK 周期,它比m=0 时的BITCLK 周期长。调制在8位后进行,但以新的开始位重新启动。

  5.2 过采样波特率的产生

    当UCOS16=1时,选择过采样模式。该模式支持在较高输入时钟频率下对UART 位流采样。在多数表决方法的结果总是一个位时钟周期的1/16位置。当使能IrDA 编码器和解码器时,这种模式也支持带有3/16位时间的IrDA脉冲。 

    该模式使用一个预分频器和调制器产生BITCLK16 时钟,该时钟比 BITCLK 快16倍。这种组合方式支持波特率产生时 BITCLK16 和BITCLK 的小数分频。在这种情况下,最大的USCI 波特率是 UART源时钟频率BRCLK的1/16。当UCBRx 设置为0或1时,将忽略第一级分频器和调制器,BRCLK等于 BITCLK16—在这种情况下BITCLK16没有调制,因此将忽略 UCBRFx位。 

    BITCLK16 调制是建立在如表15-3 所示的 UCBRFx 设置基础上的。表中1个1 表示相应的 BITCLK16 周期一个BRCLK周期,它比m=0 时的BITCLK16周期长。以每一个新位时序开始调制;BITCLK调制是建立在如前所述的 UCBRSx设置(见表15-2)基础上的。

  5.3 设置波特率

    430的波特率设置用三个寄存器实现: 
    UxBR0:波特率发生器分频系数低8位;
    UxBR1:波特率发生器分频系数高8位;
    UxMCTL:波特率发生器分频系数的小数部分实现; 
    对于给定的BRCLK时钟源,所使用的波特率将决定分频因子 N: N = fBRCLK/波特率。分频因子N 通常不是一个整数值,因此至少需要一个分频器和一个调制器来尽可能接近分频因子,如果N 值等于或大于16,可以通过置位UCOS16 选择过采样波特率产生模式。 

    在低频模式下,分频因子的整数部分通过预分频器实现 UCBRx = INT(N);
    小数部分由带有下面nominal公式的调制器实现: UCBRSx = round((N–INT(N))× 8),(round表示舍入)
UCBRSx计数值增1或减1,对任何给定的位给一个较小的最大比特误差。为了检测是不是这种情况,对于每个UCBRSx设置的每一位都必须经过详细的误差计算;

   在过采样模式下,预分频器设置为:UCBRx = INT(N/16),第一阶调制器设置为:UCBRFx = round(((N/16)– INT(N/16) ) × 16 ),当需要更高精度时,UCBRSx调制器可以实现从 0到7 的值。对于给定位,为了找到最低的最大误码率设置,对于带有初始UCBRFx设置和增1 或减 1的 UCBRFx设置的 UCBRSx从0到7的所有设置,都必须经过详细的误差计算。 
msp430f5419/38学习笔记之USCI:UART模式

下面详解上例中的四条语句:

  UCA1CTL1 |= UCSSEL_2;                     // SMCLK
  UCA1BR0 = 216;                            // 24MHz 115200
  UCA1BR1 = 0;                              // 24MHz 115200
  UCA1MCTL = UCBRS_2 + UCBRF_0;             // 0x04+0x00

    这里 SMCLK 已在时钟部分初始化,其时钟源为: Fdcoclkdiv = (760+1)*32768 = 24.936448 MHZ;
分频系数 N = 24936448/115200 = 216.462222,UCA1BR0是分频系统整数部分的低8位、UCA1BR1是高8位,所以..
UCA1MCTL 是波特率发生器分频系数的小数部分,由于是低频模式(UCOS16=0), UCA1MCTL 寄存器中的 UCBRFx 位忽略,而 UCBRSx = round((N–INT(N))× 8) 即 UCBRSx = 0.46×8 四舍五入取为 4。
   UCBRSx 的值也可以这么解释: 0.46*8=3.68 四舍五入为 4个1,把这4个1分成8位均匀排开 01010101 (LSB在前),对照表15-2 查得 UCBRSx=0x04。


关键字:msp430f5419  USCI  UART模式 引用地址:msp430f5419/38学习笔记之USCI:UART模式

上一篇:msp430f5419/38学习笔记之时钟系统
下一篇:MSP430F5529液晶SPI通信协议

推荐阅读最新更新时间:2024-03-16 16:16

景吾智能再获千万级A轮融资,商用服务机器人前八月融资238亿!
近日,商用服务机器人公司「景吾智能」再获千万级A轮融资,由深创投索斯福基金(SOSV-SCGC China Fund)投资,至澄资本继续担任本轮融资独家财务顾问。本轮资金将主要用于产品研发,以及市场拓展。 据了解,景吾智能成立于2019年,主要聚焦酒店机器人领域,为客户提供降本增收的机器人产品及系统解决方案,目前已形成酒店配送机器人和清洁机器人两条和新产品线。 据《2021年中国酒店业发展报告》显示,2020年,国内大陆地区共减少5.9万家15间房以上的酒店类住宿设施,酒店客房减少229.4万间,其中经济型酒店客房减少数量最多,达207.2万间,受疫情影响昔日旅游业的繁荣景象早已不复存在,如何降本增效成为了酒店行业的当下的重要议
[机器人]
功率因数校正控制器UC3854的建模与应用
摘要:介绍功率因数校正控制器UC3854的组成原理与特性,根据宏模型概念,构建UC3854主要功能模块的宏模型,并以该宏模型为核心对功率因数校正电路在PSPICE环境下进行仿真。 关键词:功率因数宏模型仿真 The Construction of the Macro Model for Power Factor Controller UC3854 Abstract:The paper introduces the internal structure, main features of the power factor controller UC3854, constructs the macro model for the
[电源管理]
功率因数校正控制器UC<font color='red'>38</font>54的建模与应用
MAX5389 双路、256抽头、易失型、低电压线性变化数
MAX5389是双路、256抽头、易失型、低电压线性变化 数字电位器 ,提供10kΩ、50kΩ以及100kΩ三种端到端电阻。器件采用+2.6V至+5.5V单电源供电,端到端电阻温度系数低至35ppm/°C。MAX5389具有上/下调节接口。   MAX5389的小尺寸封装、低工作电压、低电源电流以及汽车级工作温度范围,使其成为便携式消费类产品、电池备份工业设备以及汽车电子产品的理想选择。   MAX5389工作在-40°C至+125°C汽车级温度范围,采用14引脚TSSOP封装。   关键特性   双路、256抽头线性电位器   +2.6V至+5.5V单电源供电   低静态电源电流( 1µA)   10kΩ、50kΩ
[电源管理]
MAX5<font color='red'>38</font>9 双路、256抽头、易失型、低电压线性变化数
MSP430应用技巧7:MSP430F5438A时钟的设置
使用MSP430F5438A,XT2外接25MHz晶振,编写时钟驱动程序,不能正常工作,现将此代码粘贴出来。 这段代码将MCLK、SMCLK和ACLK都设置为XT2,已达到性能的最优化。其关键代码均以做了解释。但是,此程序不能正常工作,仔细查看TI官方手册,问题出现在CPU内部VCore没有正确设置。 MSP430的5xx系列和6xx系列,芯片内部集成线性稳压器,可以将外部电压降压为更低的电压以节省功耗,但是VCore降低会使CPU速度减慢,所以为了达到CPU的运行速度需与VCore电压相匹配。其匹配表如下图所示。 根据这张表,就可知道如果希望CPU在25MHz运行,需将PMMCOREV标志位设置为3。更改后的代码如
[单片机]
MSP430应用技巧7:MSP430F54<font color='red'>38</font>A时钟的设置
基于UC3842的电机控制用多输出开关电源设计
  本文介绍了一种基于专用芯片UC3842的开关稳压电源。在电机调速控制器中,该电源提供功率开关元件基极(栅极)驱动电压和控制电路工作电压。开关电源性能的好坏直接影响到电机调速控制器的工作可靠性。该电源是为30 kW开关磁阻电机控制器设计的,也适用于采用功率MOSFET或IGBT作为开关元件的中小功率感应电机调速控制器。    1主回路方案   1.1电源电路   此电源是为30 kW开关磁阻电机控制器设计的,此电机功率变换器的主电路为不对称半桥电路[1]。采用反激变换器结构[2],具有结构简单、损耗小的优点,但输出电压纹波较大,通常用在150 W以下的电源中。具体电路如图1所示。   此电源为单芯片集成稳压电源,P
[电源管理]
瑞声科技/弘信电子供应商英诺激光上市:股价涨380%
7月6日,英诺激光正式登陆创业板,本次公开发行的股票数量为3800万股,发行价格9.46元/股,对应的市盈率和市净率分别为26.48倍和1.59倍。上市首日,其股价最高达48.58元/股,截至发稿,报价45.90元/股,涨幅达385.20%。 据悉,英诺激光是国内微加工领域的激光器生产商和解决方案提供商,其激光器产品包括DPSS调Q纳秒激光器(纳秒固体激光器)、超短脉冲激光器(超快激光器,包括皮秒、飞秒级)和 MOPA 纳秒/亚纳秒激光器(MOPA光纤激光器),覆盖从红外到深紫外的不同波段,从纳秒到飞秒的多种脉宽。产品应用于消费电子、新能源、3D 打印、芯片制造等领域,客户主要为激光智能装备集成商、工业制造商和科研机构等。 在
[手机便携]
瑞声科技/弘信电子供应商英诺激光上市:股价涨<font color='red'>38</font>0%
CS3818双声道立体声D类音频功率放大器替换TPA3110
华润微CS3818pinTPA3140/TPA3144/TPA3110/CS8618/AD5200x/AD52058完美兼容,双声道立体声D类音频功率放大器 1、概述 :CS3818是一款15W(每声道)立体声高效D 类音频功率放大电路。先进的EMI抑制技术使得在输出端口采用廉价的铁氧体磁珠滤波器就可以满足EMC 要求。内部包括一个功率可调限制器和直流检测电路来对扬声器进行保护。功率可调限制器允许用户设定一个比电源电压低的虚拟电压来限制流过扬声器的总电流,直流检测电路在输入电容损坏或者输入短路时关断输出级。 TPA3140D2/TPA3144D2 CS3818可以驱动低至4Ω 负载的立体声扬声器,具有高达90%的效率,使得
[嵌入式]
CS<font color='red'>38</font>18双声道立体声D类音频功率放大器替换TPA3110
基于峰值电流控制芯片UC3846的斜坡补偿电路设计
主电路拓扑采用双管正激电路    UC3846 的斜坡补偿选择电路根据峰值电流控制的电路图可以看到,加入斜坡补偿有两种方法,   一种是将斜坡补偿信号加到电流检测信号中,如图17 所示;另一种是将斜坡补偿信号从误差电   压信号中减去,如图18 所示。     图 18 将斜坡补偿加到电压检测信号上   前一种实现方法简单,但由于斜坡补偿信号的加入,有可能在实现电流限制功能时产生误差。   第二种方法实现时必须满足两个条件:①在开关频率附近,电压放大器的增益必须为一个固定   的常数R1/R2;②当射极斜坡补偿时,电流放大器和电压放大器都必须考虑进去。改进第一种   方法得到图19 所示电路,射极跟随器的接入减
[电源管理]
基于峰值电流控制芯片UC<font color='red'>38</font>46的斜坡补偿电路设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved