[STM32F1] STM32F103视频解码,终端太频繁

[复制链接]
 楼主| 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解码任务分开,避免资源抢占?
Pulitzer 发表于 2025-3-21 08:05 | 显示全部楼层
试试看提高主频,比如把系统时钟拉到72MHz,SPI时钟提高一点,让数据处理能力跟上需求。
Uriah 发表于 2025-3-21 08:06 | 显示全部楼层
你用的是4线SPI还是2线SPI?如果TF卡支持4线模式,可以考虑改用SDIO接口,速度比SPI快很多。
Clyde011 发表于 2025-3-21 08:07 | 显示全部楼层
还有一个思路是预加载数据,在播放前先读一部分WAVE数据到缓存里,播放时再慢慢补充,减少TF卡IO压力。
公羊子丹 发表于 2025-3-21 08:09 | 显示全部楼层
SPI2如果中断太频繁,可以试试DMA方式,让数据自动搬运,CPU只需要管理数据流,不用处理每个中断。
周半梅 发表于 2025-3-21 08:10 | 显示全部楼层
你的VS1003是在哪个模式下工作?如果用的是普通SPI方式,看看能不能用VS1003的硬件流控机制减少CPU负担。
帛灿灿 发表于 2025-3-21 08:11 | 显示全部楼层
既然SPI1读取TF卡的时间不够,可以试着用双缓冲,让SPI1和SPI2并行处理,提高效率。
童雨竹 发表于 2025-3-21 08:13 | 显示全部楼层
FATFS的读取也会占用不少时间,可以试试加大 FF_MAX_SS 让每次读取的数据块更大,减少文件系统开销。
万图 发表于 2025-3-21 08:14 | 显示全部楼层
你可以测一下SPI1的速率,看看是不是能进一步加快读取TF卡的速度,减少数据传输瓶颈。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

46

帖子

0

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

44

主题

46

帖子

0

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