基于STM 32F103VCT的嵌入式媒体播放器设计

2011-11-07 08:36:10
湖南工业职业技术学院学报 2011年5期
关键词:音频文件存储器解码

卢 贶

(武汉软件工程职业学院,湖北 武汉 430205)

基于STM 32F103VCT的嵌入式媒体播放器设计

卢 贶

(武汉软件工程职业学院,湖北 武汉 430205)

STM 32F103VCT是意法半导体基于Cortex-M 3内核的处理器,性价比高。利用该处理器内置SPI接口控制器,对SD存储卡和I2S芯片进行控制,同时依靠处理器较高的工作速度,执行MP3软解码程序,即可完成MP3播放器系统设计。该系统平台还可根据其他需求,方便的进行功能扩充。

STM 32F103VCT;MP3播放器;SD卡;系统设计

概述

STM32系列32位闪存处理器是意法半导体ST基于ARM Cortex-M3内核的处理器。STM32系列产品得益于Cortex-M3在架构上进行的多项改进,包括提升性能的同时又提高了代码密度的Thumb-2指令集,大幅度提高的中断响应,而且所有新功能都同时具有业界最优的功耗水平。

本系统没有采用MP3专业芯片,而是根据各个相对独立的功能模块进行设计,建立一个系统设计平台,便于以后的功能扩展。在该平台上设计的MP3功能,要求支持WAV和MP3两种音乐文件的播放,使用软解码方式实现,另还要支持SD卡读写,通过ISP方式来实现MP3播放器固件的下载与更新,能够使用USB为系统供电,支持128*64点阵LCD显示屏。

1.系统设计方案

处理器选型考虑比较常使用的ARM7,ARM9,和Cortex-M3内核处理器。若选择ARM9来进行设计,性价比不高,而Cortex-M3在性能上比ARM7有很多优势,而且Cortex-M3内核系列处理器逐渐占据微控制市场主流,同时价格相对便宜,所以选择以Cortex-M3内核的处理器作为主控芯片。目前市场上比较常见的Cortex-M3为德州仪器(TI)LM3S系列和意法半导体ST的STM32。本系统中,需要芯片必须具有至少一个SPI接口来驱动SD卡和一个I2S驱动音频解码芯片,因此确定选择意法半导体的STM32芯片。

MP3播放器的系统架构如图一所示。图中处理器读取SD存储卡里的MP3音乐文件后对MP3数据做软解码,将解码后的数据通过I2S总线传输至音频DAC芯片做D/A转换,再送至耳机听筒。图中SPI总线控制音频DAC芯片的参数实现音量控制等功能。按键KEY用于输入控制命令,如“播放/暂停”、“上一曲”、“下一曲”等。LED指示灯用于指示系统当前的状态。LCD点阵显示器说明正在播放的歌曲名称和序号等信息。其它一些接口,如RS232串口、JTAG接口以及USB接口等不是系统运行时必需的,所以未在图中列出。

图一 MP3系统设计方框图

2.系统硬件设计

系统由微处理器STM32F103VCT、SD卡、I2S音频DAC、电源电路、晶振电路、复位电路、RS232串口、功能按键、指示灯、蜂鸣器、JTAG接口以及各种扩展接口组成。

系统使用核心板+母板的形式。核心板包括CPU、晶振、复位电路和驱动模式选择;其他功能在母板上实现。核心板与母板通过两排2.54间距的双排插针与对应插座相连接。使用核心板+母板形式的优点是,以后核心板(即最小系统板:包含了CPU等核心功能)可以单独工作,用于类似项目的验证和调试,使得系统设计非常灵活和方便。

电路板PCB设计时,核心板采用4层板、母板采用2层板方式,即考虑整体成本,又满足对信号完整性等指标的要求。

2.1.处理器电路说明

STM32F103xC/D/E系列处理器带有48/64/64 KB的bit-banded SRAM和256/384/512KB的Flash存储器。为了预留足够的内部存储器容量,同时兼顾性价比要求,系统选择48KB的SRAM和256KB的Flash型号,即STM32F103VCT作为处理器。

该型号使用高性能的ARM⊖CortexTM-M3的32位RISC内核,工作频率为72MHz,内置高速存储器,丰富的增强I/O端口和连接到两条APB总线的外设。处理器包含3个12位的ADC、4个通用16位定时器和2个PWM定时器,还包括标准和先进的通信接口:多达2个I2C接口、3个SPI接口、2个I2S接口、1个SDIO接口、5个USART接口、一个USB接口和一个CAN接口。

STM32F103VCT处理器能工作于-40°C至+105°C的温度范围,供电电压2.0V至3.6V,满足省电模式保证低功耗应用的要求。

这些丰富的外设配置和高性能,是本系统选择STM32F103VCT作为主控处理器的原因。

2.2.内部存储器电路说明

STM32F103VCT内部集成了FSMC模块,即可配置的静态存储器控制器 (FSMC)。其具有4个片选输出,支持PC卡/CF卡、SRAM、PSRAM、NOR 和NAND。

FSMC的功能介绍:

●三个FSMC中断源,经过逻辑或连到NVIC单元;

●写入FIFO;

●代码可以在除NAND闪存和PC卡外的片外存储器运行;

●目标频率fCLK为HCLK/2,即当系统时钟为72MHz时,外部访问是基于36MHz时钟;系统时钟为48MHz时,外部访问是基于24MHz时钟。

Flash中主要用于存放程序和数据,系统所需的固件代码存放在STM32芯片内部的256K存储空间,并在该Flash存储空间中直接运行代码;芯片内部的SRAM作为RAM用于存放代码运行中的临时数据、全局变量、堆栈数据以及音乐文件BUFFER缓冲等,为了保证Flash的存储容量,设计了一个外部Nand Flash的接口,可以自定义焊接64M、128M或甚至更大容量的Nand Flash芯片,以满足实际应用需求。图二所示为微处理器及存储器部分电路图。

图二 微处理器及存储器电路图

2.3.音频DAC接口电路说明

STM32F103VCT处理器内置2个标准的 I2S(IC-to-IC sound)接口,可以工作于主或从模式,这2个接口可以配置为16位或32位传输,亦可配置为输入或输出通道,支持音频采样频率从8kHz到48kHz。当任一个或两个I2S接口配置为主模式,它的主时钟可以256倍采样频率输出给外部的DAC(解码器)或CODEC(编解码器)。使用SPI2作为I2S音频接口与音频DAC芯片相连,音频DAC芯片再与一个耳机接口插座连接;系统中选择音频DAC(解码器)为PCM1770PWR芯片,该芯片是具有耳机放大器的24位低功耗立体声音频DAC(解码器)。电路如图三所示。

图三 音频DAC芯片PCM1770PWR电路图

I2S有多种数据模式,包括标准数据格式输入、I2S音频数据格式输入,左对齐音频数据格式输入和右对齐音频数据格式输入等。图四是I2S模式下PCM1770数字音频接口时序图,其它各种模式的差异参见音频相关资料[2]。

图四 I2S模式下PCM1770数字音频接口时序图

2.4.处理器启动模式配置电路

STM32F103VCT处理器有3种不同的启动模式(BOOT MODE),通过Boot1和Boot0的电平来选择,如表一所示。这3种启动模式是:1)从程序闪存存储器启动;2)从系统存储器启动;3)从内部SRAM启动。

表一 STM32F103VCT启动模式

系统设计带有启动模式选择(BOOT MODE)跳线,使用跳线帽来选择启动方式,所以如图五所示。当选择第二种模式启动时就可以通过串口实现ISP下载。

图五 处理器工作方式配置电路

3.系统软件设计

为了使程序开发更加容易、便于维护,提高系统的稳定性和可靠性,采用嵌入式操作系统μC/OS-II。播放器工作时,主要是响应按键事件以及其他事件,比如串口通信、电池电压低等,因而系统软件设计采用消息循环的事件驱动模式。对输入设备轮询,若有输入,按数据队列原理,遵循先来先响应的原则。

一般常见MP3播放器为简化设计,通常采用硬件解码芯片完成MP3的解码任务,本系统则是采用软解码方式,这是系统软件设计方面的一个重点和难点内容。鉴于篇幅,这里仅说明解码部分的工作原理。

3.1.MP3软解码

系统重点是MP3软解码的实现,通过分析MP3软解码的算法,同时利用开源MP3解码算法程序,设计MP3软解码流程图如图六所示。

图六 MP3软解码流程图

MP3是MPEG-1音频层III的简称,MPEG音频是目前普遍应用的音频压缩标准,其中层III的算法最为复杂,但压缩比最大,效果好,在低码率条件下基本能达到CD的音质效果。MP3解码过程时将MP3编码数据进行霍夫曼解码,然后逆量化到实际的频域幅值,最后经过IMDCT变换和滤波器组完成频域到时域的变换,这里不详细介绍解码细节,仅列出几个重要的MP3解码接口函数。

MPEGDEC_STREAM*MPEGDEC_open(char*filename,MEPGDEC_CTRL*ctrl);

功能描述:打开MPEG音频文件。

参数:filename为待打开的音频文件,ctrl为控制数据解码信息的结构体。

返回值:打开成功,则返回包含数据流信息和解码信息的结构体指针;失败,则返回NULL。

void MPEGDEC_close(MPEGDEC_STREAM*mpds);

功能描述:关闭MPEG音频文件。

参数:mpds指向待关闭的音频文件。

无返回值。

unsigned long MPEGDEC_decode_frame(MPEGDEC_STREAM*mpds,short*pcm[MPEGDEC_MAX_CHANNELS]);

功能描述:为当前打开的音频文件的一帧解码。

输入:mpds只想打开的音频文件。

输出:pcm[]存放解码后的16位音频数据;pcm[0]中存放单声道或左声道或声道1的数据;pcm[1]中存放右声道或声道2的数据。

返回值:返回解码一帧的音频数据数据;返回MPEGDEC_ERR_EOF,则说明当前帧是最后一帧;返回MPEGDEC_ERR_BADFRAME,则说明该帧已损坏。

按照MP3的ID3 V1.0标准定义,MP3文件的最后128字节用来存放标签头、歌曲名、演唱者等信息。为了在LCD屏幕上显示当前播放歌曲的基本信息,给出了一个结构体读取并存放这些信息。歌曲基本信息结构体定义如下:

typedef struct{

char title[32];

char artist[32];

char year[8];

char album[32];

char comments[32];

char*genre;

}Mp3information;

3.2.FAT文件系统

作为媒体播放器,本系统需支持FAT文件系统,以便识别读取SD卡上的音频文件。FAT文件系统的分区有如下几个部分:保留区,存放FAT文件系统的重要参数和引导程序;FAT表,记录簇使用情况;根目录区,记录根目录信息。在uC/OS系统中,可通过应用层函数接口实现对FAT文件系统操作。

这些应用层接口函数有:Get Filelnfo(UINT8*F Info,FileInfo*TempFilelnfo)(获取文件信息);OutPut_RootFileinfo(void)(输出根目录文件信息);DirOr(UINT8 FileAttrib)(判断目录);Get Next Cluster(UINTl6 TempCluster)(获取下一文件簇信息);OutPut-FileCluster(UINTl6 TempStart Cluster)(输出文件簇地址);OutPut-File(UINTl6 Temp StartCluster)(输出文件内容);ShowClusterContent(UINTl6 TempCluster)(输出簇内容)。通过以上函数接口可实现了 OpenDir(UINTl6 TempStartCluster)(目录打开);FileDelete(文件删除);FileDataRead(文件数据读取);FileCreate(UINTl6 Temp-StartCluster,UINT32TempFileLength)(文件创建)等功能。

4.总结

本系统充分利用STM32F103VCT微处理器的功能,硬件上重点介绍了各个模块的设计思路和方法;软件上简单说明了MP3解码过程及给出了相关函数接口。最后测试了各种环境下的工作的性能,其可行性和有效性已得到实验验证,实际应用中也取得良好效果并具有广阔的市场前景。整个系统设计简洁,可靠性高[5],具有很高的性价比。

[1]MAXIM公司.Microprocessor Programmable Universal Active Filters,2002

[2]黄志坚.基于MAX274/275的滤波器设计[J].上海:上海海事大学学报,2004.12

[3]刘建.可编程开关滤波器及其应用[J].杭州:杭州电子工业学院学报,2003.12

[4]马小虎.多媒体数据压缩标准及实现[M].北京:清华大学出版社,1996

[5]李伯成.微型计算机原理及接口技术[M].北京:清华大学出版社,2005

Design Embemed M edia Player based on the STM 32F103VCT

LU Kuang
(Wuhan Vocational College of Software and Engineering,Wuhan 430205,Hubei)

STM32F103VCT,which is cost-effective,is Cortex-M3 core-based processors from STMicroelectronics.The built-in SPI interface controller in theprocessor canbeused tocontrol the SDmemory cardsand I2Schip,while theprocessor implement MP3 decodingsoftwareprogram relyingonahigh processing speed,thus MP3 player system design iscompleted.Thesystem platform can conductfunctional expansion inaccordancewithother requirements.

STM32F103VCT,MP3 player,SDmemory cards,system design

TM 571.6

A

1671-5004(2011) 05-0019-03

2011-9-26

本文为武汉市属高校科研重点课题(武教高[2010]10号)(课题编号:2010022)和湖北省教育科学“十一五”规划2010年度立项课题(鄂教办函[2010]28号)(课题编号:2010B325)《职业教育DSP技术课程教学平台研发》之阶段性研究成果。

卢贶(1973-),男,湖北武汉人,武汉软件工程职业学院高级工程师,研究方向:电子技术。

猜你喜欢
音频文件存储器解码
《解码万吨站》
静态随机存储器在轨自检算法
解码eUCP2.0
中国外汇(2019年19期)2019-11-26 00:57:32
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
基于Android手机的音频文件取证技术研究
提取APP中的音频文件
电脑爱好者(2015年5期)2015-09-10 07:22:44
数字水印在音频文件篡改检测中的应用
存储器——安格尔(墨西哥)▲
环球时报(2014-06-18)2014-06-18 16:40:11
基于Nand Flash的高速存储器结构设计