基于双核单片机的音乐播放系统的研究

2014-10-27 16:33缪贤浩刘凯
无线互联科技 2014年9期
关键词:解码器播放器U盘

缪贤浩 刘凯

摘 要:以基于双核单片机AT89C51SND1C以及K9F5608U,设计并实现了一个MP3播放系统,该播放系统能够实现mp3播放、歌曲信息显示、歌曲选择等功能,操作简单方便,成本低、系统可靠、易于扩展。

关键词:MP3;单片机;AT89C51SND1C

随着嵌入式技术的不断发展,MP3播放器已经在大众生活中越来越普遍。基于单片机的MP3播放器设计包含了很多当今流行的技术。由于各种技术的诞生,MP3播放器设计呈现出多样化的趋势。

1 系统整体设计

本系统主要实现一个MP3播放器的功能,其中包括文件传输和存储功能。为简化设计,降低成本,整个系统主控CPU采用的是双核AT89C51SNDIC,整个系统还包括K9F5608U,电源部分、音频部分、串行通信部分和人机接口部分组成。

2 主要硬件电路设计

本设计的主控CPU自带MP3解码模块,因此本设计主要硬件电路为音频放大以及文件存储模块。

2.1 音频模块

本系统采用的芯片是CS4330,该芯片能够支持48KHz,44.1KHz和32KHz的标准音频数据。音频数据通过SDATA引脚输入,LRCK引脚控制着左右声道以及相应数据的划分,而SCLK为即将输入懂啊缓冲区的数据提供时钟。CS4330没有配置引脚,无需软件配置。

CS4330的数据格式是右对齐的18位数据格式,支持内部以及外部SCLK工作模式,且数据在SCLK信号的上升沿有效,可在软件中通过配置AT89C51SND1C的音频部件,确保正确工作。声音信号将数字音频信息送到芯片CS4330中,再通过TDA2822放大后进入音频输出设备,电路如下图所示。

2.2 文件存储模块

K9F5608U是Nand Flash芯片,韩国三星公司产品。这种Flash芯片被大量的应用在存储设备上,比如U盘、MP3、数码相机等。因AT89C51SND1C没有集成Nand Flash的访问控制器,故只能用单片机I/O口来模拟该芯片的通信时序实现数据的访存。K9F5608U外围电路图如图2所示。

3 系统的软件设计

3.1 软件整体设计方案

根据系统的实际需求,软件可分为主程序、MP3、U盘控制等模块,在U盘控制模块中则有简单的文件系统和Flash读写程序用于U盘的读写。通信模块主要功能是用于调试为加强用户体验,该系统还加入了LCD模块显示歌曲信息,键盘模块用于切换歌曲。

系统从主程序启动后,通过选择单片机的P口中的一个二进制位作为考察位,当它的电平为高电平的时候进入U盘模式,相反则为MP3播放模式。在需要进行程序的调试时,需要借助通信模块从串口输出一些信息。

3.2 U盘控制模块

U盘插入,主机得到U盘描述符后识别出U盘是支持bulk-only的海量存储设备。于是两者就通过bulk端点进行通信,主机和设备的通信过程即传输定义好的数据包的过程。

对于一个USB海量存储设备而言,必须支持三个端点的数据处理。即:单0号端点和双非0端点。在程序结构设计上可以采取中断或者查询的方式,在不影响系统运行速度的情况下,这里采用程序查询的模式进行,即:逐步查询端点0、1、2是否产生中断,若有则执行相应的操作。本设计中端点0、1、2分别用于处理标准的USB,Bulk-In以及Bulk-Out请求[1]。

3.3 MP3播放模块

在每首MP3歌曲开始播放的时候,需要初始化MP3文件,即:从MP3文件的头部提取采样率等信息,通过设置,让采样率与MP3解码器模块中的时钟相匹配。如果开始检测到有标签ID3V2.3的标签头,则获得标签大小后将这些标签帧全部跳过,然后将帧头读取到内存中,根据MP3帧头的格式,分离出MPEG版本和采样率标识来,设置PLL时钟来满足MP3解码器和音频要求。

MP3歌曲的采样率设置好以后,就播放该歌曲。在默认情况下,播放完一首歌曲,主控程序会继续播放下一首歌曲。

在MP3播放程序中,数据是从K9F5608芯片到存储器然后再到解码器的缓冲区中,数据量是相当大的,因此,需要充分考虑到考虑到数据在传输过程中,程序的运行时间要与数据传输时间相匹配的问题,也就是程序的执行效率问题。实际上此类的程序的分析属于按数据流程思考问题的例子。具体地说,不能因为程序运行的效率不够高导致MP3解码器缓冲区填充的数据出现“断点”,声音缓冲区出现断电,播放出来的mp3必然有“断音”的情况出现,这就是因程序设计导致声音杂乱的原因所在。为了保证不出现间断的问题,需要保证MP3解码的速率不能比填充到缓冲区的速率大,不能让解码这个步骤“停止工作”。具体到程序中,从SRAM缓冲区复制到MP3解码器的时间要足够短,能够等待解码器确认信号,然后再进行下次操作。在这个时间里可以处理例如键盘中断服务程序设置标志位的查询与响应,本程序中判断是否暂停。

另外一方面,MP3解码器也不能处于等待状态。与上面的情况相反,在等待的过程中处理太多的事情,最后解码器会出现等待的状况,这样也会影响到声音的播放。另外的一点就是,由于每一级的数据的读取都需要时间,从数据从FLASH中读取的最初阶段需要有一定的的提前量,不能出现解码器要数据才开始读的情况出现。

4 系统的实现

本文对MP3系统的设计进行了深入的研究,并借助AT89C51SND1C芯片设计了一个MP3播放器为例,实现一个MP3播放功能。整个系统由AT89C51SND1C、K9F5608U,供电模块、音频处理模块、串行调试模块部分和其他输入/输出模块组成。

以下是MP3播放器功能正在运行,当前Flash里面存放了四首歌,系统将会不断地循环的播放这四首歌,并能调节音量,音调,曲目的切换操作。

[参考文献]

[1]张景璐,于京,马泽明.51单片机项目教程[M].北京:人民邮电出版社,2010.3:121-139.

[2]陈海宴.51单片机原理及应用:基于Keil C与Proteus[M].北京:北京航空航天大学出版社,2010.

[3]李軍.51系列单片机高级开发指南名[M].北京:北京航空航天大学出版社,2004.

[4]李华,主编.MCS-51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1996.

[5]张毅刚,彭喜元,姜守达.新编MCS-51单片机应用设计[M].哈尔滨:工业大学出版社,2008.

猜你喜欢
解码器播放器U盘
科学解码器(一)
科学解码器(二)
科学解码器(三)
Walkman诞生40周年 索尼适时发布NW-ZX500和NW-A100系列播放器
线圣AudioQuest 发布第三代Dragonfly Cobalt蓝蜻蜓解码器
采用U盘文件冗余方案实现TSP系统的可靠装载
基于STM32的MP3播放器设计
Moon ACE播放器/放大器一体机
播放器背板注塑模具设计
使用Cryptsetup加密U盘