How does S32K312 UART receive variable length data using FIFO and DMA.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How does S32K312 UART receive variable length data using FIFO and DMA.

3,668 Views
li3
Contributor II

你好

请问S32K312 UART如何使用FIFO和DMA来接收可变长度数据?请在代码中给出示例和注释。

谢谢。

0 Kudos
Reply
12 Replies

1,528 Views
dujunqiu
Contributor I

我目前使用  Lpuart_Uart_Ip_GetReceiveStatus() 阻塞判断;

或者  Lpuart_Uart_Ip_SyncReceive() 手动计算从末尾起,第一个不等于 0x00的数据;

感觉两个方法都不是很靠谱

0 Kudos
Reply

3,642 Views
Senlent
NXP TechSupport
NXP TechSupport

Hi@li3

没有完全符合你需求的demo供你参考,这里是一些实现UART+DMA的讨论和例程。

https://community.nxp.com/t5/S32K/S32K3-LPUART-using-DMA-in-RTD-3-0-0/td-p/1737356

 

0 Kudos
Reply

3,639 Views
li3
Contributor II

Hello, Senlent.

May I ask how the S32K312 UART only uses FIFO to receive data of indefinite length? Can you give an example?

thank you.

0 Kudos
Reply

3,627 Views
Senlent
NXP TechSupport
NXP TechSupport

Hi@li3

你能和我解释下什么叫接收不固定长度的数据?或者你的意图是什么?

你在使用Lpuart_Uart_Ip_AsyncReceive的时候,size不是可以自己定吗?

0 Kudos
Reply

1,524 Views
dujunqiu
Contributor I
就是使用串口API读取数据的时候,没办法判断已经读取数据的个数;
比如size定义128,实际只读取了16byte, 但是没办法判断读取了16byte
0 Kudos
Reply

3,621 Views
li3
Contributor II

你好 Senlent,

例如:Lpuart_Uart_Ip_AsyncReceive函数大小等于5,可以收到5个数据。如果需要接收3个、4个、6个或者更多数据怎么办。
0 Kudos
Reply

3,617 Views
Senlent
NXP TechSupport
NXP TechSupport

Hi@li3

那不是可以直接改Lpuart_Uart_Ip_AsyncReceive的接收size吗?

0 Kudos
Reply

3,600 Views
li3
Contributor II

你好 Senlent,

如果size等于5,那么收到6个数据就会丢失一个。
如果每次改size需要改代码烧录,不定长接收是为了可以接收到所有长度数据。
我想分别测试用FIFO和DMA方式接收不定长数据。
0 Kudos
Reply

3,594 Views
Senlent
NXP TechSupport
NXP TechSupport

Hi@li3

"如果size等于5,那么收到6个数据就会丢失一个"

为什么会得出这样的结论?

 

0 Kudos
Reply

3,591 Views
li3
Contributor II

你好 Senlent,

采用中断接收size等于5,我使用串口工具发送6个数据,用Debug方式查看接收buffer,只能看到5个数据。
另外我是想问分别使用FIFO和DMA怎么接收不定长的数据,不使用size定长。
0 Kudos
Reply

2,916 Views
haha_123456
Contributor I
Hi li3, 你的问题得到解决了吗?
0 Kudos
Reply

2,907 Views
li3
Contributor II
没有呢,我正想了个方案,可以交流一下嘿嘿。
微信:Ncommonness
0 Kudos
Reply