APP下载

基于STM32的MP3播放器设计与实现

2016-03-22周双飞黄海波简炜高云王志

电脑知识与技术 2016年1期

周双飞++黄海波++简炜++高云++王志虎

摘要:基于STM32F103VET6增强型微控制器设计了一款MP3播放器,基于硬件解码实现了多页显示歌曲播放列表、换页、触摸换歌以及支持MP3、WAV等格式歌曲的播放等功能的操作。硬件系统包括VS1003音频解码器、TDA1308功放模块、MicroSD卡以及液晶触摸屏;软件系统基于VS1003驱动、液晶触摸屏的驱动、μC/OS- 实时操作系统和FATFS文件系统等进行实现,系统实现表明具有很好的播放和界面操作效果。

关键词:STM32;MP3播放器;μC/OS-

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)01-0260-03

Design and Implementation of MP3 Player Based on STM32

ZHOU Shuang-fei1, HUANG Hai-bo1, JIAN Wei1, GAO Yun2, WANG Zhi-hu2

(School of Electrical & Information Engineering, Hubei University of Automotive Technology, Shiyan 442002, China; 2. Power Equipment Plant of Dongfeng Motor Group Co., Ltd., Shiyan 442000, China)

Abstract: A MP3 player was designed based on STM32F103VET6, which is an enhanced micro controller. Based on hardware decode, main functions are achieved, such as multiple pages show the songs list, paging, touch to change songs and support MP3,WAV format songs play, and so on. The hardware system included VS1003 audio decoder, TDA1308 power amplifier module, MicroSD card and LCD touch screen. The software was implemented based on VS1003 driver, LCD touch screen driver, μC/OS-II real-time operating system and FATFS file system. The implementation shows that the MP3 player has the very good play and interface operation effect.

Key words: STM32;MP3 player;μC/OS-

MP3播放器被广泛应用于各种消费类电子领域,如新型的车载音频设备、移动手机、网络MP3等,所以对MP3的研究还具有很高的市场价值。国内外现有的MP3解码方案实现有2种方案:硬件和软件解码,由于软件解码借助软件提供的算法来实现音频的分析、解码等工作,程序复杂,实现难度大且相对来讲非常耗电,所以本文采用硬件解码设计MP3播放器。

1 硬件设计

1.1 硬件系统方案设计

基于STM32F103VET6微控制器所设计的MP3播放器,主要包括三个模块:存储模块、播放模块和显示模块。系统方案设计的系统框图如图1所示。音频文件存储在MicroSD卡内(支持文件夹),通过微控制器读取歌曲数据发送到VS1003音频解码器,经解码后发送给TDA1308功放模块,放大后在通过耳机外放出来,同时通过液晶显示器实时的显示播放的状态信息。

图1 系统框图

STM32F103VET6增强型微控制器使用的是高性能、低成本、低功耗的Cortex-M3内核,支持睡眠、停机、待机三种低功耗模式[1]。工作频率为72MHZ,内置64KB的SRAM和 512KB的闪存,包含2个USART、2个SPI、1个USB和1个CAN等通信接口,还具有丰富外设和增强I/O端口。下面对系统中的几个主要模块进行设计说明。

1.2 MicroSD卡模块

MicroSD卡与STM32开发板的连接采用SDIO接口,其中SDIO有多种工作模式,本次采用SDIO的DMA模式,管脚连接如图2所示。MicroSD卡的驱动采用FATFS文件系统,FATFS是面向小型嵌入式系统的一种通用的FAT文件系统模块,FATFS完全独立于底层的I/O介质,因此独立于硬件架构,可以很方便的移植到处理器当中,FATFS里面的各个函数都是封装好的函数,只需要添加底层介质函数,就可以对MicroSD卡进行读写操作。

图2 MircroSD管脚连接图

1.3 液晶模块

LCD与CPU的连接采用FSMC接口,FSMC接口初始化完成后,就可以对液晶屏控制芯片ILI9341进行控制,其中液晶屏的扫描方式、像素点的颜色及横/竖屏的控制都是通过调用液晶屏寄存器初始配置函数向ILI9341写控制参数来实现。对不同图片及文字的显示实质是控制液晶的所有像素点的颜色来达到预期的结果。显示器的触摸屏使用的是电阻触摸屏,通过TSC2046芯片控制。要实现触摸功能首先要对触摸屏进行触摸校准,校准成功后,保存校准参数(为避免每次开机都进行校准,将参数保存在MircroSD中),当再次点击时,就可以把测量出来的触点电压经转换公式计算出对应的液晶屏坐标。

1.4 VS1003解码模块和TDA1308功放模块

VS1003音频解码芯片为VS10xx系列的第三代产品,是芬兰VLSI Solution公司出品的单片MP3/WMA/MIDI解码和ADPCM编码芯片[2]。VS1003使用的是数字信号处理器VS_DSP,具有功耗低,性能高等特点。VS1003具有串行的控制和数据接口,片内带有一个高品质可变采样的ADC和多速立体声DAC,其工作的主时钟为12.288MHz,VS1003通过开发板中的SPI2来控制,解码电路如图3所示。数据的写入主要通过DREQ信号控制,当VS1003的FIFO能够接收数据时,DREQ为高向VS1003发送32Byte的数据(当DREQ变低时停止发送数据),接收数据后进行解码、高低音配置,然后流向音量控制单元和音频FIFO,最后通过低通滤波输送到音频放大器。

图3 MP3解码电路

由于从VS1003输出的功率太小,播放的音效不佳,所以将输出的信号送往TDA1308功放模块,放大后在经过耳机播放出来。

2 软件系统设计

要实现本系统的MP3功能,需要做的准备工作有在SD卡内新建两个文件夹,分别命名为MP3Ready和Music。MP3Ready文件夹内存放list1.txt和list2.txt两个空文件, list1.txt用于存放扫描到的可播放文件名及路径, list2.txt用于存放播放歌曲列表不添加路径,同时还要将预先制作好的用于LCD显示的字模及图片存放到此文件夹下;Music文件夹用于存放要播放的音频文件。做完这些工作后,把液晶屏驱动、触摸屏驱动、MicroSD卡驱动、VS1003驱动等驱动程序添加到工程中,通过μC/OS-Ⅱ实时操作系统调度整个程序的运行,软件部分总体框图如图4所示。

图4 软件部分总体框架

2.1 μC/OS-Ⅱ实时操作系统

μC/OS-Ⅱ是一个代码完全开放的多任务实时操作系统,其结构简单明了,代码严谨,虽然它只是一个内核,但包括了一个操作系统基本的特性:中断管理、内存管理、多任务的管理、定时管理等,而且具有很强的移植性,很容易被移植到各种微处理器上,它还具有可裁剪、实时性好、高可靠性等特点[3],所以MP3的设计选择μC/OS-Ⅱ实时操作系统。

本系统使用μC/OS-Ⅱ实时操作系统,涉及μC/OS-Ⅱ实时操作系统的移植,移植成功后,还要对任务的建立、任务的堆栈及任务优先级配置等进行编程。要实现μC/OS-Ⅱ的运行首先要对操作系统的所有变量和数据结构初始化,创建一个空任务,然后创建播放器运行、指示灯等任务,最后通过多任务任务调度及中断实现就绪表中最高优先级任务的切换。

2.2 主程序的流程实现

要实现MP3的功能,其主程序首先要完成对开发板所用到的外设进行初始化和文件系统的初始化,进而将MicroSD卡中可播放的音频文件(支持长文件名,如果文件名过长,超出部分忽略不显示)扫描到播放列表中,同时将播放列表中的文件名以列表的形式在LCD上显示出来,然后按照播放指令将要播放的音频文件发送给VS1003模块,经过VS1003的解码、高低音配置等处理,最后发送给功放模块将歌曲播放出来,一首歌播放完之后,自动播放歌曲列表的下一首,直至所有歌曲播放完毕。主程序流程框图如图5所示。

图5 主程序流程框图

3 系统实现效果

MP3播放器的设计用到多种调试手段,主要通过JTAG接口调试,其次通过指示灯的状态和串口在电脑屏幕上打印MP3播放器运行过程的参数协助调试。设计的界面效果如图6所示,歌曲名称以列表的形式显示,单页最多显示8首歌曲,正在播放的歌曲用三角图标指示。开始按键两边的按键实现直接切换上一首、下一首歌曲的功能;左下角菱形的左右顶角区域分别是上一页、下一页的按键;对于歌曲的切换还可以直接点击列表歌曲名称进行切换。

图6 界面效果

4结束语

本文对MP3硬件解码技术进行了研究,并成功开发了一款MP3播放器。在硬件上解码器与存储器分离,增加了歌曲存储容量(可支持4G的MicroSD卡),既节省了成本,又极大地方便了应用,同时还采用了触摸屏显示器,使操作更加便捷,具有一定的使用和推广价值。

参考文献:

[1] 马忠梅,徐琰.ARM Cortex 微控制器教程[M]. 北京:北京航空航天大学出版社,2010:59-61.

[2] VLSI Solusion.VS1003.Version:1.06,2012-03-16.

[3] 任哲.嵌入式实时操作系统μC/OS-Ⅱ原理及应用[M].北京:北京航空航天大学出版社,2014:7-13.