正点原子 发表于 2014-11-9 17:29

最近做的一款STM32F4板子,软解MP3/FLAC/APE/WAV等,最高支持192K 24位音频播放

   花了近一年时间,设计的一款F4开发板,主芯片使用STM32F407芯片,软解码MP3/FLAC/APE/WAV等音频文件,IIS输出后,WM8978进行D/A转换,效果还不错,音质比VS1053好一些。
音乐播放器功能简介:
1,支持WAV/FLAC/APE/MP3等4种格式。
2,WAV最高支持192K,24bit音频播放
3,MP3全码率支持
4,APE最高支持96K,16bit播放
5,FLAC最高支持192K,16bit播放
6,支持歌词显示,前后三行预览,中间一行为正在播放的歌词。
7,支持拖动定位播放位置(ape支持,其他都支持)


   实物图(带4.3寸电容屏):
http://a2.qpic.cn/psb?/V12C3W3Z2QyrRp/BSz6SVI*I8y3QkV4k0bL.1kwVLPG0f5G2dBtKOy.TRg!/b/dMLs6uRzJQAA&ek=1&kp=1&pt=0&bo=6QJvAgAAAAADB6Q!&su=2188205953&sce=0-12-12&rf=2-9
主界面图片(来自屏幕截图):
http://img02.taobaocdn.com/imgextra/i2/230947266/TB2GesFaVXXXXcmXXXXXXXXXXXX_!!230947266.png?t=1415527152000
音乐播放中(来自屏幕截图):
http://img01.taobaocdn.com/imgextra/i1/230947266/TB2BMoHaVXXXXbLXXXXXXXXXXXX_!!230947266.png?t=1415527151000
http://img04.taobaocdn.com/imgextra/i4/230947266/TB2VDowaVXXXXcQXpXXXXXXXXXX_!!230947266.png?t=1415527151000
http://img03.taobaocdn.com/imgextra/i3/230947266/TB226IOaVXXXXX0XXXXXXXXXXXX_!!230947266.png?t=1415527151000
http://img03.taobaocdn.com/imgextra/i3/230947266/TB2i5IGaVXXXXb0XXXXXXXXXXXX_!!230947266.png?t=1415527152000

zhangdu 发表于 2014-11-9 18:28

原子前辈的例程写的很犀利,我搞了好久的I2S都没有搞定,看了你的教程,昨天ok了,现在已经能够出声了,接下来就是搞文件系统了,没有买你的开发板,但是还是借用了你的技术资料,惭愧不已,感激不尽!!
不过我还是遇到一点点问题,就是I2S的DMA传输,输出用示波器看,在两个buf切换的时候,会丢失一个字节

正点原子 发表于 2014-11-9 19:03

引用第1楼zhangdu于2014-11-09 18:28发表的 :
原子前辈的例程写的很犀利,我搞了好久的I2S都没有搞定,看了你的教程,昨天ok了,现在已经能够出声了,接下来就是搞文件系统了,没有买你的开发板,但是还是借用了你的技术资料,惭愧不已,感激不尽!!
不过我还是遇到一点点问题,就是I2S的DMA传输,输出用示波器看,在两个buf切换的时候,会丢失一个字节
会丢失一个字节??
这个我倒是没有去看过哦,应该不会丢失才对,如果丢失,24bit播放的时候,就完全乱套了。

zhangdu 发表于 2014-11-9 20:10

我也不是很清楚,一开始,我是定义了两个buf,I2S_BUF0和I2S_BUF1,然后在里面都附上初值,1.2.3.4.5.6.........然后让DMA传输给I2S外设,监看输出波形,结果是,1 03 25 4   7 6...............这样,那个0就是在DMA切换buf的时候,插进来的,就好像是从BUF数组前面一个地址开始传输的,我又试过了让DMA指向的地址为 I2S_BUF0和 I2S_BUF1,同时从这里开始附初值,还是一样的结果,但是指向数组的第二个元素的时候,貌似就好了;
不过在连接上SD读取的音频数据时,又不行了,把buf按照你教程里说的做4字节对齐以后,再把dma指向buf的首地址,就可以正常播放出声,但是中间有没有丢失或者错位,就不知道了,因为数据不知,所以没有办法用示波器监看,靠耳朵听的话,反正我是没有听出爆音和断流的感觉;
就是觉得很奇怪,不知道你之前有没有遇到过

正点原子 发表于 2014-11-9 20:25

没有按你的这个方式测试过。
如果有单字节丢失,很容易听出来的,会出现噪音的。
之前调试24位wav播放的时候,很长一段时间都是噪音,后面整了2天才搞出来。

zhangdu 发表于 2014-11-10 00:11

引用第4楼正点原子于2014-11-09 20:25发表的 :
没有按你的这个方式测试过。
如果有单字节丢失,很容易听出来的,会出现噪音的。
之前调试24位wav播放的时候,很长一段时间都是噪音,后面整了2天才搞出来。

我也是这么认为的,如果播放的时候没有听出明显的噪音,那么传输的时候应该就没有发生错位或者丢失,不然的话整个数据块错位了,应该送出来的都是错误的信息,甚至高低字节全都错位了,那么应该都是噪声才对。
你的教程真的写的很棒,再次感谢!说实话,你钻研很久搞出来的成果,我就这么直接的使用了,感觉很惭愧,不过我都是自己玩玩,不搞商用的说!
不知道后面出来的M7,你会不会出开发板,到时候一定搞一块学习,M4之前买了探索板了;

德律风根 发表于 2014-11-10 12:05

引用第5楼zhangdu于2014-11-10 00:11发表的 :


我也是这么认为的,如果播放的时候没有听出明显的噪音,那么传输的时候应该就没有发生错位或者丢失,不然的话整个数据块错位了,应该送出来的都是错误的信息,甚至高低字节全都错位了,那么应该都是噪声才对。
你的教程真的写的很棒,再次感谢!说实话,你钻研很久搞出来的成果,我就这么直接的使用了,感觉很惭愧,不过我都是自己玩玩,不搞商用的说!
不知道后面出来的M7,你会不会出开发板,到时候一定搞一块学习,M4之前买了探索板了;
看ID就知道,这是个卖开发板的。

hyperma 发表于 2014-11-10 12:58

噢,楼上的,我就是时钟大师,你叫我爸爸,我给你个电路图和全套说明,告诉你为什么时钟系统根本不需要什么屌毛的TCXO。
快,叫爸爸。

zhangdu 发表于 2014-11-10 13:17

好吧,我承认,MCU直接出来的 I2S jitter 不小,手册上标注正负200ps,但是呢,我用TDA1543已经听了两天了,就这听着就很舒服了,以前用TI的M3也搞过一个,手册上标注jitter 3ns,然后我还是觉得挺爽的,恩,然后我得出一个结论,搞毛jitter啊,我的耳朵对 jitter 的抑制能力很强的,接下来果断ES9018K2M走起,神马外置PLL,神马数字滤波器,神马FPGA/DSP,统统无视,就这样,MCU直接输出I2S,直接给9018,最多给9018上个好点的晶振
还是觉得模拟部分可以好好下点功夫,把电源做足,layout搞好;
其实呢,我一直在琢磨着,用32个mos管,直接搞个16bit的 R2R 音量控制,是不是会很高大上掉渣天

supersuper 发表于 2014-11-10 13:34

ES9018帮你把JITTER搞定,确实省事

zhangdu 发表于 2014-11-10 14:14

引用第12楼supersuper于2014-11-10 13:34发表的 :
ES9018帮你把JITTER搞定,确实省事

我其实已经不太关心什么jitter了,我更关心的是在低压下的输出性能,9018K2M应该是目前最合适的,当然了,有个Dejitter,YY起来更加有底气

supersuper 发表于 2014-11-10 15:53

引用第13楼zhangdu于2014-11-10 14:14发表的 :


我其实已经不太关心什么jitter了,我更关心的是在低压下的输出性能,9018K2M应该是目前最合适的,当然了,有个Dejitter,YY起来更加有底气

9108帮你吧JITTER搞定了,所以你也不用关心了, 所以也没人敢YY了,哈哈!!

zhangdu 发表于 2014-11-11 08:35

好好的一个帖子,唉

正点原子 发表于 2014-11-11 21:41

引用第6楼诶f2k是milf于2014-11-10 11:51发表的 :
这种CPU通常I2S都不干净。
你可以外加晶振,F4的IIS的时钟是可以来自外部晶振的。
如果使用自身的8M晶振倍频再去分频,确实没有几个采样率可以得出0%偏差的,如果换成外部晶振,那就好解决了,很容易解决你说的不干净问题。

正点原子 发表于 2014-11-11 21:45

我觉得吧,盲听才能得出谁好谁坏,拿不同价位的机器,盲听,能听出最好的那才是真正的真的好,其他都是YY罢了。

Bunny 发表于 2014-11-11 22:03

引用第11楼zhangdu于2014-11-10 13:17发表的 :
好吧,我承认,MCU直接出来的 I2S

正点原子 发表于 2014-11-11 22:13

引用第21楼Bunny于2014-11-11 22:03发表的 :





.......
呵呵,确实很多这样的人。
之前听说有网友可以听出水力发电和火力发电的区别,此等神人,不知是否真有?

Bunny 发表于 2014-11-11 22:24

引用第22楼正点原子于2014-11-11 22:13发表的 :

呵呵,确实很多这样的人。
之前听说有网友可以听出水力发电和火力发电的区别,此等神人,不知是否真有?





   一晃 16 年了, 这些人还在忽悠炒旧饭。

Bunny 发表于 2014-11-11 22:39

引用第0楼正点原子于2014-11-09 17:29发表的 最近做的一款STM32F4板子,软解MP3/FLAC/APE/WAV等,最高支持192K 24位音频播放 :

正点原子 发表于 2014-11-11 22:45

引用第24楼Bunny于2014-11-11 22:39发表的 :




话说楼主的产品, 往孩子的教育方面靠一靠。
.......
恩,这方面确实可以考虑。
页: [1] 2 3
查看完整版本: 最近做的一款STM32F4板子,软解MP3/FLAC/APE/WAV等,最高支持192K 24位音频播放