Hi Ashok Ra,
Please give the modified USART_SetBaudRate() try, it works on my site.
Have a great day,
TIC
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
status_t USART_SetBaudRate(USART_Type *base, uint32_t baudrate_Bps, uint32_t srcClock_Hz)
{
assert(!((NULL == base) || (0 == baudrate_Bps) || (0 == srcClock_Hz)));
#if defined(FSL_FEATURE_USART_HAS_OSR_REGISTER) && (FSL_FEATURE_USART_HAS_OSR_REGISTER)
uint32_t best_diff = (uint32_t)-1, best_osrval = 0xf, best_brgval = (uint32_t)-1;
uint32_t diff = 0U, brgval = 0U, osrval = 0U, baudrate = 0U;
if (base->CFG & USART_CFG_SYNCEN_MASK)
{
brgval = srcClock_Hz / baudrate_Bps;
base->BRG = brgval - 1;
}
else
{
for (osrval = best_osrval; osrval >= 8; osrval--)
{
brgval = (srcClock_Hz / ((osrval + 1) * baudrate_Bps)) - 1;
if (brgval > 0xFFFF)
{
continue;
}
baudrate = srcClock_Hz / ((osrval + 1) * (brgval + 1));
diff = baudrate_Bps < baudrate ? baudrate - baudrate_Bps : baudrate_Bps - baudrate;
if (diff < best_diff)
{
best_diff = diff;
best_osrval = osrval;
best_brgval = brgval;
}
}
if (best_brgval > 0xFFFF)
{
return kStatus_USART_BaudrateNotSupport;
}
base->OSR = best_osrval;
base->BRG = best_brgval;
}
#else
uint32_t brgval = 0U;
if (base->CFG & USART_CFG_SYNCEN_MASK)
{
brgval = srcClock_Hz / baudrate_Bps;
base->BRG = brgval - 1;
}
else
{
brgval = srcClock_Hz / (baudrate_Bps * 16);
if (brgval == 0) {
brgval = 1;
}
SYSCON->UARTCLKDIV = brgval;
uint32_t uart_fra_multiplier;
RESET_PeripheralReset(kUARTFRG_RST_N_SHIFT_RSTn);
SYSCON->UARTFRGDIV = 0xFF;
uart_fra_multiplier = ((srcClock_Hz / brgval) * 256)/(baudrate_Bps * 16);
SYSCON->UARTFRGMULT=uart_fra_multiplier;
}
#endif
return kStatus_Success;
}