基于STM32的嵌入式MP3播放器的研究

2012-07-12 07:05山东科技大学张学慧朱爱珍
电子世界 2012年8期
关键词:晶振解码音频

山东科技大学 张学慧 朱爱珍

1.引言

MP3是一种高质量音乐压缩标准,采用MP3压缩的数据量可以缩小到1/12,音质却没有多少损失。由于MP3音乐的较小数据量和高质量的播放效果,使它很快成为一种集音频播放、数据存储为一身的数码产品,并深受人们的喜爱。本文设计的MP3是基于ARM公司最新Cortex-M3内核的STM32控制器,利用该处理器内置的SPI接口对SD存储卡进行控制,并对MP3音频文件进行解码实现MP3的播放。系统实现的功能:播放VS1003支持的MP3、WMA等音频文件,且具有歌词同步功能;控制播放上一首/下一首,音量增减;通过LCD显示音量图标和播放状态等。

2.系统方案设计[1]

系统采用STM32为主控制器有不可或缺的优势,STM32系列是意法半导体基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。时钟频率72MHz,功耗36mA,是32位市场上性价比最高的产品。系统主要由控制模块、电源模块、音频解码模块、SD卡模块、人机交互模块组成。其结构框图如图1所示。

系统的工作流程:STM32处理器读取SD存储卡里的MP3音乐文件数据,通过SPI传输至音频解码芯片经过解码转换,再送至耳机听筒。SPI总线控制音频DAC芯片的参数实现音量控制等功能。使用人机交互设备实现播放/暂停、上一曲/下一曲等控制功能和显示播放状态。

3.系统的硬件设计

图1 系统结构框图

系统的硬件设计包含控制器及各模块芯片的选型和相关电路的设计。

3.1 STM32控制器电路设计

STM32系列32位微控制器基于Cortex-M3内核,旨在为MCU用户提供新的开发自由度。它具有高性能、低功耗、低电压等特性,同时还具有高集成度和易于开发的特点,使该系列产品成为小型项目和作为完整平台的理想选择[2]。STM32的使用需要一个最小系统,包括晶振电路,复位电路。

1)晶振电路的设计:晶振电路用于向处理器提供工作时钟。本系统使用无源晶振X1作为系统的主振荡器,一个32.768kHz的晶振作为内置实时时钟(RTC)振荡器[3]。晶体振荡器的连接如图2所示。

晶振的负载电容应当按照要求选取,电容不正确可能导致晶振起振缓慢甚至不起振,这将影响整个系统的稳定性。

2)复位电路的设计:采用简单的“RC+按键”复位形式,该复位电路可以实现上电自动复位和手动按键复位[3]。上电自动复位是通过外部复位电路的电容充电来实现的,按键复位是通过复位端经电阻与电源VCC接通而实现的。

3.2 电源电路的设计

系统中硬件电路的输入电源需要5V、3.3V和2.5V。对于5V电源输入,本着设计简单、有效的原则采用USB供电,而且还可以通过USB线直接对SD的文件进行操作,实现即插即用。

对于3.3V和2.5V电源输入,这些电源要求的功率都不大,可以采用B1117-2.5和B1117-3.3稳压芯片来提供。3.3V的电源输入如图3所示,2.2V电源输入与之类似。

3.3 音频解码电路的设计

图2 晶振电路

图3 3.3V电源输入

由于使用了ARM处理器,MP3的解码方法有两种,一是通过ARM处理器软解码,通过对MP3数据格式的解析实现MP3播放。二是通过外部解码芯片解码。前者对处理器运算要求高,在解码高码率的MP3时,STM32的处理能力不足,得不到好的解码效果,而且STM32解码之后还需要外部的DAC来做音频输出,所以采用后者。

MP3解码芯片选择的是由芬兰VLSI公司出品的一款单芯片MP3/WMA音频解码芯片VS1003,其拥有一个高性能低功耗的DSP处理器核,5K的指令ROM,0.5K的数据RAM,串行控制和数据输入接口,同时片内带有一个可变采样速率的ADC、一个立体声DAC以及音频耳机放大器接口,还可以调节音量高低。其电路设计及与主控制器的连接如图4所示。

VS1003与处理器的数据通信是通过SPI总线方式进行的。VS1003主要通过串行命令接口(SCI)和串行数据接口(SDI)来接收STM32控制器的控制命令和MP3的数据。通过XCS、XDCS引脚的置高、置低来确认是哪一个接口处于传送状态。对VS1003芯片的功能控制,如初始化、暂停、音量控制的读取等,均是通过SCI写入到特定寄存器来实现的。

图4 音频解码电路

图6 人机交互设备电路

3.4 SD卡模块

SD卡在日常生活与工作中使用非常广泛,已经成为最为通用的数据存储卡。在MP3、数码相机等设备上也都采用SD卡作为存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、安全性强等优点。SD卡支持两种总线方式:SD方式与SPI方式。其中SD方式采用6线制,而SPI方式采用4线制,使用单片机对SD卡进行读写时一般都采用SPI模式。因此设计中使用STM32内部接口SPI1与SD卡进行通信[4],图5是其引脚连接情况。

3.5 人机交互设备模块

人机交互设备包括输入设备和输出设备,对于输出设备,采用彩色液晶屏,这里选择一款2.8寸的TFT液晶屏ILI9341,其分辨率为320*240,工作模式为8位数据模式,与MCU的通讯所需IO口较少,速度也较快。输入设备为了使控制方便,人性化,采用触摸屏实现。触摸屏的控制芯片选择由TI公司生产的12位四线触摸屏控制芯片ADS7843,因为该芯片的精度是12Bit,有很高的分辨率,有利于屏幕控制精度的提高。LCD与主控制器是SPI接口方式。其电路设计如图6所示。

4.系统软件设计

4.1 系统软件开发平台

Cortex-M3是ARM公司推出的最新的针对控制器应用的内核,提供业内领先的高性能和低成本的解决方案。但目前能够支持Cortex-M3架构的开发工具很少,而MDK是ARM公司推出目前性价比最高的支持Cortex-M3处理器的开发工具。故本次设计的软件平台是建立在MDKµVision3之上的[5]。

4.2 软件设计基础

1)FAT文件系统:MP3播放器支持FAT文件系统,以便识别出SD卡上的音乐文件,需要文件系统存储数据的原理,协议,格式等。根据对文件系统的掌握,通过跑在RTX实时操作系统上的MP3驱动程序和应用程序,将存储在SD卡上MP3数据文件读取出来,并进行正常的播放。

2)GUI图形用户界面:系统中的MP3界面是基于GUI图形界面,采用图形方式显示MP3操作用户界面在视觉上更易于接受。可以通过窗体、菜单、按键等方式来方便的进行操作。

4.3 软件模块化设计

从整个系统来说,按其与硬件是否直接相关,可以把软件分为两大部分:

(1)与硬件相关的底层驱动软件子系统,包括LCD驱动模块、触摸屏驱动模块、SD卡驱动模块、VS1003驱动模块。

图5 SD卡连接

图7 程序设计流程图

(2)与硬件无关的应用软件子系统,包括FAT文件系统管理模块和音乐播放模块。主程序的设计流程如图7所示。

系统启动后,先初始化STM32处理器,再初始化各硬件模块,完成底层驱动。由MCU通过FAT文件系统接口读取SD卡的一些基本信息,如容量、FAT表及根目录所在的启始扇区等。通过获得这些信息,就可以找出SD卡是否有我们可以播放的音乐文件。若有音乐文件,处理器将通过SPI总线方式读出该文件的音频信息,并将歌曲的数据流信息送入到解码芯片中,通过VS1003芯片解码以及其内含的高质量的立体DAC和耳机驱动电路,实现MP3歌曲的播放。在触摸屏的控制下,通过LCD中菜单选项实现歌曲选择和音量控制。

5.总结

本文提出了一种基于STM32的嵌入式MP3播放器的设计方案,硬件上重点介绍了各模块的电路设计,软件上介绍了需要的嵌入式知识和主程序的流程。该方案对于需要嵌入式媒体播放器的工业控制、车载播放器等行业具有一定的研究价值。方案设计中涉及到很多内容,包括芯片的选型与设计,实时操作系统移植,FAT文件管理系统,GUI图形用户界面,对嵌入式的设计具有一定的参考性。整个系统设计简洁,可靠性高,具有很高的性价比。

[1]程磊.基于STM32的MP3播放器的设计[J].技术创新,2011(12).

[2]王永虹,徐炜,郝立平等.STM32系列ARM Cortex-M3微控制器原理与实践[M].北京航空航天大学出版社,2008.

[3]江力,蔡骏等.单片机原理与应用技术[M].清华大学出版社,2006.

[4]潘浩.嵌入式MP3播放系统研究[D].北方工业大学,2008.

[5]李宁.基于MDK的STM32处理器开发应用[M].北京航空航天大学出版社,2008.

猜你喜欢
晶振解码音频
《解码万吨站》
两非门晶振振荡电路的设计
基于晶振的高性能时间保持方法研究
解码eUCP2.0
必须了解的音频基础知识 家庭影院入门攻略:音频认证与推荐标准篇
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
基于Daubechies(dbN)的飞行器音频特征提取
晶振失效故障分析
音频分析仪中低失真音频信号的发生方法