ARM7实现高清WAVE文件播放
WAVE播放器完工有段时间了,之前只支持16Bit/24Bit44.1KHzWAVE文件,现改进了一下,能支持更高清晰度的WAVE文件了。首先说明:所谓高清WAVE文件是相对于16Bit/44.1KHz来说的,目前测试可支持到24Bit/88.2KHz和24Bit/96KHz。
实现过程:
第一步:SD卡读速度测试。我的WAVE播放器使用SPI方式访问SD卡,速度是个瓶颈。在23.6MHzSCLK频率下,读速度只能达到750KBytes/s.在使用了DMA和FIFO后,读速度提高到了1.1MBytes/s.
第二步:码率计算。24Bit/96KHz码率为 24X2X96=576KBytes/s. SD卡的访问速度是足够的。
第三步:I2S时钟生成。我的WAVE播放器使用CPLD来生成I2S信号,为了整数倍分频得出44.1KHz、48KHz、88.2KHz、96KHz四种频率使用了16.9344MHz和12.288MHz两种时钟源。ARM7通过WAVE文件头44字节获知文件的格式,然后通过IO控制CPLD生成对应的频率。
两种有源晶振
播放文件
ARM7用的啥芯片啊 ARM7:LPC1768 NXP
CPLD:XC9572XL XILINX
DAC: PCM1798 TI
运放:OPA2604 TI NXP 的 LPC1768 既然 这样 , 为何不选 STM32F4 价格也 不贵, 播 24bits 192khz 都 没有问题 我们QQ群自己玩的9018播放器用STM32F4,可以支持到24位192K的WAVE和24位96K的FLAC STM32F4有SD控制器,可SDIO 4bit数据方式读文件,速度是快很多的。
DIY嘛,就是手头有什么就玩什么。我手头只有LPC1768,所以嘛只好用它了。
今下午终于把按文件夹播放也做完了,解决了SD卡里有歌很多文件时选歌麻烦的问题。
把卡里的歌按类型,放到不同文件夹,类似一张张CD。
播放时,通过按键切换文件夹,在1602显示屏的第二行显示文件夹的名称,这样选歌就方便多了 我也想整个 winterdate 发表于 2013-4-29 03:29 static/image/common/back.gif
为啥不像硬盘似地弄个缓存?读取速度不就解决了?
缓存只能解决突发读写的问题。除非能缓存下整首歌,否则像WAVE播放这样流水式的,必须得读SD卡速度大于播放速度。 有板吗, 让一套玩玩
本帖最后由 孙强 于 2013-5-4 08:39 编辑
我怎么觉得各位都把 wav播放器搞的复杂了本来wav 就是最简单的 音频文件
44.1 16 的cd音质 wav文件 sd卡的速度都足够播放了
高性能单片机 足够 了 arm都用上了 多少有点 大炮打鸟 的感觉
arm应该 在 ape flac 上大放异彩另外 ape牵涉到浮点运算flac 整数运算 应该没有问题
我用单片机播放44.1 16 的cd音质 wav文件 非常成功 线路结构非常简单 制作 成本又很低廉
Biglee_163 发表于 2013-4-28 16:44 static/image/common/back.gif
我们QQ群自己玩的9018播放器用STM32F4,可以支持到24位192K的WAVE和24位96K的FLAC
求群号!!! 看起来不错哦
能不能用iphone读取歌曲列表和控制播放?
是不是开源的?
如果能符合这些条件就NB咯~ 以后高清音频文件都是加密的,收费才能按次听,以后没有免费的音乐,机器也没有前途。 zltmax 发表于 2013-5-4 08:42 static/image/common/back.gif
求群号!!!
279982865 孙强 发表于 2013-5-4 08:32 static/image/common/back.gif
我怎么觉得各位都把 wav播放器搞的复杂了本来wav 就是最简单的 音频文件
44.1 16 的cd音质 wav文件 s ...
什么叫DIY?
如果仅仅为了出声,你花20多元买个MP3播放器就行了,它也能放WAVE 功力不错