打印

STM32F4 Discovery 软解FLAC(更新完美版)

[复制链接]
551|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
香菇选手|  楼主 | 2018-7-9 10:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序基于STM32F4 Discovery,用板载CS43L22播放。
用了官方的USB OTG功能,读取U盘下的audio.flac文件 并播放。
不过由于FLAC的FrameSize和BlockSize以及片内RAM的限制,目前只实现了level2级别的播放,一般网上下载的FLAC文件还需要重新转成Level2.
后续还在改进,毕竟F103ZE就可以软解到这个级别了。

程序主要参考TraxMOD代码以及前人移植的,在此基础上进行了修改。

程序同时包括软解MP3代码,在usbh_usr.c中注释掉playFLAC("audio.flac")并反注释掉WavePlayerStart()前面的"//"就可以读取U盘下的“audio.mp3”进行播放,完美320kbps解码。

更新:修改了BlockSize和FrameSize后尝试正常FLAC格式(Level8)软解,失败。调试发现HardFalut.分析后认为是内存溢出,毕竟增加了好几十KB的内存需求。查资料后尝试修改堆和栈的大小,一知半解,但是修改过后可以完美软解最高压缩比FLAC。后面还要深入学习下堆和栈的知识。更新完美版程序。
表格为两个级别分别需要的RAM空间

压缩级别
读取缓存(filebuf)
解码缓存(decoded)
乒乓缓存(PCM_buf)

Level2
5KB
9KB
9KB

Level8
15KB
36KB
36KB




编译完成的数据也比较吓人
Program Size: Code=33872 RO-data=176540 RW-data=372 ZI-data=103828  
RAM达到了比较恐怖的地步,后面慢慢尝试优化。

使用特权

评论回复

相关帖子

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

本版积分规则

450

主题

462

帖子

0

粉丝