This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR4133:MSP430fr4133 UART 波特率配置

Guru**** 2298760 points
Other Parts Discussed in Thread: MSP430FR4133
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/991749/msp430fr4133-msp430fr4133-uart-baudrate-configuration

器件型号:MSP430FR4133

你好。

我在设置 msp430fr4133 UART 波特率时遇到问题。

参考项目(msp430fr413x_eusci_uart_standard_transceiver)在9600、115200波特率下运行良好。

但是、在我设置的1200波特率设置下、它无法正常工作...

这似乎是错误设置或省略的,但我没有经验,所以很难设置。

有关设置值、请参阅以下指南文档。

BRCLK:32768

波特率:1200

UCOS16:1

UCBRx:1.

UCBRFx:11.

UCBRSx:0x25

在基本示例中、我只更改了 UART_init 函数部分、如下所示。
(我不确定如何将 BRCLK 设置为32768)

void initUART_1200()
{
    // Configure USCI_A0 for UART mode
    UCA0CTLW0 |= UCSWRST;                    

    //UCA0CTLW0 |= UCSSEL__SMCLK;               
    UCA0CTLW0 |= 0x0010; 
    // Baud Rate Setting
    // Use Table 21-5
    UCA0BRW = 8;
    UCA0MCTLW |= UCOS16 | UCBRF_11 | 0x2500;   

    UCA0CTLW0 &= ~UCSWRST;                    
    UCA0IE |= UCRXIE;                         
}

下面是主要器件(参考)。 其他器件中是否也有任何需要更改的器件?

int main(void)
{
  WDTCTL = WDTPW | WDTHOLD;                 // Stop Watchdog

  initGPIO();
  initClockTo16MHz();
  //initUART();
  initUART_1200();

#if UART_MODE == SMCLK_9600
    __bis_SR_register(LPM0_bits + GIE);       // Since ACLK is source, enter LPM0, interrupts enabled
#else
    __bis_SR_register(LPM0_bits + GIE);       // Since SMCLK is source, enter LPM0, interrupts enabled
#endif
  __no_operation();                         // For debugger
}

是否有任何将 UART 波特率设置为1200的示例代码? TI

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jinbae、

    有一 个在线计算器 可用于确定值。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的快速回复。

    我通过文档了解设置1200波特率的值、但问题是我不知道我是否正确应用了该值。

    空 inituart_1200()

    //将 USCI_A0配置为 UART 模式
    UCA0CTLW0 |= UCSWRST;

    //UCA0CTLW0 |= UCSSEL_SMCLK;(参考代码115200波特率)
    UCA0CTLW0 |= 0x0010;//-> T.T (我不知道)


    UCA0BRW = 1;//时钟预分频器= 1
    UCA0MCTLW |= UCOS16 | UCBRF_11 | 0x2500;//过采样= 1 |首次调制= 11 |第二次调制= 37

    UCA0CTLW0 &=~UCSWRST;
    UCA0IE |= UCRXIE;

    在上面的代码中、现有参考代码的 UCSSEL_SMCLK 部分应该被设定为32768个时钟(xt1?)、但是我不知道要映射哪个值...  

    在文档中、可以使用的时钟类型是 uclk、特定于器件和 smclk。 似乎没有可用的 aclk。 如何设置32k 时钟?

    我的注意力是否完全不对?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    通常情况下、您会使用 UCSSEL_ACLK (UCOS16=0且 BRW=32768/1200=27)、但根据数据表(SLAS865D)表6-6、您不能将 ACLK (或任何低频时钟)用于 UCSSEL。

    我建议在 BRW=833的情况下使用 UCSSEL_SMCLK (=1MHz)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢! 我将尝试执行该操作