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

[复制链接]
1775|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 | 显示全部楼层
可以尝试增大接收缓冲区的大小。              
fengm 发表于 2023-8-7 22:00 | 显示全部楼层
某些 STM32 系列微控制器的硬件性能可能有限,可能无法实时处理高速数据流。
kkzz 发表于 2023-8-9 15:05 | 显示全部楼层
在使用 DMA 进行串口接收的时候,通常需要配置 DMA 和串口相关的中断。
linfelix 发表于 2023-8-9 22:42 | 显示全部楼层
如果你在接收到数据后进行了一些复杂的数据处理操作,这些操作可能会导致接收数据的延迟。
Stahan 发表于 2023-8-11 23:45 | 显示全部楼层
可以贴一下具体代码看看吗
MessageRing 发表于 2023-8-12 23:51 | 显示全部楼层
是不是接收后进行了什么复杂运算啊?
ingramward 发表于 2023-8-14 17:26 | 显示全部楼层
处理的时间较长,就会导致接收到的数据比发送的慢一拍
Undshing 发表于 2023-8-14 23:16 | 显示全部楼层
可以把具体代码贴上来看看吗?
janewood 发表于 2023-8-15 15:24 | 显示全部楼层
可以检查你的数据处理代码是否存在效率问题,尽量优化处理逻辑以提高处理速度。
Bowclad 发表于 2023-8-15 23:24 | 显示全部楼层
把DMA缓冲区调大一点试试
AloneKaven 发表于 2023-8-16 23:52 | 显示全部楼层
有具体的代码贴出来看看吗
Jacquetry 发表于 2023-8-17 23:11 | 显示全部楼层
提高下处理速度试试吧
Henryko 发表于 2023-8-19 21:58 | 显示全部楼层
能看一下代码是怎么实现的吗
Bowclad 发表于 2023-8-21 23:21 | 显示全部楼层
增大下缓冲区试试吧
Mowergy 发表于 2023-10-20 10:12 | 显示全部楼层
处理的时间较长了吗
Bowclad 发表于 2023-10-20 12:43 | 显示全部楼层
能看一下代码实现吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

880

主题

12030

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部