S32K144 interrupt based UART: STATUS_UART_NOISE_ERROR

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

S32K144 interrupt based UART: STATUS_UART_NOISE_ERROR

1,605件の閲覧回数
Joao_Roscoe
Contributor III

I have a interrupt driven UART inplementation (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.

Any hints?

Best regards,

Joao

タグ(1)
2 返答(返信)

1,441件の閲覧回数
Joao_Roscoe
Contributor III

Sorry for posting off topic, and thank you for your time, your hints are welcome, anyway.

Best regards,

Joao

1,440件の閲覧回数
constantinrazva
NXP Employee
NXP Employee

Hello t_62835@cpqd.com.br‌,

On this community we handle questions regarding MATLAB/Simulink and our toolboxes - this question would be more appropriate for S32K community.

My thoughts - check if the clock that you are using is suitable for your baud rate. Check if the clock is stable for said baudrate. Check what OSR (over-sampling ratio) you are using. You can get more details in the Data sampling technique and Baud rate generation chapters (from LPUART Functional Description). You'll get more help on the S32K community (previously linked).

P.S.: it's always recommended that you are using the latest SDK version.

Hope this helps,

Razvan.