打印
[STM32F2]

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

[复制链接]
1961|30
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyf部长|  楼主 | 2022-11-25 19:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
把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

使用特权

评论回复
沙发
pengf| | 2022-11-25 19:52 | 只看该作者
程序问题,贴出来看看

使用特权

评论回复
板凳
dengdc| | 2022-11-25 19:54 | 只看该作者
估计是FIFO的问题。

使用特权

评论回复
地板
zyf部长|  楼主 | 2022-11-25 19:57 | 只看该作者
DMA_InitStructure.DMA_FIFOMode  = DMA_FIFOMode_Disable;  
就可以了。

使用特权

评论回复
5
jlyuan| | 2022-11-25 19:59 | 只看该作者
我极少用dma方式  

使用特权

评论回复
6
zhanghqi| | 2022-11-25 20:01 | 只看该作者
试试地板的方法

使用特权

评论回复
7
wangzsa| | 2022-11-25 20:03 | 只看该作者
试试普通模式呢

使用特权

评论回复
8
zyf部长|  楼主 | 2022-11-25 20:06 | 只看该作者
唉,还是没有什么结果,算了,多谢大家啦

使用特权

评论回复
9
SantaBunny| | 2023-2-20 22:52 | 只看该作者
串口DMA在接收过程中,是不定长接收的。就算你上位只发送了1次,例程接收端总会给你2 - N段不定长数据给你。论坛上也有类似的帖子说是底层驱动的某些特性

使用特权

评论回复
10
burgessmaggie| | 2023-3-3 20:53 | 只看该作者
这个是怎么测量出来的呢?              

使用特权

评论回复
11
Henryko| | 2023-3-3 22:47 | 只看该作者
试试不用dma普通模式正常吗

使用特权

评论回复
12
burgessmaggie| | 2023-3-4 20:08 | 只看该作者
慢一拍是什么意思?              

使用特权

评论回复
13
Stahan| | 2023-3-5 19:52 | 只看该作者
改成普通模式看看还有异常吗

使用特权

评论回复
14
minzisc| | 2023-3-7 19:58 | 只看该作者
慢一拍是什么意思?              

使用特权

评论回复
15
loutin| | 2023-3-11 21:17 | 只看该作者
发送和接受数据还能同时吗?              

使用特权

评论回复
16
elsaflower| | 2023-3-18 15:44 | 只看该作者
这个应该是有延时吧。              

使用特权

评论回复
17
V853| | 2023-3-21 16:12 | 只看该作者
大概率是程序问题,中断没实时产生?

使用特权

评论回复
18
Pretext| | 2023-3-21 16:12 | 只看该作者
应该是你的中断标志位设置错了吧。

使用特权

评论回复
19
天天向善| | 2023-3-21 16:12 | 只看该作者
接收数据是什么时候打印的?

使用特权

评论回复
20
Bowclad| | 2023-3-22 22:54 | 只看该作者
试试普通模式有这个问题吗?

使用特权

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

本版积分规则

694

主题

7102

帖子

8

粉丝