基于嵌入式系统的MP3播放器

2016-12-22 21:46司夏岩吴先平宋丹
软件导刊 2016年11期

司夏岩吴先平宋丹

摘 要:以LPC1768为核心控制器,利用其UDA1380音频解码模块,加上外接的SD卡存储器,在实现U盘功能的基础上实现了MP3播放器的功能。在硬件设计上采用播放单元与存储单元分离的办法,增加了存储容量,解决了MP3播放器存储容量受限的问题,极大地方便了应用;使用触控技术,具有友好的人机界面。在软件设计上使用MP3软解码方式,以方便该软件升级,也节省了硬件成本。

关键词关键词:LPC1768;UDA1380;SD卡;MP3软解码;触控技术

DOIDOI:10.11907/rjdk.162281

中图分类号:TP319

文献标识码:A 文章编号文章编号:16727800(2016)011009803

0 引言

目前市场上销售的MP3播放器种类繁多,功能更加丰富,外观设计也更加个性化和人性化,但是,绝大多数现有的MP3播放器还是将存储器与解码器合为一体,存储容量不能改变。这种MP3播放器具有轻便、体积小等优点,但同时也带来一些问题:一方面存储容量不能扩展,用户只能被动选择固定存储容量的产品,不能根据个人需求选择可变的存储器,当存储器容量不能满足要求时,只能重新购买新的产品,造成了资源的浪费;另一方面也不利于MP3播放器在其它领域的广泛应用。

本系统将解码器与存储器进行分离,SD卡就成为了扩充存储容量的首选。SD卡拥有高记忆容量、稳定的性能、快速数据传输率、极大的移动灵活性以及很好的安全性,凭借其大容量、小巧便携等特点而倍受广大消费者的青睐。此外,本系统还使用了触摸控制技术,通过控制显示屏就可实现歌曲播放控制、系统设置、图片浏览等功能。

1 总体方案

系统总体方案的选择包括:文件系统[1]的选择、SD卡模式选择、I2S音频输出方式选择、MP3软件解码库选择。

本系统的MP3播放器将SD卡作为无内置的存储介质,将LPC1768芯片作为主控制器,当插入SD卡时,系统能自动识别SD卡,并读取SD卡上存储的MP3文件,将读取的MP3文件送入内存用解压算法解压成WAV格式音频文件,最后将解压的WAV文件送入音频解码芯片UDA1380进行解码并播放。支持播放MP3、WAV音频文件,在触摸屏按键控制下,可控制歌曲播放、暂停、上一首、下一首、音量增减等;串口屏可以显示歌曲信息、当前播放进度、曲目列表等。

2 系统硬件设计

本系统的硬件由5个模块组成: LPC1768微控制器、UDA1380解码模块、存储模块SD卡、USB接口和串口屏ZTM480272S43。

2.1 微控制器模块

核心处理器采用NXP公司的LPC1768[2],它是NXP公司推出的基于ARM Cortex-M3内核的微控制器LPC17XX 系列中的一员,具有高性价比、低功耗的特点,用于处理要求低功耗和高度集成的嵌入式应用。LPC1768控制器主频率高达100MHz,采用哈佛结构和3级流水线,带独立的本地指令和数据总线以及用于外设的稍微低性能的第三条总线,还包含一个支持随机跳转的内部预取指单元。另外LPC1768控制器还具有高度集成化的特点,极大减小了芯片面积,丰富的外设资源,保证了应用的可靠性和设计的便利性。

2.2 SD卡模块

SD卡是一种大容量、体积小、数据传输速度快、可热插拔、访问协议简单的存储卡。SD卡可以采用SD总线访问[3],也可以采用SPI总线访问。如图2所示,SD卡的CS、SCK、MOS I、MISO直接连接到SD卡座的相应接口,其中SPI[4]的两个数据线MISOI、MOS分别连接上拉电阻,目的在于实现本电路可以与MMC卡的接口兼容。处于SPI模式时将没有使用的信号线DAT1和DATA2分别连接下拉电阻。

2.3 串口屏模块

ZTM480272S43系列串口屏拥有宽屏幕、高亮度、低功耗的优越性能,且使用简单、操作方便,是显示屏终端的最佳选择之一。ZTM480272S43系列串口屏集4.3寸触摸真彩屏、简易串口指令控制功能于一身,内置中英字库,支持大容量存储图片数据,为用户提供更为多样性、实用性的显示终端平台。

2.4 USB硬件接口

通用串行总线(USB)为4线总线,支持一个主机与一个或多个外设之间的通信。主控制器通过一个基于令牌的协议为连接的设备分配USB带宽。USB总线支持设备的热插拔与动态配置。主控制器启动所有的事务处理。

LPC1700系列Cortex-M3微控制器的USB设备控制器使能与USB主控制器之间的全速(12Mb/s)数据交换。

2.5 UDA1380模块

UDA1380是Philips公司的一款经济实用型立体声音频编码解码器[5],用于实现模拟音频信号的输入采集(音频AD)和数字音频信号的模拟输出(音频DA),并通过I2S数字音频接口,实现音频信号的数字化处理。具有低功耗、低电压、高保真、宽动态范围和低失真的高品质特性,广泛应用于便携式多媒体立体声音响设备、笔记本电脑、手机及计算机音频信号处理[6]。

LPC1700系列微处理器与UDA1380芯片通过L3总线接口完成以下控制功能:芯片复位、电源控制、模数转换的增益开关、模数转换的极性控制、倍速录音控制、静音控制、音量控制、高低音控制、麦克风灵敏度控制及数字AGC自动增益控制,通过I2S接口进行数据传输。图3为UDA130硬件连接原理图。

3 系统软件设计

本系统的软件设计采用C51语言编写,源程序分6个部分,即:SD卡驱动、FatFs文件系统、MP3软解码、I2S总线驱动、串口屏驱动、USB Device驱动[7]。其系统软件流程如图4所示。

4 系统测试

系统调试完成后,可以成功将LPC1768驱动成USB从设备,并通过SPI总线将SD卡配置成移动存储设备,将电脑中的文件保存到SD卡中,图5为USB设备连接界面;可成功从SD卡中读取MP3音频文件,送入CPU解码,然后再将解码后的WAV文件通过UDA1380解码芯片播放出来,图6为音乐播放界面。此外,还添加了图片浏览、MP3设置等功能,图7为该系统主界面。

5 结语

经过对系统的反复测试,发现系统可以安全可靠地运行。其优点如下:①可以实现大容量存储,必要时可以更换任意大小的SD卡;②可以作为普通U盘使用;③系统采用MP3软件解码技术,方便进行软件升级并降低硬件成本;④采用了双缓冲技术,实现了实时解码播放;⑤使用了触控技术,更好地实现了人机交互。缺点如下:①作为U盘使用时,SD卡采用的是SPI总线,读写速度慢;②采用MP3软解码占用大量的CPU内存。

参考文献:

[1] 杨明极,陈方具,吴学君.嵌入式系统中SD卡的FAT32文件系统的设计[J].电声技术,2010,34(4):3639.

[2] 周立功.深入浅出出CortexM3——LPC1700[M].北京:北京航天航空大学出版社,2011.

[3] 张恒.基于AT89S52和FAT16的SD卡读写系统设计[J].单片机与嵌入式系统应用,2009(8):5358.

[4] 刘燕,黄晓革.基于SPI总线的嵌入式音频系统设计[J].电声技术,2008,32(9):2325.

[5] 李宁,熊刚,徐良平.基于CortexM3的MP3播放器设计[J].单片机与嵌入式系统应用,2009(2):4860.

[6] 孙天亮,陈伟元,王豪才.基于ARM核的音频编解码器单器件系统[J].单片机与嵌入式系统应用,2001(10):6871.

[7] 刘淼.嵌入式系统接口设计与驱动程序开发[M].北京:北京航空航天大学出版社,2006.

(责任编辑:孙 娟)