一种基于EFSL的嵌入式MP3播放器设计方法

发布者:ularof不加糖最新更新时间:2014-02-20 来源: elecfans关键字:采用开源软件项目EFSL 手机看文章 扫描二维码
随时随地手机看文章

  引 言

  近几年来,随着数字技术的发展,人们对MP3播放器的要求越来越多元化,制造商在MP3播放器的选型、设计、开发、附加功能和适用领域等方面做了很多努力,设计了多种方案。在处理器速度越来越快、存储容量越来越大的趋势下,产品中数据的存储组织形式和存储器设置需要进行高效合理管理,这正是文件系统的功能。

  而开源软件项目嵌入式文件库(Embedded FlieSystemLibrary,EFSL),依靠其内存需求小、移植简单、完全免费等优点,作为嵌入式文件系统,很适于解决小型单片机存储空间管理与功能扩展的问题。本文基于EFSL文件系统以及ARM 平台设计一款新型的嵌入式MP3播放器,具有一定的实用价值。同时为单片机摆脱操作系统束缚,实现单片机多媒体应用提供一种可行性参考方案。

  1 硬件设计

  系统硬件结构框图如图1所示,整个硬件系统以PHILIPS公司ARM7-TMDI内核的LPC2148为核心处理器,分别控制VS1003解码模块、SD卡接口模块、USB接口模块和人机交互功能模块。

  图1 MP3播放器的硬件结构框图

  图1 MP3播放器的硬件结构框图

  1.1 主控芯片

  LPC2148是支持实时仿真和嵌入式跟踪的16/32位ARM7TDMI-S 微控制器,内嵌512 KB 高速FLASH存储器,因其功能强大,便于系统以后的升级。

  本系统中暂时只用到USB,SPI,SSP接口功能和ADC功能,其他功能的使用待扩展而定。解码模块VS1003内部集成有VS_DSP处理器、立体声音频DAC和立体声耳机放大驱动器等。由于解码与控制芯片分离,所以音质好,控制也比较简单。LPC2148通过其SPI接口对VS1003进行控制。

  1.2 显示模块

  显示模块采用VGS12864E,VGS12864E是128×64行点阵的OLED单色、字符、图形显示模块。模块内置64×64的显示数据RAM,其中的每位数据对应于OLED屏上一个点的亮、暗状态;其指令系统与液晶显示驱动控制器HD61202兼容。本系统通过模拟时序的方式用8位I/O口与OLED模块8位数据总线D0~D7相连,再通过3位I/O口与液晶的指令控制或数据操作位RS、读写控制位R/W 和使能控制位E相连的方式来控制OLED模块。

  1.3 存储模块

  采用SD卡作为存储介质,其优点是容量大、体积小且防振。歌曲全部存储在SD卡中,SD卡工作于SPI模式。通过将LPC2148的SSP设置成SPI功能与SD卡相连接。同时,芯片的其他两个I/O 口分别设置成卡完全插入到卡座中检测引脚和卡是否写保护的检测引脚。

  2 软件设计

  播放器采用四层结构来实现其功能。软件层次结构如图2所示。采用模块化的主要目的是方便实现模块移植性。

  图2 播放软件层次结构

  图2 播放软件层次结构

  2.1 开发环境搭建

  开发环境主要是建立在The Rowley Cross StudioIDE基础上进行EFSL 编译。CrossWorks for ARM1.6 使用GCC 4.1 编译器。安装CrossWorks forARM 1.6软件并导入MP3Player.hzp项目文件。项目文件中已经包含了主板中的文件和设备配置文件。[page]

  Rowley Cross Studio IDE自动加载所有文件后,将显示所有主要文件夹:Audio Render Driver文件夹(包含了DAC音频处理相关代码)、Demo Player文件夹(主要模块,可根据需求对其进行配置和修改)、EFSL文件夹(保存了EFSL嵌入式文件系统,通过此文件系统可以用播放器软件对MMC存储卡中的MP3文件进行读写操作)、EFSL Driver文件夹(保存存储设备基本读写操作驱动程序)、Libmad文件夹(主要编码文件,可根据需求改变相关代码以满足Libmad配置要求)。

  2.2 文件系统配置与编译功能模块

  文件系统配置与编译功能模块进行软件配置和文件系统编译。

  2.2.1 设置项目文件路径

  通过命令行工具,找到项目文件和包含文件。其路径为:

  

  在ARM Flash Release和ARM Flash调试选项窗口的预处理选项卡配置文件中添加MP3Player项目。

  2.2.2 配置编译器

  由于定点数字计算量要求非常高,而且扩展的数字指令集只能在32位上运行,所以代码编译也需要32位环境下进行编译,同时需要使用到USB存储器RAM 及其堆栈分配[5].USB RAM 一般情况下不运行在LPC214X环境下,但Rowley Cross Studio IDE已经提供了此硬件设备的初始化。Philips_LPC2148_startup.s创建并放置在MP3播放器项目目录,以支持USB RAM设备,还需要在代码中加入堆栈分配代码到USB DMARAM 的内存部分。

  2.2.3 Libmad文件配置

  Libmad可以在不同的平台上运行一个库,并为ARM7提供更好的优化。其编译器同样需要设置系统运行环境变量。

  2.2.4 配置EFS文件

  存放在。\\MP3Player\\efsl\\inc目录下的debug.h文件支持半主机调试功能。通过相关代码可以设置所有调试消息并通过JTAG调试器的I/O终端窗口进行显示。通过。\\MP3Player\\efsl\\conf下的config.h配置文件,可以设置RAM 内存使用水平和缓冲区大小。

  2.2.5 配置系统文件

  由于文件初始化需要良好的LPC2148运行环境,需要把LPC2148提高到最大性能(60Hz),同时需要开启PLL功能,设置IRQ 中断管理定时器为0和VPB分频器为1.同时Philips_LPC2148_Startup.s必须包括相关预处理编译指令。要在IDE中设置编译器指令,只需要在项目浏览器窗口选择Philips_LPC2148_Startup.s的文件,然后选择预处理选项卡,并填写预处理器定义此属性。

  2.2.6 编译批处理文件

  要进行编译批处理文件,需要具备两个文件,一个是项目文件MP3Player,一个是针对ARM 的RowleyCross Studio文件Rowley Associates Limited.Cross-Works for ARM 1.6文件中有可以自行批处理文件:

  build_all_debug.bat,build_all_release.bat.

  3 系统流程

  系统启动后,先初始化硬件模块。由LPC2148读取SD卡的一些基本信息,如容量、扇区大小、FAT表及根目录所在的启始扇区等。通过获得这些信息后,就可以找出SD卡是否有可以播放的音乐文件。若有音乐文件,微处理器将通过SPI总线方式读出该文件的音频信息,并将歌曲的码流信息送入到VS1003芯片中,通过VS1003芯片解码以及其内含的高质量的立体DAC和耳机驱动电路,实现MP3歌曲的播放功能,软件系统流程图如图3所示。[page]

  图3 软件系统流程图

  图3 软件系统流程图

  4 调 试

  Main.c文件(源代码略)显示MP3播放器的工作过程。init_IO()函数LPC2148定时器0进行初始化,使之产生周期性的中断,并启动了一些数据结构。周期性中断速率要与解码器数据流一样,然后由efs_init(&efs,″\\″)进行MP3文件调用,若找不到文件则会通过JTAG interface 接口向CrossStudio IDE 传入“Could not open filesystem”参数,否则正常显示文件信息。其文件处理结果显示如图4所示。通过调试显示信息可知能正常显示文件信息。另经过实物制作并测试,此MP3播放器能流畅播放SD 卡中的MP3文件,验证了本设计是正确可行的。

  图4 调试终端显示信息

  图4 调试终端显示信息

  5 结 语

  本文基于开源软件项目EFSL设计了一款MP3播放器,介绍了播放器系统的硬件架构和软件架构以及EFSL相关码源移植和修改。通过CrossWorks forARM 1.6软件调试,验证了设计的可行性。整个设计体现了EFSL码源移植简单、配置方便的优点

关键字:采用开源软件项目EFSL 引用地址:一种基于EFSL的嵌入式MP3播放器设计方法

上一篇:一种基于ARM的数字超声探伤系统设计
下一篇:基于LPC2294的CAN总线主节点设计方案

推荐阅读最新更新时间:2024-03-16 13:36

慧智微电子2021GTI Honorary Award 获该奖中国射频前端公司
2月23日,世界移动通信大会(下称MWC)上海正式开幕,以“和合共生”为主题,大会围绕5G、人工智能、工业互联网、创业创新、毫米波等热点展开,展示整个数字生态系统怎样持续改变人类生活。 值得关注的是,与MWC同期举行的GTI 2021(Global TD-LTE Initiative, TD-LTE全球发展倡议)峰会上,颁发了一年一度的GTI Awards奖项。中国射频前端公司慧智微电子摘得GTI Honorary Award大奖,用以表彰慧智微电子5G高集成度、高性能射频前端系列产品大规模稳定量产,成功助力5G终端全面快速商用。 据介绍,GTI Awards奖项用以表彰全球在4G演进、5G eMBB、M-IoT、创新业务与应
[手机便携]
TPK、GISiPhone OLED订单? 美资提3疑
美系外资指出,市场传出TPK-KY(3673)将拿下2017年iPhone OLED触控模组贴合订单,主因在于三星AMOLED模组贴合良率仍低,不过,美系外资对此保守以对,并提出三项看法。 首先,苹果在2017年第1季底之前,不会确定新版iPhone设计模型和供应商,大多数零组件目前仅提供原始设计,并仍在送样阶段,因此,市场传言指的应是新模型设计进展,而非最终供货状态。 其次,TPK与GIS-KY(6456)过去数年均供应iPad产品模组贴合服务,三星其实也有供货自家Galaxy S7 Edge触控模组产品贴合服务,虽然新款iPhone OLED面板模组将为供应商带来新挑战,但各家在相关领域均有经验。 最后,三星应会是明年苹果iP
[手机便携]
澜起未按时提交年报遭纳斯达克牌警告
    北京时间4月23日晚间消息,澜起科技(Nasdaq:MONT)今天宣布,该公司4月16日接到来自纳斯达克(4126.97, -34.49, -0.83%)市场的邮件称,由于该公司未能按时向美国证券交易委员会提交截至2013年12月31日的Form 10-K年报,根据纳斯达克上市规则5250(c)(1),该公司不符合继续在纳斯达克上市的要求。   澜起科技3月31日提交了Form 12b-25年报推迟提交通知。通知中称,在公司审计委员会评估Gravity Research对该公司营收造假的指控完成前,其Form 10-K无法完成。   根据纳斯达克上市规则5101条,纳斯达克对澜起科技进行了评估,并要求该公司在6月2日之前提交
[手机便携]
msp430printf函数简单移植
这几个月都在做一个基于TCS34725的RGB颜色传感器的工程,我使用的主控是MSP430,平时调试的时候用485总线发送到上位计(电脑或上层主控机),开始直接用串口发送函数直接发送,但是很多数据显示超级不方便,比如浮点数和有特地格式的数据流,先前都是自己用串口发送函数组一函数就是调用了int putchar(char *) 函数,于是我花了几分钟写了一个putchar函数,已使用,还真的成功了…….,想想先前傻逼的一个一个的构造格式,转化数字为字符串,现在终于可以使用printf函数了…. int putchar(int ch) { if (ch == 'n') { RS485Send
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved