微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Cortex M3的音频播放器的设计

基于Cortex M3的音频播放器的设计

时间:09-12 来源:互联网 点击:

随着科学技术的发展,MP3这一产品的技术越来越成熟,MP3现在以外形精致小巧,功能的的多样性,且抗震省电等特点得到了广大消费者的喜爱,且MP3歌曲可以随时自由下载,更是将MP3的使用达到极大的普及,丰富了人们的文化生活。

系统采用TI公司新推出的Cortex M3系列微控制器LM3S9B96。该芯片使用高性能的ARM Cortex-M3 32位的RISC内核,工作频率为80 MHz。完全满足音频文件的读取、解码、播放等功能。改进了市场中流行的MP3由于播放文件格式单一、人机界面的单调的缺陷。

1 系统总体设计

系统总体设计如图1所示,以TI公司的微处理器LM3S9B96为控制核心,通过读取SD卡*.mp3、*.wma、*.wav等格式的音频文件,然后通过音频解码芯片VS1003实现解码,最后通过外部音频功放完成放大,推动扬声器工作。LCD触摸屏主要完成所播放歌曲名称的显示和人机交互功能。系统由ARM微处理器控制核心、音频解码模块、功率放大模块、SD卡存储模块、人机交互模块等组成。系统框图如图1所示。

2 硬件系统设计

2. 1 Cortex M3 LM3S9B96微处理器

LM3S9B96是TI公司最新推出的基于ARMv7体系架构的处理器核,主要实现对SD卡音频格式文件的读取、然后将音频文件发送到外部音频解码芯片VS1003。人机交互功能中的触摸屏控制所包括的操作系统移植及应用软件的执行均是通过该处理器来完成。

2.2 音频编解码器及与控制器的硬件连接

音频解码芯片VS1003采用芬兰VLSI公司出品的一款单芯片的MP3/WMA音频解码芯片,其内部集成一个高性能低功耗的DSP处理器核,来实现将SD卡里的音频数据流读出并进行解析、转化成模拟信号输出。同时,微控制器通过SPI接口发出命令控制字实现对VS1003芯片的功能控制,如初始化、暂停、音量控制、播放时间的读取等。其与LM3S9B96的硬件连接连接如图2所示。

2.3 SD卡与微控制器LM3S9B96的硬件连接

系统中SD卡通过SPI接口与LM3S9B96进行连接,其主要实现MP3音频文件的存储,其电路连接如图3所示。

2.4 触摸屏模块功能与微控制器LM3S9B96的硬件连接

LCD触摸屏采用SSD1298驱动控制器和ADS7843触摸屏控制芯片实现LCD的显示和触摸功能。其显示功能主要包括:MP3文件名的显示、歌词显示功能及一些附助信息,主要完成人机对话。触摸屏控制芯片ADS7843 LCD触摸屏和LM3S9B96的电路连接、如图4所示。

2.5 LCD触摸屏与μC/GUI

μC/GUI是一种嵌入式应用中的图形支持系统。其适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。为了方便对LCD触摸屏的控制,在LCD中绘制各种窗口,做出友好的人机互动界面,方便客户的操作,在μC/GUI中提供了内存管理、视窗管理器、各种常用的控件、字体管理、文本输出、图形绘制等功能,开发者借助辅助开发工具很容易生成用户所需要的图形界面,大大缩短了开发时间。

其运行界面如图5所示。

3 系统软件设计

系统软件设计分为三部分。

1)μC/OS—II操作系统。μC/OS—II是一个支持多任务的操作系统,本次设计将创建3个任务,触摸屏任务、图形界面任务和音乐播放任务,系统移植的μC/OS—II来实现任务的调度、任务切换和信号量处理。

2)μC/GUI图形用户接口,μC/GUI是一种嵌入式应用中的图形支持系统,本设计中用移植了μC/GUI来实现音频播放器的操作界面。

3)数据存储方面,播放MP3时,系统采用FatFs文件系统读取存储在SD卡中的MP3数据。

3.1 μC/OS-Ⅱ操作系统

μC/OS—II是嵌入微处理器的操作系统,它是实时操作系统,具有任务管理,文件管理,设备管理的底层支持。μC/OS—II具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2 KB,它适用于多种微处理器,微控制器和数字处理芯片,已经移植到了几乎所有知名的CPU上。要使μC/OS-Ⅱ能正常运行,处理器必须满足以下要求:

1)处理器的C编译器能产生可重入代码。

2)处理器支持中断,并且能产生定时中断(通常在10~100 Hz之间)。

3)用C语言就可以开关中断。

4)处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈。

5)处理器有将堆栈指针和其它CPU寄存器读出和存储到堆栈或内存中的指令。

本系统主要是将μC/OS—II移植处理器上需要修改3个ARM体系结构相关的文件:OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C进行了操作。移植包括以下几步:

1)用#define设置一个常量的值 (OS_CPU.H)

2)声明10个数据类型 (OS_CPU.H)

3)用#define声明3个宏 (OS_CPU.H)

4)用C语言编写6个简单的函数 (OS_CPU_C.C)

5)编写4个汇编语言函数 (OS_CPU_A.ASM)

3.2 μC/GUI的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top