本节我们来使用stm32、TF卡以及VS1003芯片来制作一台简易的MP3播放器。
VS1003是一个集成的MP3解码芯片,它能自动完成MP3、WMA、WAV、MIDI等格式音频文件的解码。
我们利用stm32的SPI接口,通过必要的初始化配置后,从TF/SD卡中读取MP3文件,发送给VS1003,就能完成声音的输出。
1)硬件设计
VS1003芯片的外围需要搭配晶振、阻容等器件;供电需要2.85V和2.5V;通信接口使用SPI,其他必要的信号除了CS片选外,还需要XDCS(数据片选)、XRESET(复位)、DREQ(状态监测)。
实际上,为了减少硬件制作的工作量,我们可以购买VS1003的电路模块,已经搭配好外围器件,只要供电5V、连接通信接口相关的线即可使用,本文选用的是下图这种:
如果diy能力比较强,可以依据下图自己做板子:
STM32使用的具体型号是STM32F103C8T6。选用这款单片机,它没有SD卡接口,只能通过SPI接口去访问SD/TF卡,这样更具有学习意义。
VS1003模块挂载SPI2接口上,TF卡挂载在SPI1接口上(其实二者挂同一个SPI口上也是可以的,这里主要是因为我在实现时,用的是杜邦线连接,分到两个口上比较好插线)。
SD卡或者TF卡的SPI接口接线定义如下图所示,左边为SD卡,右边为TF卡,我们使用SPI接口,只用连接电源以及SPI的4根线即可:
STM32的引脚如下图分配,PA4用作TF卡的片选,PB3~PB6用作操作VS1003的IO口(各引脚的作用已在命名上区分),串口用于打印状态信息,具体见图: