我想做个MP3,要怎么入手?
从我更新的频率,大家应该猜出来了,最近有点忙。忙完了设备调试的工作,又来了个画图的活。本来改动不大,但怎料...哎,一言难尽。
今天回答一个粉丝的提问:
看完这个回复,我依然没明白他到底想做哪部分。算了,随便写写吧。
如果是想自己做解码的部分的话,略微还是有些难度,简单说下,欢迎补充。假设你是一个有单片机基础,但是对MP3以及相关知识不太了解的人,那么首先,要明白一个MP3的结构由哪些部分组成,如下:
存储部分
可以选择优盘或者TF卡之类的,优盘的话驱动芯片可以选择CH375,TF卡或者SD卡的话,一般是SPI接口就能驱动。但无论这两种之间的哪一种,你都要了解文件系统,因为你要查找存储器中的MP3格式的文件,文件系统个人建议FATFS,网上资料很多,百度去吧。
解码芯片
解码芯片这里有两个选择,一个是VS1003B,一个是单片机自身。
VS1003B
先说VS1003B,这个芯片出现很多年了,某宝一搜一大堆,网上的相关资料也很多。这是个具有DSP内核的编解码芯片,不光能播放MP3,还能录音,貌似还可以用它做VOIP。如下:
价格从20到40都有,随意。
单片机自身
像STM32F103系列里,有的型号是自带IIS接口的,这样的话可以把解码工作在单片机内部进行处理:
MP3解码,建议使用helix库(别的我也不知道),网上资料很多,放心用。比较占资源,据说编译后要用40K左右的RAM。
IIS接口是这样的:
有的时候是三条线,有的时候是四条线,取决于后面的音频DAC芯片是否需要MCLK。
然后外接的音频DAC我知道的有两种,一种是CS4344:
这个芯片工作时必须提供一个MCLK,而且必须要和SCLK同步,也就是说MCLK不能是外部晶体提供的,必须是处理器同时提供MCLK和SCLK。
我在数码之家论坛上,看到过有人用STM32F103的IIS外接CS4344,做了一个MP3,因为4344需要的时钟频率比较奇葩,所以作者把STM32小小的超频到了80MHZ,然后输出了一个频率接近的MCLK。
另一个芯片是WM8978,这个芯片也是比较强大的:
虽然标的是MP3模块,它也确实是MP3模块,不过送的例程里,是对WAV文件进行的解码,这种文件格式比较简单,不需要使用helix库。想要用它解码MP3文件的话,多上网搜搜吧。
对了,它虽然也需要MCLK信号,但是不必和SCLK信号同步。也就是说可以外接一个晶振给它提供时钟信号,同时芯片内部还有PLL电路,可以对输入的时钟进行倍频、分频,比较灵活。
处理器
如果用的是VS1003B的话,增强型51,或者STM32就可以了。因为数据量比较大,该芯片是SPI接口的,所以尽量使用硬件SPI。如果是WM8978这种,需要IIS接口的,那就选带有IIS接口的处理器,例如STM32F103VET或者STM32F407都可以。
功放
TDA2003?
网上很多,不解释
供电
如果用的是锂电池,尽量带一个充电电路吧,也不复杂。TP4056,TP4057?
基本就这些了吧。当然,如果你做到一半,发现有心无力,买个现成的MP3模块吧。这东西现在很成熟,没多少钱:
开心就好~~~