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

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

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

3,672件の閲覧回数
li3
Contributor II

你好

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

谢谢。

0 件の賞賛
返信
12 返答(返信)

1,532件の閲覧回数
dujunqiu
Contributor I

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

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

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

0 件の賞賛
返信

3,646件の閲覧回数
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 件の賞賛
返信

3,643件の閲覧回数
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 件の賞賛
返信

3,631件の閲覧回数
Senlent
NXP TechSupport
NXP TechSupport

Hi@li3

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

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

0 件の賞賛
返信

1,528件の閲覧回数
dujunqiu
Contributor I
就是使用串口API读取数据的时候,没办法判断已经读取数据的个数;
比如size定义128,实际只读取了16byte, 但是没办法判断读取了16byte
0 件の賞賛
返信

3,625件の閲覧回数
li3
Contributor II

你好 Senlent,

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

3,621件の閲覧回数
Senlent
NXP TechSupport
NXP TechSupport

Hi@li3

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

0 件の賞賛
返信

3,604件の閲覧回数
li3
Contributor II

你好 Senlent,

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

3,598件の閲覧回数
Senlent
NXP TechSupport
NXP TechSupport

Hi@li3

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

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

 

0 件の賞賛
返信

3,595件の閲覧回数
li3
Contributor II

你好 Senlent,

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

2,920件の閲覧回数
haha_123456
Contributor I
Hi li3, 你的问题得到解决了吗?
0 件の賞賛
返信

2,911件の閲覧回数
li3
Contributor II
没有呢,我正想了个方案,可以交流一下嘿嘿。
微信:Ncommonness
0 件の賞賛
返信