Dear Champs,
As MSP432 datasheet said, if VORE is 1.2V, we can drive UART baud rate up to 5Mbps when BRCLK=12MHz.
After testing, I met higher error rate when setting 4Mbps baud rate.
Do you have any suggestion or this?
I use “msp432p401x_euscia0_uart_01” project to test it. Below is setting:
int main(void)
{
WDT_A->CTL = WDT_A_CTL_PW | // Stop watchdog timer
WDT_A_CTL_HOLD;
CS->KEY = CS_KEY_VAL; // Unlock CS module for register access
CS->CTL0 = 0; // Reset tuning parameters
CS->CTL0 = CS_CTL0_DCORSEL_3; // Set DCO to 12MHz (nominal, center of 8-16MHz range)
CS->CTL1 = CS_CTL1_SELA_2 | // Select ACLK = REFO
CS_CTL1_SELS_3 | // SMCLK = DCO
CS_CTL1_SELM_3; // MCLK = DCO
CS->KEY = 0; // Lock CS module from unintended accesses
// Configure UART pins
P1->SEL0 |= BIT2 | BIT3; // set 2-UART pin as secondary function
// Configure UART
EUSCI_A0->CTLW0 |= EUSCI_A_CTLW0_SWRST; // Put eUSCI in reset
EUSCI_A0->CTLW0 = EUSCI_A_CTLW0_SWRST | // Remain eUSCI in reset
EUSCI_B_CTLW0_SSEL__SMCLK; // Configure eUSCI clock source for SMCLK
// Baud Rate calculation
// 12000000/4000000= 3
// Fractional portion = 0
// User's Guide Table 21-4: UCBRSx = 0
// UCBRFx = 0
EUSCI_A0->BRW = 3; // 48000000/4000000, 4Mbps baud rate
EUSCI_A0->MCTLW = (0x0 << EUSCI_A_MCTLW_BRS_OFS)|(0 << EUSCI_A_MCTLW_BRF_OFS) |
EUSCI_A_MCTLW_OS16_OFS;
EUSCI_A0->CTLW0 &= ~EUSCI_A_CTLW0_SWRST; // Initialize eUSCI
EUSCI_A0->IFG &= ~EUSCI_A_IFG_RXIFG; // Clear eUSCI RX interrupt flag
EUSCI_A0->IE |= EUSCI_A_IE_RXIE; // Enable USCI_A0 RX interrupt
// Enable sleep on exit from ISR
SCB->SCR |= SCB_SCR_SLEEPONEXIT_Msk;
// Enable global interrupt
__enable_irq();
// Enable eUSCIA0 interrupt in NVIC module
NVIC->ISER[0] = 1 << ((EUSCIA0_IRQn) & 31);
// Enter LPM0
__sleep();
__no_operation(); // For debugger
}
If you have any suggestion, please feel free to let me know.
Thanks a lot.