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

最新更新时间:2013-08-19来源: 21ic关键字:EFSL  嵌入式  MP3  播放器 手机看文章 扫描二维码
随时随地手机看文章

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

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

1 硬件设计

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

图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.1 开发环境搭建

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

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文件

存放在。MP3Playerefslinc目录下的debug.h文件支持半主机调试功能。通过相关代码可以设置所有调试消息并通过JTAG调试器 的I/O终端窗口进行显示。通过。MP3Playerefslconf下的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所示。

图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 调试终端显示信息

5 结语

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

关键字:EFSL  嵌入式  MP3  播放器 编辑:探路者 引用地址:基于EFSL的嵌入式MP3播放器设计方法

上一篇:基于SOPC的脑电信号实时处理
下一篇:采用CPLD的臭氧电源控制系统的软硬件设计

推荐阅读最新更新时间:2023-10-12 22:25

嵌入式智能家庭网关的设计
0 概述 家庭网络接入 Internet 目前主要通过PC机接入Internet和采用嵌入式产品通过 以太网 控制器接入Internet两种方式。前者优点是明显的,如灵活性、大量现有的可用的软件环境和高级的用户接口及软件工具。但是对于智能家庭网络来说,网络的使用者希望能方便快捷地获得服务,所需熟悉的操作要尽可能地少,并且在任何地方都能对家中设备进行监控;而PC不能随意移动,对设备的控制就会受到局限。因此,目前在智能家庭网络中,网关产品的设计主要采用嵌入式系统。 一个智能家庭网关可以看成是一个信息处理系统,组成系统的各单元就是连接在网络各节点的设备。控制平台一方面辅助不具备信息化条件的设备实现信息化,即提供信息处理的
[单片机]
<font color='red'>嵌入式</font>智能家庭网关的设计
嵌入式无线实时图像传输系统设计方案
  1 引言   随着信息化,智能化,网络化的发展,嵌入式系统技术也将获得广阔的发展空间。进入20 世纪90 年代,嵌入式技术全面展开,目前已成为通信和消费类产品的共同发展方向。在通信领域,数字技术正在全面取代模拟技术。毫无疑问,模拟图像采集系统必将被数字图像采集系统所代替,其中的嵌入式图像采集系统由于其优越的性能越来越受到人们的关注。同时,在技术进步推动信息传递日趋无线化的背景下,无线图像传输也就成为了图像传输的前沿领域。对于边远的和可移动的系统,无线网络接入传输数据方式显得十分重要。本文介绍了采用nRF2401 作为传输手段的无线图像传输系统。该系统由无线照相机和图片接收器两部分组成,具有视频图像采集、压缩、传输和存储等
[单片机]
<font color='red'>嵌入式</font>无线实时图像传输系统设计方案
关于ARM嵌入式系统的学习步骤
简介: 对于很多新手来说,不知道ARM嵌入式系统如何入门?怎样一步步的去学习?本文就为大家介绍关于ARM嵌入式系统学习步骤,希望对你会所帮助。 1.做个最小系统板:如果你从没有做过ARM的开发,建议你一开始不要贪大求全,把所有的应用都做好,因为ARM的启动方式和dsp或单片机有所不同,往往会遇到各种问题,所以建议先布一个仅有Flash,SRAM或SDRAM、CPU、JTAG、和复位信号的小系统板,留出扩展接口。使最小系统能够正常运行,你的任务就完成了一半,好在arm的外围接口基本都是标准接口,如果你已有这些硬件的布线经验,这对你来讲是一件很容易的事情。 2.写启动代码,根据硬件地址先写一个能够启动的小代码,包括以下部分:
[单片机]
基于USB-Host的大容量数据采集系统的设计
引言 随着移动数据存储领域的日益扩大,在嵌入式系统中实现USB主机功能,以实现利用USB存储设备进行数据存储的需求变得日益迫切。U盘作为新型移动存储设备,以体积小、速度高、抗震动、通用性强的特点倍受青睐,因此,在数据采集系统中开发出嵌入式USB主机控制U盘作为数据存储器,将具有良好的实用价值和应用前景。 1 USB大容量存储设备协议分析 基于USB的大容量数据采集系统的设计,主要是要实现嵌入式USBHost。要想设计出能直接读写U盘的嵌入式USBHost,就必须理解USB大容量存储设备协议。目前USB大容量存储设备软件结构如图1所示。 图1 USB大容量存储设备软件结构示意图 图1中
[缓冲存储]
嵌入式系统学习——STM32之外部中断
STM32与51相比,多了很多资源,其中外部中断就是被扩展了很多。51的外部中断只有2个,但是STM32不是,STM32的每个IO都可以作为外部中断输入。 STM32的中断控制器支持19个外部中断/事件请求: 线0~15:对应外部IO口的输入中断。 线16:连接到PVD输出。 线17:连接到RTC闹钟事件。 线18:连接到USB唤醒事件。 每个外部中断线可以独立的配置触发方式(上升沿,下降沿或者双边沿触发),触发/屏蔽,专用的状态位。 IO口外部中断在中断向量表中只分配了7个中断向量,也就是只能使用7个中断服务函数: 从表中可以看出,外部中断线5~9分配一个中断向量,共用一个服务函数,外部中断线10~15分配一个中
[单片机]
<font color='red'>嵌入式</font>系统学习——STM32之外部中断
汽车智能MP3无线发射器的设计
引言 汽车MP3无线发射器可以将MP3播放器内存储的音乐通过FM广播方式发送,再通过FM调频收音机接收,通过汽车音响播放。本文采用单片机AT89C52及数字锁相环MC145152等芯片设计了汽车MP3无线发射器,从仿真结果与目标样机的运行情况来看,均达到了预期效果。 系统组成 图1为汽车智能MP3无线发射器的系统组成框图,它主要由MC145152、MC1648组成数字锁相环频率合成器,采用变容二极管MV209调频。用户可使用简易的按键,通过单片机AT89C52控制并监测发射频率,同时利用液晶显示器显示反馈信息。另外,可使用串行口实现单片机与计算机的通信,从而通过计算机对发射机进行智能控制。音源不仅可以从车载MP3播放器
[应用]
基于ARM的嵌入式服务机器人控制器的研究
   1 引言   随着人口老龄化进程的加快,更多老年人,尤其是地震和疾病致残的残疾人,都需要照顾。基于此,这里提出一种基于ARM的嵌入式服务机器人控制系统设计。该服务机器人的控制系统是机器人的神经中枢,因而其设计是机器人研究的核心。该控制系统通常以MCU、 DSP等为核心,采用上、下位机二级分布式结构。其中上位机一般为PC机,下位机为单片机或DSP等微控制器。但随着移动机器人的智能化,控制方法的发展,所需计算量增大,一般的单片机等处理器很难完成控制要求。而基于ARM的嵌入式服务机器人的控制器采用分层与模块化结构,充分体现可扩展性、可移植性的设计原则.同时具有低成本、低功耗、体积小巧、可靠性高、智能化高以及通用性等特点。
[嵌入式]
CAN总线与以太网嵌入式网关电路设计的两种方法对比分析
本文从以太网与工业现场总线的互联出发,主要介绍了CAN总线与以太网嵌入式网关电路的设计与实现,本文对比了CAN 和以太网相连的嵌入式网关设计的两种方法,并从硬件结构和软件结构两方面进行了阐述。 目前,对于CAN 和以太网相连的嵌入式网关设计主要有两种方法:一种是低档MCU 加接口芯片的设计方法,另一种是高档MCU 加EOS(实时多任务操作系统)再加接口芯片的设计方法。因CAN 只采用了ISO/OSI 参考模型的一、二层,协议相对简单,比较适合用于低成本、速率要求不高的离散控制系统。从合理的成本和有效利用处理能力这两方面考虑,该设计采用低档MCU 加接口芯片的方法,其硬件框图见图。 图1 主控芯片及以太网接口模块 根据要求,
[单片机]
CAN总线与以太网<font color='red'>嵌入式</font>网关电路设计的两种方法对比分析
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved