全部博文(2005)
分类:
2009-12-14 12:24:17
系统功能分析与结构设计
多通道专业MP3播放器是专为满足公共语音广播市场的需求而设计的,其主要功能包括:
(1)音频解码和播放功能;
(2)通过USB接口与大容量外部存储设备进行数据传输;
(3)操作界面统一管理功能;
(4)多通道播放功能。
为了提高系统运行效率,实现多通道播放管理,本系统选用三星公司的S
系统硬件设计
作为一种典型的,其开发的优点在于软硬件的可裁剪性[2],在确保有一个稳定的最小系统以后,再对外围的设备进行扩展。此多通道专业MP3播放器的核心芯片S
MP3解码电路设计
本系统解码部分的硬件采用了ST公司的STA013解码芯片以及AKM的AK4393芯片。STA013是一款优秀的MP3解码芯片,它通过IIC总线来传输控制信息,通过串行数据线接收语音数据。AK4393是一款高品质的立体声DAC芯片,支持24bit/96KHz取样,采用 “复合比特”技术使芯片的解码更为快速和准确。
解码部分与S
此外,由于实现多通道的播放形式,所以需要在设计过程中提供多套相同的解码芯片和DAC。
多通道功能的实现
系统多通道播放采用的基本方法是(以四通道为例):当系统上电以后,解码控制信号为了实现对每一个解码通道的具体工作状态控制,通过采用外接一个四路转换开关(CD4066),控制各路通道解码芯片的工作状态。转换开关四路通道的输入部分连接CPU的IIC总线的IICSDA,通过与CPU相连的多个控制引脚(CTRL1,2,3,4),确定控制数据的传输方向。四路通道的时钟信号则直接连接在CPU上,只有控制数据传输时才发生作用。
在播放过程中,CPU实时响应各通道传输数据的请求,选通该路的解码芯片,被选通的解码芯片对从总线上获取的mp3文件数据进行解码,而未被选通的解码通道则忽略总线上的音频数据。当数据请求的中断请求信号由高变低,系统开始响应下一次数据请求。通过这种各通道交替工作的方式,实现四通道同步播放的功能。
系统软件设计
系统软件包括操作系统、驱动程序及播放器应用程序3部分。
操作系统的实现
在中,通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成。BootLoader的任务是初始化芯片和主板,系统选用的是U-Boot-
驱动程序的设计
本系统所编译的μClinux内核中包含有USB、LCD等驱动程序,只要根据需要适当的修改便可以应用。但是对于MP3解码部分芯片的驱动需要自己编写。音频驱动程序实现的主要功能是:
(1)系统启动时可以完成芯片的初始化;
(2)具体操作时可以提供给操作系统合适的软件接口。
音频驱动初始化程序如下:
void STA013_Init(void)
{
if(STA013_SendCommand(RESET_REG,0,0x00)) //复位STA013
STA013_PrintError();
if(STA013_SendCommand(ACT_CON_REG,0,0x00)) //未激活状态
STA013_PrintError();
if(STA013_SendCommand(PWR_CON_REG,0,0x00)) //上电
STA013_PrintError();
if(STA013_SendCommand(FS_CON_REG,0,
I STA
STA013_PrintError();
if(STA013_SendCommand(IF_CON_REG,0,0x02+(0<<6))) //选择16位IIS数据格式
STA013_PrintError();
if(STA013_SendCommand(ANG_CTL_REG,0,0)) // 0x13, 0x12选择DAC
STA013_PrintError(); 和Line In输入模式
if(STA013_SendCommand(DGT_CTL_REG,0,0x00)) // DAC静音
STA013_PrintError();
if(STA013_SendCommand(LHP_VOL_REG,0,0x00)) //左声道音量
STA013_PrintError();
if(STA013_SendCommand(RHP_VOL_REG,0,0x00)) //右声道音量
STA013_PrintError();
if(STA013_SendCommand(ACT_CON_REG,0,0x00)) //数据传送激活
STA013_PrintError();
}
播放程序的设计
作为本系统的一个主要创新点,在多通道部分设计合理且高效的播放程序代码很重要,在这里采用的是将待解码的MP3文件先由USB设备复制到内存的缓冲区,再由缓冲区发送给解码器的方法。播放时,程序会根据每个通道的歌曲信息将MP3文件流从USB设备复制到相应的缓冲区中。其主要实现代码如下:
for(i=0;i<4;i++){
if((dbuf[i]=malloc(BUF_LEN))==NULL){
printf(Allocation %d Error \n, i);
exit(1);
}
}
操作界面的实现
完整的设备需要有一个简洁的操作界面。本系统的操作界面选用MiniGUI软件进行编写,通过对MiniGUI运行模式的选择、MiniGUI的移植[5]以及界面程序的编写,整个操作界面简洁明了,系统在开机后提供了当前时间,以及播放、设置和复位按键,可以直接通过播放键来实现多通道播放功能,通过设置键进行歌曲目录的编排。
结束语
多通道MP3播放器与传统的MP3播放器相比,具有许多优势,可以满足大型公共场所对背景音乐更高性能的需求。多通道MP3播放器可以实现多个音频输出通道同步播放,并可以通过USB接口外挂存储设备实现歌曲的大容量存储。此外,系统还提供了串口、以太网等一系列接口,方便与外部进行数据交换和软件升级。
本文创新点:设计了基于ARM7平台下的多通道MP3播放器,实现了对外接移动硬盘或U盘上的mp3文件进行多通道同步播放。