基于嵌入式文件库的嵌入式MP3播放器设计
近几年来,随着数字技术的发展,人们对MP3播放器的要求越来越多元化,制造商在MP3播放器的选型、设计、开发、附加功能和适用领域等方面做了很多努力,设计了多种方案。在处理器速度越来越快、存储容量越来越大的趋势下,产品中数据的存储组织形式和存储器设置需要进行高效合理管理,这正是文件系统的功能。
而开源软件项目嵌入式文件库,依靠其内存需求小、移植简单、完全免费等优点,作为嵌入式文件系统,很适于解决小型单片机存储空间管理与功能扩展的问题。本文基于EFSL文件系统以及ARM平台设计一款新型的嵌入式MP3播放器,具有一定的实用价值。同时为单片机摆脱操作系统束缚,实现单片机多媒体应用提供一种可行性参考方案。
LPC2148是支持实时仿真和嵌入式跟踪的16/32位ARM7TDMI-S微控制器,内嵌512KB高速FLASH存储器,因其功能强大,便于系统以后的升级。
本系统中暂时只用到USB,SPI,SSP接口功能和ADC功能,其他功能的使用待扩展而定。解码模块VS1003内部集成有VS_DSP处理器、立体声音频DAC和立体声耳机放大驱动器等。由于解码与控制芯片分离,所以音质好,控制也比较简单。LPC2148通过其SPI接口对VS1003进行控制。
显示模块采用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模块。
由于定点数字计算量要求非常高,而且扩展的数字指令集只能在32位上运行,所以代码编译也需要32位环境下进行编译,同时需要使用到USB存储器RAM及其堆栈分配.USBRAM一般情况下不运行在LPC214X环境下,但RowleyCrossStudioIDE已经提供了此硬件设备的初始化。Philips_LPC2148_startup.s创建并放置在MP3播放器项目目录,以支持USBRAM设备,还需要在代码中加入堆栈分配代码到USBDMARAM的内存部分。
由于文件初始化需要良好的LPC2148运行环境,需要把LPC2148提高到最大性能,同时需要开启PLL功能,设置IRQ中断管理定时器为0和VPB分频器为1.同时Philips_LPC2148_Startup.s必须包括相关预处理编译指令。要在IDE中设置编译器指令,只需要在项目浏览器窗口选择Philips_LPC2148_Startup.s的文件,然后选择预处理选项卡,并填写预处理器定义此属性。
系统启动后,先初始化硬件模块。由LPC2148读取SD卡的一些基本信息,如容量、扇区大小、FAT表及根目录所在的启始扇区等。通过获得这些信息后,就可以找出SD卡是否有可以播放的音乐文件。