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

2019-07-20 11:02发布


程序基于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达到了比较恐怖的地步,后面慢慢尝试优化。






友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
ricefat
1楼-- · 2019-07-21 10:06
回复【7楼】lura2:
---------------------------------
是啊 256*16的片子就好几十大洋了
lura2
2楼-- · 2019-07-21 10:32
 精彩回答 2  元偷偷看……
ricefat
3楼-- · 2019-07-21 14:19
 精彩回答 2  元偷偷看……
lura2
4楼-- · 2019-07-21 18:31
回复【10楼】ricefat:

回复【9楼】lura2:
---------------------------------
在别人那里见过439的官方开发板了,7寸屏直接看AVI视频无压力。

---------------------------------
看得流口水了,哈哈!F429的好处是程序可以加密,不像其他的A8A9,这也是我比较向往它的原因吧,不然,A8之类的性能不知道比F429要好多少倍呢
正点原子
5楼-- · 2019-07-21 19:29
关键看价格啊,F4出来都几年了,价格还老高呢...
ricefat
6楼-- · 2019-07-21 19:57
 精彩回答 2  元偷偷看……

一周热门 更多>