当前位置:首 页 --> 方案设计
以LPC1700为基础的MP3播放器解决方案
发布时间:2011/4/23 22:55:00 来源:恩智浦公司
恩智浦半导体LPC1700系列微控制器
恩智浦半导体微控制器产品部门具备业界最完整产品线:包含简单型微控制器、先进数字讯号控制器(DSC)以及针对特别应用的处理器,恩智浦半导体ARM系列微控制器为使用者提供更多性能产品上的选择,有利于使用者制定合适的外围设备与内存方案组合,满足使用者设计要求。除文中提及以LPC1700 Cortex-M3为例的高端应用外,恩智浦微控制器正展开Cortex-M0全球营销推广活动,详细信息请参阅:www.tw.nxp.com/campaigns/cortex-m0
摘要:本文介绍以恩智浦LPC1700和Helix MP3软件译码库为基础的MP3播放器解决方案。此方案充分发挥LPC1700芯片的高性能及丰富的外围设备,并加入USB Host协议堆栈及档案系统,使其可播放USB闪存和SD/MMC卡中大部分格式的MP3档。
一 导言
LPC1700系列为恩智浦半导体以第2代ARM Cortex-M3核心为基础的微控制器,特别针对高性能低功耗的嵌入式系统应用,其支持最高120MHz时脉速度,最高512K位元FLASH以及64K位元SRAM.其集成丰富的外围设备接口:以太网MAC、USB 2.0 Host/OTG/Device、CAN 2.0B、12位元ADC、10位元DAC、SPI/SSP、I2S、DMA等等。
Fig1.系统模块图
Helix MP3软件解码库可解码兼容于MPEG格式的MP3,并同时达成浮点和定点。其中定点特别针对32位元定点处理器达成最佳化。
本文介绍该方案的软硬件设计,完整的软件代码可至恩智浦半导体官网下载http://ics.nxp.com/support/documents/microcontrollers/
二 系统概述
1.介绍
为快速搭建硬件平台进行系统设计与测试,本方案使用现有的电路板:KEIL MCB1700评估板和ZLG的UDA1380音讯板。图1展示本方案系统模块图。图2展示系统实体照片。
MP3档储存于SD/MMC卡和USB快闪存储器中。SD/MMC卡插于MCB1700评估板上的Micro SD卡插槽,该插槽连接至LPC1700的SPI/SSP接口。USB快闪存储器如USB优盘,插于MCB1700板子上的USB主机埠。
解码后的框架信息透过I2S接口导入UDA1380,将音箱或耳机音源线插于音讯子板的对应座上即可听音乐。
透过2种方法可调节音量:调节音箱与耳机音量,或调节MCB1700电路板上的电位计。全套系统由单一USB电缆供电(+5V)。
2.特性
本系统具备以下特性:
●支持MPEG1/2/2.5 Layer 3 MP3.●支持固定位元率、变化位元率以及自由位元率模式。
●支持播放SDC/SDHC/MMC卡中的MP3并支持FAT12/16/32与长档名。
●支持播放USB快闪存储器中的MP3并支持FAT16.●全套方案使用40k位元ROM,50k位元RAM(其中40k位元用于MP3解码)。
三 硬件设计
1.概述
MCB1700评估板和UDA1380音讯板之间的线路连接如图3所示。
2.关于MCB1700评估板
KEIL公司的MCB1700评估板主要用于评估恩智浦LPC1700系列芯片。图4展示该电路板及电路板上的模块。
提醒:
1.跳线D+和D-必须置于「HOST」。
2.跳线AD0.2必须置于「ON」。
更多关于MCB1700评估板的详细信息请参阅:http://www.keil.com/mcb1700/评估板原理图请参阅:http://www.keil.com/mcb1700/mcb1700-schematics.pdf
3.关于UDA1380音讯板
UDA1380音讯板为ZLG Smart Cortex-M3-1700开发套件中的子板。UDA1380芯片为立体音讯转码器,可广泛应用于MD、CD、MP3等播放器。其支持I2S资料框架格式,集成24位元ADC和DAC,ADC支持8-55kHz取样频率,DAC支持8-100kHz取样频率,支持3线(L3)以及I2C接口控制。图5展示UDA1380音讯板原理图。
四 软件设计
1.软件方块图
图6为本方案软件模块方块图。
下面分别介绍此软件模块。
1.1主程序模块
主程序模块负责全套系统管理与调度主要负责:
●系统初始化。
●于SD/MMC卡和USB快闪存储器中读取MP3文件。
●调用MP3解码库解码。
●播放解码后框架数据。
●状态显示与信息打印。
1.2 Helix MP3解码器
Helix MP3解码器可解码与MPEG兼容的MP3,并可达成浮点和定点,其中定点特别针对ARM处理器达成最佳化,可在任何支持长乘法运算以及长乘法与加法运算的32位元定点处理器上运行。
详细信息请参阅:https://datatype.helixcommunity.org/Mp3dec
1.3 USBHostLite协定堆叠
USBHostLite为简化版的USB Host协定堆叠,可用于连接USB主机埠上的USB大量储存设备。其具备以下限制:
●仅支持控制和批量传输。
●仅支持大量储存设备。
●仅支持FAT16档案系统格式。
●不支持长档名。
●仅能连接位于根目录底下的档案。
详细信息请参阅:http://ics.nxp.com/support/software/usb.host.msc/
1.4 SD/MMC卡档案系统
此方案于SD/MMC卡上使用FatFs档案系统。FatFs被广泛应用于小型嵌入式系统中的FAT档案系统。具备支持FAT12/16/32、长档名、多项物理驱动器与分区等特点。
详细信息请参阅:http://elm-chan.org/fsw/ff/00index_e.html
提醒:FAT档案系统中长档名(Long File Name;LFN)为微软专利,用于商业用途须取得微软授权。
1.5 UDA1380驱动器
UDA1380驱动器提供API函数用于配置与控制UDA1380芯片,使该芯片可接收自LPC1700发送的音讯资料流程。其中主要的2个API函数分别用于初始化及音量控制。
2.软件的达成
图7展示基本软件流程图。
主程序首先进行初始化,包含I2S、UDA1380、UART以及USBHostLite与FatFs档案系统。下一步为读取USB快闪存储器根目录中的指定MP3档案,并自动查找SD/MMC卡中根目录下的MP3档,最后按顺序依序播放。
提醒:本方案采用的USBHostLite仅提供基本档案读写功能,并不支持查找功能,因此将已给予特定名称的MP3(如usb_01.mp3)放于USB快闪存储器根目录之下,播放时可跳过查找直接播放此类MP3.
2.1音讯缓冲区(Audio Buffer)
音讯缓冲区为一长度4608位元的阵列,可存放1个完整解码后的输出框架。解码时,1个音讯缓冲区可放置1个输出框架。播放时,DMA控制I2S将此音讯缓冲区的资料发送至UDA1380.
2.2解码流程
图8为解码流程图。
MP3档首先被加载至读取缓冲区(Read Buffer)中,后续解码即是针对此读取缓冲区资料进行解码。一般而言,可将其设置稍大,以减少档案读取次数。但读取大容量档案内容需较长时间,可能因此导致无法连续播放。在实际应用中,需根据档案读取速度、解码速度、播放速度和可用RAM空间选择合适的读取缓冲区尺寸。
2.3播放流程
图9为播放流程图。
主程序启动DMA传送第1个框架资料后,传送过程即开始,传送完成后即中断DMA.于DMA中断服务程序时,继续发送下一个音讯缓冲区资料。此流程以下列假设为基础:在音讯缓冲区资料完成发送前,另一新框架已解码并放置于下一个音讯缓冲区中。
2.4设计考量
本系统具备2项重要设计考量:
●如何使解码与播放流程保持同步?
●如何确保播放流畅?
针对第一个问题,我们导入全域变量:音讯缓冲区阵列(包含2到3个音讯缓冲区)。其中一个音讯缓冲区用于播放,另外一个或两个用于解码。若所有音讯缓冲区状态皆标志为「满」,解码器则不会被启动。等到其中一个音讯缓冲区资料被播放其状态标志位元为「空」,主程序即启动解码器并将解码后框架放置于「空」的音讯缓冲区里,并将标志位元设为「满」。
针对第二个问题,其设计考量多个因素:档案读取速度、解码速度与播放速度等。
MP3播放一个框架的固定时间为26ms.本方案MCU在100MHz时脉速度下运行,使用Helix MP3解码器的速度约为每框架10ms,此即表示仅有16ms时间供CPU处理所有其它任务。在剩余任务里,读取MP3档案内容并填充读取缓冲区将占用较多时间,因此选择合适的读取缓冲区显得更加重要。
本方案从USB快闪存储器读取4k位元档案资料耗时约8ms.从SD/MMC卡里读取8k位元耗时约2ms.因此从USB快闪存储器读取档案时,我们将读取缓冲区长度设为4k位元,虽然读取SD/MMC卡可相当快速,但受限于可使用的RAM空间,我们将读取缓冲区长度设为8k位元,以确保播放流畅性。
五 测试结果
本方案分别采用2G/4G/8G Micro SD/SDHC卡与2G USB快闪存储器进行测试并取得良好播放效果。
此方案可播放大部分MP3档案,但受限于解码速度,播放320kbps的MP3会造成部分问题。由于USBHostLite仅支持FAT16档案系统,因此最高仅支持2G USB快闪存储器。且USBHostLite不支持长档名,因此USB快闪存储器中MP3名称只能为8.3格式。
图10与图11分别显示播放过程中序列埠输出信息。
六 结论
本文介绍以恩智浦LPC1700和Helix MP3软件解码库为基础的MP3播放器解决方案。此方案充分发挥LPC1700芯片的高性能与丰富外围设备。
随著更多新产品发布,如具备外部存储器汇流排的Cortex-M3 LPC1800系列,以及具备DSP功能的Cortex-M4 LPC4300系列,恩智浦半导体MCU将大幅扩展其在音讯处理应用上的领域。
|
||||||
|
||||||