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.

MDP430FR5739 UART 波特率 115200 问题

Other Parts Discussed in Thread: MSP430FR5739

Dear All :

   先用MSP430FR5739的demo板做Uart 通信,用DCO分频到1M做SMCLK,uart 的时钟源为SMCLK,波特率为115200 ,发现通信是乱码; 

串口配置代码如下:

WDTCTL = WDTPW + WDTHOLD; // stop watchdog

// XT1 Setup

PJSEL0 |= BIT4 + BIT5;

CSCTL0_H = 0xA5;
CSCTL1 |= DCOFSEL0 + DCOFSEL1; // Set max. DCO setting DCO = 8M HZ
CSCTL2 = SELA_0 + SELS_3 + SELM_3; // set ACLK = XT1; MCLK = DCO
CSCTL3 = DIVA_0 + DIVS_3 + DIVM_3; // set all dividers
CSCTL4 |= XT1DRIVE_0;
CSCTL4 &= ~XT1OFF;

do
{
CSCTL5 &= ~XT1OFFG;
// Clear XT1 fault flag
SFRIFG1 &= ~OFIFG;
}while (SFRIFG1&OFIFG); // Test oscillator fault flag

// Configure UART pins
P2SEL1 |= BIT0 + BIT1;
P2SEL0 &= ~(BIT0 + BIT1);
// Configure UART 0
UCA0CTL1 |= UCSWRST;

UCA0CTL1 |= UCSSEL_2; // Set SMCLK = 1MHz as UCBRCLK
UCA0BR0 = 8; // 115200baud
UCA0BR1 = 0;
UCA0MCTLW |= 0xD600; // 1000000/115200 - INT(100000/115200)=0.68
// UCBRSx value = 0xD6(See UG)
UCA0CTL1 &= ~UCSWRST; // release from reset

  • 怎么没人回复啦?

  • 你好!

    1MHz的UART时钟,不建议使用115200的波特率,因为时钟频率不够高,故对115200分出来的码率精度就不够高,换言之就是在1MHZ下使用115200的波特率误码率较高,1MHZ下建议用19200或者38400.如果一定要115200,建议提高uart的时钟频率,4MHZ以上是比较推荐的值。

    详细的信息请参见MSP430FR57xx family user's guide 第18章 436页,Table 18-5. Recommended Settings for Typical Crystals and Baudrates。