打印
[STM32F1]

串口DMA接收的数据总是比发送的慢一拍

[复制链接]
1162|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jlyuan|  楼主 | 2023-8-2 22:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
把USART3配置成DMA接收,空闲中断,接收不定长的数据,发现接收到的数据总是比发送过来的数据慢一拍,例如:
发送 : 0x00  0x01  0x02 0x03   接收到的数据:0x00  0x00  0x00 0x00
发送 : 0x04  0x05  0x06 0x07   接收到的数据:0x00  0x01  0x02 0x03
发送 : 0x08  0x09  0x0A 0x0B   接收到的数据:0x04  0x05  0x06 0x07

使用特权

评论回复
沙发
香水城| | 2023-8-4 07:59 | 只看该作者
本帖最后由 香水城 于 2023-8-22 07:27 编辑

这个要结合代码看才知道怎么回事。

有点像是FIFO方面的原因。

使用特权

评论回复
板凳
phoenixwhite| | 2023-8-7 07:43 | 只看该作者
DMA 接收需要使用一个缓冲区来存储接收到的数据。如果缓冲区的大小不够大,当数据发送速度快于 DMA 转移数据的速度时,就会导致数据的丢失或覆盖。

使用特权

评论回复
地板
maqianqu| | 2023-8-7 20:07 | 只看该作者
可以尝试增大接收缓冲区的大小。              

使用特权

评论回复
5
fengm| | 2023-8-7 22:00 | 只看该作者
某些 STM32 系列微控制器的硬件性能可能有限,可能无法实时处理高速数据流。

使用特权

评论回复
6
kkzz| | 2023-8-9 15:05 | 只看该作者
在使用 DMA 进行串口接收的时候,通常需要配置 DMA 和串口相关的中断。

使用特权

评论回复
7
linfelix| | 2023-8-9 22:42 | 只看该作者
如果你在接收到数据后进行了一些复杂的数据处理操作,这些操作可能会导致接收数据的延迟。

使用特权

评论回复
8
Stahan| | 2023-8-11 23:45 | 只看该作者
可以贴一下具体代码看看吗

使用特权

评论回复
9
MessageRing| | 2023-8-12 23:51 | 只看该作者
是不是接收后进行了什么复杂运算啊?

使用特权

评论回复
10
ingramward| | 2023-8-14 17:26 | 只看该作者
处理的时间较长,就会导致接收到的数据比发送的慢一拍

使用特权

评论回复
11
Undshing| | 2023-8-14 23:16 | 只看该作者
可以把具体代码贴上来看看吗?

使用特权

评论回复
12
janewood| | 2023-8-15 15:24 | 只看该作者
可以检查你的数据处理代码是否存在效率问题,尽量优化处理逻辑以提高处理速度。

使用特权

评论回复
13
Bowclad| | 2023-8-15 23:24 | 只看该作者
把DMA缓冲区调大一点试试

使用特权

评论回复
14
AloneKaven| | 2023-8-16 23:52 | 只看该作者
有具体的代码贴出来看看吗

使用特权

评论回复
15
Jacquetry| | 2023-8-17 23:11 | 只看该作者
提高下处理速度试试吧

使用特权

评论回复
16
Henryko| | 2023-8-19 21:58 | 只看该作者
能看一下代码是怎么实现的吗

使用特权

评论回复
17
Bowclad| | 2023-8-21 23:21 | 只看该作者
增大下缓冲区试试吧

使用特权

评论回复
18
Mowergy| | 2023-10-20 10:12 | 只看该作者
处理的时间较长了吗

使用特权

评论回复
19
Bowclad| | 2023-10-20 12:43 | 只看该作者
能看一下代码实现吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

880

主题

12030

帖子

4

粉丝