Hi Risto Mustonen,
You said, you called: UART_ClearStatusFlags().
This API is :
status_t UART_ClearStatusFlags(UART_Type *base, uint32_t mask);
What's the mask you are using? Do you |kUART_RxOverrunFlag?
status_t UART_ClearStatusFlags(UART_Type *base, uint32_t mask)
{
uint8_t reg = base->S2;
status_t status;
#if defined(FSL_FEATURE_UART_HAS_LIN_BREAK_DETECT) && FSL_FEATURE_UART_HAS_LIN_BREAK_DETECT
reg &= ~(UART_S2_RXEDGIF_MASK | UART_S2_LBKDIF_MASK);
#else
reg &= ~UART_S2_RXEDGIF_MASK;
#endif
base->S2 = reg | (uint8_t)(mask >> 8);
#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
base->SFIFO = (uint8_t)(mask >> 24);
#endif
if (mask & (kUART_IdleLineFlag | kUART_NoiseErrorFlag | kUART_FramingErrorFlag | kUART_ParityErrorFlag))
{
(void)base->S1;
(void)base->D;
}
if (mask & kUART_RxOverrunFlag)
{
(void)base->S1;
(void)base->D;
#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
base->CFIFO |= UART_CFIFO_RXFLUSH_MASK;
#endif
}
if (mask & UART_GetStatusFlags(base))
{
status = kStatus_UART_FlagCannotClearManually;
}
else
{
status = kStatus_Success;
}
return status;
}
You need to really clear the related errors which you already have.
Wish it helps you!
If you still have questions about it, please kindly let me know.
Have a great day,
Kerry
-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------