硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3854|回复: 9
收起左侧

[DMA] STM32H7的DMA双缓冲,如果填充DMA数据慢于DMA发送数据,会出错,如何解决?

[复制链接]

25

主题

68

回帖

143

积分

初级会员

积分
143
QQ
发表于 2020-12-23 15:53:25 | 显示全部楼层 |阅读模式
大家好。
STM32H7的DMA双缓冲,如果填充DMA数据慢于DMA发送数据,会出错,如何解决?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106649
QQ
发表于 2020-12-24 09:03:27 | 显示全部楼层
加大缓冲,为填充增加更多执行时间。
回复

使用道具 举报

25

主题

68

回帖

143

积分

初级会员

积分
143
QQ
 楼主| 发表于 2020-12-24 10:34:50 | 显示全部楼层
eric2013 发表于 2020-12-24 09:03
加大缓冲,为填充增加更多执行时间。

例如,音频I2S的DMA双缓冲,DMA发送I2S数据的速度是固定的,FLAC解码有4种算法,其中最耗时是LPC算法。如果FLAC的LPC解码慢了,没及时更新DMA缓冲,那么DMA将会把旧的数据再发送出去,这样就会有爆音。

参考LabVIEW中的生产者-消费者结构,是采用了队列FIFO机制。但电脑有足够的内存用来做队列FIFO,STM32的内存用来做队列FIFO,不知效果如何。

或者还有其它解决办法?
回复

使用道具 举报

25

主题

68

回帖

143

积分

初级会员

积分
143
QQ
 楼主| 发表于 2020-12-24 10:36:59 | 显示全部楼层
eric2013 发表于 2020-12-24 09:03
加大缓冲,为填充增加更多执行时间。

我尝试加大DMA双缓冲的大小,效果还是不行,不能彻底解决问题。
回复

使用道具 举报

3

主题

1222

回帖

1231

积分

至尊会员

积分
1231
发表于 2020-12-24 13:23:22 | 显示全部楼层
半传输中断是否可以达到效果?
回复

使用道具 举报

2

主题

21

回帖

27

积分

新手上路

积分
27
发表于 2020-12-24 13:40:07 | 显示全部楼层
你需要计算一下你算法的解码时间,如果文件的总解码时间大于文件的播放长度,你根本做不到实时播放。你这时需要优化算法或者换运算速度更快的处理器。
如果解码时长小于文件播放长度,只是其中某些帧解码时长较大,你需要看一下单帧最大解码时长,然后选择响应策略
回复

使用道具 举报

4

主题

46

回帖

58

积分

初级会员

积分
58
发表于 2020-12-24 21:19:20 | 显示全部楼层
这就是为什么某些硬实时性场合,采用DSP的原因了,要么缓存,要么速度跟得上,intel早年视频解码靠软解码的时候,CPU占用百分之七八十,后来怎么解决的,专门开发了单指令多数据的指令集.占用了很大块的晶圆空间,没有办法呀.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106649
QQ
发表于 2020-12-25 09:14:05 | 显示全部楼层
H7搞这个应该完全无压力,早期有爱国者有一款HiFi是LPC4357设计的。。
继续完善你的程序。

爱国者的一款HIFI播放器,主控LPC4357+CS4398+ESS9601,可以学习方案设计。
http://www.armbbs.cn/forum.php?m ... id=18346&fromuid=58
(出处: 硬汉嵌入式论坛)

回复

使用道具 举报

0

主题

19

回帖

19

积分

新手上路

积分
19
发表于 2021-1-4 16:17:17 | 显示全部楼层
简单,双缓冲不行,就4缓冲,或者8缓冲
回复

使用道具 举报

3

主题

8

回帖

17

积分

新手上路

积分
17
发表于 2022-11-15 17:37:16 | 显示全部楼层
我用m4的核,mp3解码一帧的速度远小于i2s一帧的播放速度,你的代码是不是哪里有阻塞了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-27 23:10 , Processed in 0.189393 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表