当前位置:首 页 --> 方案设计
以LPC1700为基础的MP3播放器解决方案
发布时间:2011/4/23 22:55:00 来源:恩智浦公司
在线咨询:
给我发消息
李湘宁 2850985550
给我发消息
张代明 3003290139
给我发消息
姚红霞 3003214837
13713728695

 

恩智浦半导体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将大幅扩展其在音讯处理应用上的领域。
 
 
    您可能对以下产品感兴趣  
产品型号 功能介绍 兼容型号 封装形式 工作电压 备注
 
深圳市永阜康科技有限公司 粤ICP备17113496号 服务热线:0755-82863877 手机:13242913995