AnsweredAssumed Answered

S32K144 interrupt based UART: STATUS_UART_NOISE_ERROR

Question asked by Joao Roscoe on Mar 20, 2019
Latest reply on May 2, 2019 by Joao Roscoe

I have a interrupt driven UART inplementation (code is running on S32K144EVB-Q100, SDK version is 2.0.0 and I'm using regular lpuart driver, not pal or flexio) in which I need to look at each received byte, as they arrive. Thus, I use:

 

/* Get last transfer status */
result = LPUART_DRV_GetReceiveStatus(INST_UART, NULL);
if (STATUS_SUCCESS == result)
{
/* Execute send non-blocking */
LPUART_DRV_ReceiveData(INST_UART, inst_datum, 1U);
}

 

...where "inst_datum" is a one-byte buffer.

Also, I have a Rx callback installed which retrieves the content o inst_datum and calls the Rx code above for next byte reception.

It works, as far as the bytes arrival rate is not too high. If bytes arrival gets too fast, lpuart triggers a STATUS_UART_NOISE_ERROR interrupt.

 

Both clock and lpuart configurations are default, as suggested suggested by S32DS for ARM 2018.R1 / SDK.

 

 

Any hints?

Best regards,

Joao

Outcomes