基于ARM的MP3播放器的研究与实现

2018-01-18 07:10吴小锋张西宁
电子设计工程 2018年1期
关键词:播放器触摸屏解码

吴小锋,张西宁,马 博

(1.西安邮电大学人事处,陕西西安710121;2.陕西广电网络传媒(集团)股份有限公司技术部,陕西西安

710061;3.西安邮电大学计算机学院,陕西西安710121)

随着编码与解码,以及压缩技术的进步,语音文件一直朝着高压缩比、高保真的方向发展。在目前普遍应用的音频压缩标准中,MP3具有算法复杂、压缩比大、效果好等优点,其音质在低码率的条件下能够接近CD的效果。在市场消费刺激下,各大公司纷纷推出了自己的MP3播放器产品。为了进一步改善市场上MP3播放器存储容量小、价格昂贵、播放歌曲单一的不足,文中基于STM32F103VET6微控制器,结合芬兰VLSI Solution公司生产的音频编解码芯片VS1003,设计实现了一种个性化的MP3播放器。

1 MP3解码原理

1.1 MP3帧结构

MP3帧结构如图1所示,主要包含以下几个字段,即帧头、CRC校验、边信息、主数据和附加数据等[1]。在每一个帧中都有一个帧头,长度为4个字节,帧头最前面的12比特总是被设置为1,被称作为“帧同步字”。如果帧头的校验位为0,则帧头后面有长度为2个字节的CRC校验值,把这个值和通过计算得出的CRC值进行比较就可以得知该帧是否有效。对边信息进行解码能够找出主数据从哪里开始以及尺度因子长度等参数信息。

图1 MP3帧结构

1.2 解码实现方式

根据解码方式不同,解码MP3文件可以采用软件解码和硬件解码两种方式[2]。

软件解码过程是通过解码程序来实现,这一程序依据解码算法编写,CPU执行解码程序后,就可以将音频信号从MP3音频文件中解析出来。该方案只需要开发者提供基本的硬件条件,对硬件要求不高。经过解码得到的MP3数据通过主控板的数模转换功能就可以生成音频信号,输入功放后即可播放声音。然而,如果有大量的MP3文件需要解码,就需要占用大量的CPU时钟,因此该方案对CPU性能要求相对高些。

硬件解码过程就是将解码算法过程硬件化。解码模块集成专用的解码芯片,自动对MP3文件的音频信号进行解析,获取解码频率和解码时间。这一方案的显著优点是解码速度快,同时不需要占用CPU对音频文件进行处理,只需要把MP3数据流送入解码模块中,芯片就会自动解码。

由以上分析可以看出,通过硬件解码方式能够得到音质较好的音频信号[3],而软件解码中由于CPU性能和解码算法中数据处理的优化操作,导致其音频信号会有损耗。文中采用硬件解码MP3文件方式,使用具有SPI接口的专用MP3解码芯片,同时保证了文件数据传输的速度。

2 MP3播放器的总体设计

2.1 功能介绍

设计实现的MP3播放器具备以下功能:

1)支持对SD卡的访问,能够播放SD卡中的MP3文件;

2)在播放音频文件时,同步显示MP3文件的歌曲名、播放时间以及声音幅度的大小变化;

3)播放过程中,能够对播放文件进行上一曲、下一曲、循环等操作,以及对音效进行改变;

4)可以显示SD卡中的文件夹和文件,调节播放音量的大小。

2.2 系统总体结构设计

通过对MP3播放器系统的功能需求分析,可以将系统划分为STM32F103RB核心处理[4]、SD卡音频文件读取、触摸屏控制、LED控制、SPI控制、音频数据控制、MP3音频解码播放等多个模块,系统总体功能结构如图2所示。

图2 MP3播放器系统总体结构

3 MP3播放器的具体实现

3.1 主控程序设计

主控制程序的流程如图3所示,系统开机后,依次按如下步骤执行:

图3 系统主控程序流程图

1)对系统各个硬件模块的初始化;

2)对FAT文件系统[5]的初始化。这里需要判断初始化是否成功,如果不成功,系统则会一直检索SD卡[6],直到检测到能被系统识别的SD卡和文件系统为止。

3)查找系统文件。系统文件保持在SYSTEM文件夹下,该文件夹下又包括FONT子文件夹。FONT文件夹下包括FONT12.FON和FONT16.FON两个字体文件。

4)根据用户输入,执行相应功能。SD卡中有用户建立的MUSIC文件夹,其中存放着歌曲文件。用户插上耳机,根据显示界面上的提示选择相应功能,即可听到播放的歌曲。

3.2 硬件平台选择

STM32系列采用ARM Cortex-M3内核,其功耗为36 mA,是市场上功耗最低的32位产品,相当于0.5 mA/MHz[7],是专门为高性能、低成本、低功耗的嵌入式应用而设计的。本项目实现过程中,采用STM32F103RB处理器。STM32系列处理器具有如下一些特点:

1)内核:32位ARM Cortex-M3 CPU,最高工作频率为72 MHz,1.25 DMIPS/MHz。单周期乘法和硬件除法[8-10]。

2)存储器:片上集成的Flash存储器容量为32-512KB、SRAM存储器容量为6-64KB[11]。

3)DMA:DMA控制器的通道数为12[12]。支持的外设有多种,例如定时器、ADC、DAC、I2C、USART和SPI等。

4)2个12位的微秒级的A/D转换器(通道数为16):A/D测量范围为0~3.6 V,双采样和保持能力。片上同时集成了一个温度传感器。

5)2通道 12位 D/A转换器:STM32F103xC、STM32F103xD、STM32F103xE独有。

6)多达13个通信接口:2个I2C接口(支持SMBus/PMBus),5个 USART接口(支持 ISO7816、LIN、IrDA接口和调制解调控制),3个SPI接口(18 Mbit/s),其中2个可复用为I2S接口,CAN接口(2.0B),USB 2.0全速接口和SDIO接口。

3.3 硬件解码模块

硬件解码过程通过解码芯片VS1003来实现[13](如图4所示)。输入的比特流首先通过解码芯片VS1003的串行接口来接收。输入的比特流被解码后,通过一个数字音量控制器到达一个过采样立体声DAC(18位)。VS1003模块的初始化是通过XRST、XDCS、XCS、DREQ、SCK、SO、SI等7个引脚来实现的。VS1003芯片工作时,首先进行硬件复位,经过延时处理后,再进行软件复位,等待DREQ信号为高;软件复位结束后便可设置VS1003芯片,最后向VS1003发送4个字节无效数据,启动SPI发送后,即可完成对VS1003芯片的初始化工作。

3.4 SD卡中音频文件读取

系统采用FAT文件系统管理SD卡。文件分配表FAT采用链式结构,在FAT32文件系统中用于磁盘数据(文件)索引和定位。读取SD卡文件时,SD卡上的文件存取都是以簇为单位,首先根据文件名查找到该文件的目录登记项,然后根据目录登记项中的簇号便可以读取文件的全部内容。在需要读取SD卡中数据时,使用的命令字为CMD17,接收正确时第一个响应命令字节为0xFE,随后是512字节的用户数据块,最后为2个字节的CRC校验码。

图4 VS1003硬件结构图

3.5 显示模块

1)TFT触摸屏

系统采用2.4寸的TFT液晶屏,其分辨率为240*320,65K色,通过TI公司ADS7846触摸屏控制芯片增添触摸功能[14]。

2)触摸屏工作原理

触屏校准是使用触摸屏之前必须进行的操作,通过采集触摸屏上4个角的物理坐标,然后使用一定方法(如待定系数法)就可以算出坐标系之间的平移关系。

3)uC/GUI显示模块

uC/GUI是一种图形支持系统,主要应用于嵌入式环境,具有以下特点[15]:只要有合适的C编译器提供支持,可以适用于任何8/16/32位CPU;只要有合适的LCD驱动(小模式显示时除外),可以适用于任何类型的液晶显示,支持单色、灰度和彩色;所有接口支持使用宏进行配制;可以定制显示尺寸;字符和位图对液晶显示的起点没有特别要求,可以从任意起点开始显示。此模块利用uC/GUI显示播放器的界面,包括歌曲的名字、音量大小、上一曲、下一曲、循环、列表浏览等功能。

4)字库设计

由于CPU的Flash存储器容量只有512KB,无法一次把所有的字库数据全部写入到W25X16芯片。可以将这些数据分为5部分写入,依次为:ASCII字符的写入、GB2312字库文件前半部分的写入、GB2312字库文件后半部分的写入、unicode码到oem码转换表[16]的写入、oem码到unicode码转换表的写入。

4 结束语

本项目以STM32F103RB为核心控制器,结合VS1003音频解码器,设计实现了一个MP3播放器。STM32系列CPU拥有丰富的资源,基本不需要添加外部器件,可以通过软件升级来增加产品的功能,性能提升非常方便。播放器系统采用触摸屏控制,使得系统操作更为人性化,可以方便地控制整个系统。同时实现了MP3歌曲的播放、换歌、循环等功能,具有成本低、存储容量大、扩展性强、携带方便等优点,必将在智能汽车、智能家居等领域得到广泛应用。该系统实现了MP3播放器的主要功能,可以对一些辅助功能进一步加以完善,例如增加闹钟、电子书等功能,以使得系统更具实用性。

[1]王星磊,于莲芝,孙金,等.基于MP3编码过程的音频加密研究[J].信息技术,2014(10):191-193.

[2]董宁.MP3编码器算法原理研究[J].电子设计工程,2013,21(5):47-49.

[3]杜春雷.ARM体系结构与编程[M].2版.北京:清华大学出版社,2015.

[4]肖俊生,周小凤,左鸿飞.基于STM32的高炉炉身厚度监测系统的设计[J].工业控制计算机,2014,27(3):113-114,116.

[5]梁钟丽.基于嵌入式平台的文件系统研究[D].大连:大连海事大学,2016.

[6]常亮亮,王广龙,张成吉.基于SOPC的图像采集与存储系统设计[J].测控技术,2012,31(11):11-14.

[7]周官喜.基于STM32低功耗云台控制系统设计[D].青岛:青岛理工大学,2012.

[8]马忠梅,张子剑,张全新,等.ARM&Linux嵌入式系统教程[M].3版.北京:北京航空航天大学出版社,2014.

[9]徐成波,张常年.基于嵌入式Linux的移动机器人控制系统[J].单片机与嵌入式系统应用,2014(7):24-27.

[10]陈永强,陶品,王笃强.嵌入式Linux移植[J].实验室研究与探索,2012,31(9):67-68,72.

[11]方海涛.高速低功耗嵌入式SRAM的设计[D].武汉:华中科技大学,2012.

[12]李涛涛.基于PCIE的高速存储系统设计[D].西安:西安电子科技大学,2014.

[13]郝迎吉,关强.基于VS1003解码器的信号发生器[J].仪表技术与传感器,2013(2):19-20,54.

[14]于春涛,冯奇,孙涛,等.基于TPS65105的TFT⁃LCD电源设计[J].现代电子技术,2013,36(18):155-156,163.

[15]杨存祥,张春蕾,庞永超.基于uC/GUI的虚拟仪表盘的设计[J].化工自动化及仪表,2012,39(4):511-514.

[16]冯灵清,杨怀卿,刘宇晶.常用编码方式及其格式转换[J].计算机时代,2012(1):33-35.

猜你喜欢
播放器触摸屏解码
《解码万吨站》
PLC和触摸屏在卫生间控制系统的应用
Walkman诞生40周年 索尼适时发布NW-ZX500和NW-A100系列播放器
解码eUCP2.0
基于STM32的MP3播放器设计
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
Moon ACE播放器/放大器一体机
皮肤“长”出触摸屏
播放器背板注塑模具设计