S32K144 interrupt based UART: STATUS_UART_NOISE_ERROR

cancel
Showing results for 
Search instead for 
Did you mean: 

S32K144 interrupt based UART: STATUS_UART_NOISE_ERROR

Jump to solution
1,089 Views
t_62835
Contributor III

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

Labels (1)
1 Solution
406 Views
dianabatrlova
NXP TechSupport
NXP TechSupport

Hello Joao,

I have checked the lpuart_echo example. The example used by default the SIRCDIV2_CLK as the clock source.

You can try to select the fastest clock source for the LPUART and set the higher priority of LPUART interrupt.

What is your Baudrate setting?

 

Also, I would like to mention that the new SDK version is available:

S32 Design Studio for ARM 2018.R1 - Update 9 available 

I hope it helps.  

Best Regards,

Diana

View solution in original post

5 Replies
406 Views
wjandsq
Contributor IV

I have a Rx callback installed with DMA receive and transfer,  use RTM 3.0.0 SDK   lpuart0.   but  in work ,  always  triggers a STATUS_UART_FRAME_ERROR interrupt,  and Stop  DMA receive,   so  the  application receive data length have a errror。

0 Kudos
407 Views
dianabatrlova
NXP TechSupport
NXP TechSupport

Hello Joao,

I have checked the lpuart_echo example. The example used by default the SIRCDIV2_CLK as the clock source.

You can try to select the fastest clock source for the LPUART and set the higher priority of LPUART interrupt.

What is your Baudrate setting?

 

Also, I would like to mention that the new SDK version is available:

S32 Design Studio for ARM 2018.R1 - Update 9 available 

I hope it helps.  

Best Regards,

Diana

View solution in original post

406 Views
t_62835
Contributor III

Yes, changing the clock source improved the BAUD rate gereration accuracy, and I'm not getting errors anymore, thank you.

About that: what would be the advantage of keeping with the slower, default clock source? Lower power consumption?

Also, I took the opportunity to update S32DS, to get the new SDK version, since it's now a RTM version. Next step would be updating project properties, to use the new SDK, right?

Do you have any hints about how to do it?

Best regards,

Joao

0 Kudos
406 Views
dianabatrlova
NXP TechSupport
NXP TechSupport

Hello Joao,

I would like to apologize for the delay.

Yes, with a slower clock source will be lower power consumption.

When you want to use new SDK version in the project the fastest way is to create a new application project and there choose the newest SDK version.

pastedImage_1.png

I hope it helps.

Best Regards,

Diana

0 Kudos
406 Views
t_62835
Contributor III

>>"...the fastest way is to create a new application project and there choose the newest SDK version"

Nice.

Is there any easy way to import project settings, like port settings, paths, and so on?

Best regards,

Joao

0 Kudos