我想做个MP3,要怎么入手?

嵌入式Linux

共 1506字,需浏览 4分钟

 · 2021-04-29



从我更新的频率,大家应该猜出来了,最近有点忙。忙完了设备调试的工作,又来了个画图的活。本来改动不大,但怎料...哎,一言难尽。



今天回答一个粉丝的提问:


看完这个回复,我依然没明白他到底想做哪部分。算了,随便写写吧。


如果是想自己做解码的部分的话,略微还是有些难度,简单说下,欢迎补充。假设你是一个有单片机基础,但是对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模块吧。这东西现在很成熟,没多少钱:


开心就好~~~





推荐阅读:
专辑|Linux文章汇总
专辑|程序人生
专辑|C语言
我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~



浏览 42
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报