打印
[STM32F1]

STM32F103视频解码,终端太频繁

[复制链接]
181|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Hitomi22|  楼主 | 2025-3-20 12:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在作一个 VS1003 解码 WAVE 文件的项目。文件是 44100/16 位立体声,MCU 是 STM32F103。
SPI1 接 TF 卡,SPI2 接VS1003。做了文件系统 FAFfs,SPI2 工作在中断模式。
我目前的问题是大部分资源都被SPI2 中断占用了,没时间读取 TF 卡里的文件,怎么解决呢?
现在用 STM32CUBEIDE。


使用特权

评论回复
沙发
LcwSwust| | 2025-3-20 13:05 | 只看该作者
DMA了解一下

使用特权

评论回复
板凳
Wordsworth| | 2025-3-21 08:02 | 只看该作者
如果SPI2的中断占用太高,可以降低中断优先级,让TF卡的SPI1有更高的执行权限,确保数据能及时读出来。

使用特权

评论回复
地板
Bblythe| | 2025-3-21 08:04 | 只看该作者
你有试过改成任务调度方式,比如用RTOS,把SPI1读卡任务和SPI2解码任务分开,避免资源抢占?

使用特权

评论回复
5
Pulitzer| | 2025-3-21 08:05 | 只看该作者
试试看提高主频,比如把系统时钟拉到72MHz,SPI时钟提高一点,让数据处理能力跟上需求。

使用特权

评论回复
6
Uriah| | 2025-3-21 08:06 | 只看该作者
你用的是4线SPI还是2线SPI?如果TF卡支持4线模式,可以考虑改用SDIO接口,速度比SPI快很多。

使用特权

评论回复
7
Clyde011| | 2025-3-21 08:07 | 只看该作者
还有一个思路是预加载数据,在播放前先读一部分WAVE数据到缓存里,播放时再慢慢补充,减少TF卡IO压力。

使用特权

评论回复
8
公羊子丹| | 2025-3-21 08:09 | 只看该作者
SPI2如果中断太频繁,可以试试DMA方式,让数据自动搬运,CPU只需要管理数据流,不用处理每个中断。

使用特权

评论回复
9
周半梅| | 2025-3-21 08:10 | 只看该作者
你的VS1003是在哪个模式下工作?如果用的是普通SPI方式,看看能不能用VS1003的硬件流控机制减少CPU负担。

使用特权

评论回复
10
帛灿灿| | 2025-3-21 08:11 | 只看该作者
既然SPI1读取TF卡的时间不够,可以试着用双缓冲,让SPI1和SPI2并行处理,提高效率。

使用特权

评论回复
11
童雨竹| | 2025-3-21 08:13 | 只看该作者
FATFS的读取也会占用不少时间,可以试试加大 FF_MAX_SS 让每次读取的数据块更大,减少文件系统开销。

使用特权

评论回复
12
万图| | 2025-3-21 08:14 | 只看该作者
你可以测一下SPI1的速率,看看是不是能进一步加快读取TF卡的速度,减少数据传输瓶颈。

使用特权

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

本版积分规则

12

主题

14

帖子

0

粉丝