2024-09-03
单片机
00

目录

软件计算波特率地址
MSP430波特率计算概述
低频波特率模式设置 (UCOS16=0)
过采样波特率模式设置 (UCOS16=1)
代码示例
进一步阅读与参考

软件计算波特率地址

对于MSP430系列微控制器,波特率的计算在其用户手册中有详细说明。为了简化这一过程,您可以使用官方提供的软件工具进行计算:点击这里访问工具

MSP430波特率计算概述

MSP430的波特率计算过程在各类文档中都有提及,但实际操作中可能会遇到一些困惑。为了更好地理解这个过程,可以参考官方指南

假设使用1MHz的时钟频率并设置9600波特率,则计算步骤如下:

  1. 计算N值:
    [ N = \frac{fBRCLK}{Baudrate} = \frac{1\text{MHz}}{9600} = 104.1667 ]

  2. 判断是否启用过采样模式:
    当N值大于16时,建议启用过采样模式(设置UCOS16=1)。

低频波特率模式设置 (UCOS16=0)

在低频波特率模式下(UCOS16=0),波特率分频寄存器UCBRx和小数部分调制寄存器UCBRSx的计算如下:

  • UCBRx = 整数部分(N)
  • UCBRSx = 四舍五入((N - 整数部分(N)) * 8)

例如,对于1MHz时钟和9600波特率:

  • [ UCBRx = 104 ]
  • [ UCBRSx = 四舍五入(0.1667 \times 8) = 1 ]

过采样波特率模式设置 (UCOS16=1)

在过采样模式下(UCOS16=1),波特率分频寄存器UCBRx和一级调制寄存器UCBRFx的计算如下:

  • UCBRx = 整数部分(N/16)
  • UCBRFx = 四舍五入(((N/16) - 整数部分(N/16)) * 16)

例如,对于4MHz时钟和9600波特率:

  • [ UCBRx = 26 ]
  • [ UCBRFx = 四舍五入(0.0417 \times 16) = 1 ]

代码示例

为了更好地理解上述公式的应用,以下是一个简单的初始化MSP430 UART串口的代码示例:

c
#define CPU_F ( (double) 8000000) #define delay_us( x ) __delay_cycles( (long) (CPU_F * (double) x / 1000000.0) ) #define delay_ms( x ) __delay_cycles( (long) (CPU_F * (double) x / 1000.0) ) #define baud 9600 /* 设置波特率 */ #define baud_setting (uint) ( (ulong) CPU_F / ( (ulong) baud) ) /* 波特率计算公式 */ #define baud_h (uchar) (baud_setting >> 8) /* 提取高位 */ #define baud_l (uchar) (baud_setting) /* 低位 */ void initUSART(void) { P1SEL = BIT1 + BIT2; // P1.1 = RXD, P1.2=TXD P1SEL2 = BIT1 + BIT2; // P1.1 = RXD, P1.2=TXD UCA0CTL1 |= UCSSEL_2; // SMCLK UCA0BR0 = baud_l; // 8MHz 9600 UCA0BR1 = baud_h; // 8MHz 9600 UCA0MCTL = UCBRS1; // 调制UCBRSx UCA0CTL1 &= ~UCSWRST; // 初始化USCI状态机 IE2 |= UCA0RXIE; // 启用USCI_A0 RX中断 }

进一步阅读与参考

通过以上方法,您可以轻松计算并设置MSP430的波特率,使其与目标通信设备准确匹配。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!