基于sd卡的mp3播放器毕业设计_第1页
基于sd卡的mp3播放器毕业设计_第2页
基于sd卡的mp3播放器毕业设计_第3页
基于sd卡的mp3播放器毕业设计_第4页
基于sd卡的mp3播放器毕业设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于SD卡的MP3播放器设计摘要随着电子产业的迅速发展,各种袖珍型消费类电子产品应运而生,MP3便是其中的一员。但是,自从2005年以后,MP3的销售开始有所下降。对于开发一种成本、耗能更低,性能更高的MP3播放器取代现有产品,改善销售下降的趋势已变得刻不容缓。本次设计主要针对市场上MP3的容量及播放格式有限等问题加以设计,可方便进行SD或MMC卡等微型存储器的容量扩展,并且播放MP3、WMA、WAV、MIDI等格式文件。使用者只需要将MP3等格式文件放到存储卡中,便可以播放这些音乐。本设计支持重低音、环绕音音效。本设计可以作为车载音响,也可以用于家用播放、办公场合或便携设备等。本论文首先针对基于SD卡的MP3的播放器整体设计加以研究和介绍,并讨论系统软硬件的选择,及具体开发调试环境;然后,深入介绍了系统设计方案及其实现,并着重研究了SD卡、FAT格式、解码芯片及其软件驱动的设计;最后,详细介绍了性能优化等方面的工作及其开发前景。本设计在ATMEL公司生产的ATMEGA32单片机上实现并取得了较好的效果。关键词MP3播放器,AVR单片机,SD卡,音频解码,FAT分析THEDESIGNEDOFMP3PLYERBASEDONSDCARDABSTRACTWITHTHERAPIDDEVELOPMENTOFELECTRONICSINDUSTRY,VARIOUSMINICONSUMERELECTRONICSPRODUCTSHAVEEMERGED,MP3ISONEOFTHEMHOWEVER,SINCEAFTER2005,MP3SSALESBEGANTODECLINEFORTHEDEVELOPMENTOFACOST,LOWERPOWERCONSUMPTION,HIGHERPERFORMANCEMP3PLAYERTOREPLACETHEEXISTINGPRODUCTS,IMPROVESALESDECLINEHASBECOMEIMPERATIVETHEARTICLEISMAINLYAIMEDATTHEMP3SCAPACITYONTHEMARKETANDPLAYFORMATLIMITEDANDSOONTOBEDESIGNEDTOFACILITATEMICROSDORMMCMEMORYCARDS,THECAPACITYEXPANSION,ANDPLAYMP3,WMA,WAV,MIDIANDOTHERFILESUSERSONLYNEEDTOPUTMP3ANDOTHERFORMATFILESINTOTHEMEMORYCARD,WILLBEABLETOPLAYTHEMUSICTHISDESIGNSUPPORTSHEAVYBASS,SURROUNDSOUNDAUDIOTHISDESIGNNOTONLYCANBEUSEDASCARAUDIO,BUTALSOCANBEUSEDFORHOMEPLAYING,OFFICEOCCASIONS,ORINPORTABLEEQUIPMENTINTHISPAPER,FIRSTOFALLFORTHESDCARDBASEDMP3PLAYERTOSTUDYTHEOVERALLDESIGNANDPRESENTATION,ANDDISCUSSTHESYSTEMHARDWAREANDSOFTWARECHOICES,ANDSPECIFICDEVELOPINGANDDEBUGGINGENVIRONMENTANDTHENINSIGHTINTOTHESYSTEMDESIGNANDITSIMPLEMENTATION,FOCUSINGONTHESDCARD,FATFORMAT,DECODERCHIPANDSOFTWAREDRIVENDESIGNFINALLY,THEDETAILEDPERFORMANCEOPTIMIZATIONASPECTSOFTHEWORKANDITSDEVELOPMENTPROSPECTSTHISDESIGNPRODUCEDBYTHEATMELSMICROCONTROLLERATMEGA32TOACHIEVEANDHASACHIEVEDGOODRESULTSKEYWORDSMP3PLAYER,AVRMICROCHIPUNIT,SDCARD,AUDIODECORDE,FATANSYSLY四川农业大学学位论文原创性声明本人郑重声明所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。学位论文作者签名郑林日期2009年11月26日四川农业大学学位论文版权使用说明本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权四川农业大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。保密,在年解密后适用本授权书。本学位论文属于不保密。请在以上方框内打“”)学位论文作者签名郑林指导教师签名许丽佳日期2009年11月26日日期2009年11月26日第一章绪论11基于SD卡的MP3概述111基于SD卡的MP3系统组成基于SD卡的MP3播放器主要由主控制器、SD卡、解码芯片、键盘、显示器等五部分组成。其基本框架如下图所示。显示模块输入模块SD/键盘控制模块SD卡解码器输出模块图11基本框架图卡解码器输出模块1控制模块控制模块是整个系统的核心。主要完成对系统中各种芯片的输入、输出控制,也是实现数据交换、软硬件接口的中心模块。2解码模块这是系统中又一重要模块。其主要功能是实现对数据进行处理并输出模拟信号驱动耳机发声。3输入模块此模块可大致分为键盘部分和SD卡部分。键盘部分主要用来控制对MP3的操作。SD卡部分主要是对SD卡的读取。4输出模块此部分主要包括音频输出、显示输出。音频输出主要会用到一些模拟电路,对电路进行去噪等。显示输出主要是现实系统状态显示以便我们对其操作。112基于SD卡的MP3播放器的特点在半导体行业中,消费类电子是近年来发展最迅猛的一个领域。2006年消费类电子在中国MCU市场的需求所占份额超过了百分之四十1。现在MP3技术已基本成熟,一般MP3都采用专用DSP芯片和集成的数据程序存储器。集成数据存储器优点是成本低廉,但是,这样却无法方便的进行容量的扩展。因此,本次论文在于设计出能够用SD或CF卡作为音乐存储介质的存储器,从而,使MP3的容量能够方便地得到扩展。随着现在存储器微型化快速发展,无法扩展容量的MP3已经很难满足人们的需求。虽然现在一些MP3容量已经达到2G、4G甚至8G。但是,由于其容量无法扩展,为用户以后的使用造成了极大不便。当用户想要扩展容量时,不得不再换一个新的MP3。这样就造成了用户成本上的增加,会使用户觉得得不偿失。而SD卡MP3的出现则可以解决用户的这一烦恼。这也是本次设计的优势所在。另外,MP3为了达到音质效果的完美,往往采用高档DSP器件作为专门的解码播放芯片,这样虽然在效果上取得较大的突破,但是,由于MP3格式本身的限制,因此,即使尽可能提高系统性能和效果也会有一定限制,不可能无限制地提高,而且这些提高对于成本来说是得不偿失的。所以,这类MP3价格是一般MP3的好几倍。因此,本次论文并不采用这种DSP器件作为MP3载体,而是采用一般的单片机控制和MP3格式解码芯片实现。由于社会上的大多数人群都属于低端消费者,也并不是专业的音乐欣赏者,他们对音乐的要求并不高。因此,此次设计的播放SD卡数据的MP3能够适合于大多数人群。12课题研究的背景及意义121课题研究的背景便携式音乐播放器的历史从1979年SONY的WALKMANTPS12随身听的问世开始。这台磁带机音乐系统开启了个人娱乐市场的大门,在此之前,人们只能呆在家里用笨重的立体声录音机欣赏音乐2。至今,便携式音乐播放器产品已经经历了磁带机、CD机、MD播放器、MP3播放器四个阶段3。1980年,索尼和飞利浦共同制定了数字音频光盘格式的标准,光盘直径为12厘米,采样频率441K,比特率14112KBPS,16位音频数据,CD的音轨可以说几乎是无损的。一张光盘可以容纳75分钟的音乐。1982年索尼推出的D50是真正意义上的CD随身听,拉开了CD随身听的序幕。1990年左右发展达到了鼎盛时期。时至如今,不管音乐播放器的未来怎么样发展,CD这承载完美音质的载体永远不会落伍,即使因为体积上有着无法回避的缺点3。1989年,德国人BRANDENBURG的博士论文,为MP3这一数字音频压缩技术提供了理论基础。1995年诞生的MP3标准具有较高的压缩比以及较小的音质损失,是音乐史上划时代的革命性技术。这种数字音乐压缩技术的诞生和流行,推动了MP3随身听的开发和应用。在MP3标准诞生不久的20世纪90年代后期,便携式MP3音乐播放器正式登场2。从1995年上半年开始直到整个九十年代后期,MP3开始在因特网上蓬勃发展。MP3的流行主要得益于如NULLSOFT于1997年发布的WINAMP和NAPSTER于1999年发布的NAPSTER这样的公司和软件包的成功,并且它们相互促进发展。这些程序使得普通用户很容易地播放、制作、共享和收集MP3文件4。1998年SAEHAN公司推出了世界上第一台的MP3播放器MPMANF10。MPMAN,取意于MP3与WALKMAN的结合。MPMANF10的体积为70X90X165MM,约有四个144M软盘堆叠起来这么大,体重为65克,可谓非常轻巧5。在世韩的MPMANF10为人们带来了惊喜之后,美国的帝盟(DIAMOND)公司挑头,于1998年底推出了RIOPMP300,这是第一个让全世界都印象深刻的MP3。RIOPMP300最大的优点就是可在互联网上下载MP3而不用花一分钱5。MP3文化的标志APPLEIPOD。诞生于2001年10月,作为一款MP3,它在很多方面并不出色价格高、音质一般、使用时间短以及缺乏对WINDOWS的支持等等,但它却是第一个把互联网音乐与MP3随身听捆绑销售的产品。许多人都愿意付少量钱到APPLE官方站下载单歌,或使用包月制的无限时DOWNLOAD,IPOD真正让唱片公司获得利润,所以得到了消费者和唱片商的双重支持5。直到2004年,MP3行业不平凡的一年。随着随身听的发展,人们已经越来越被迷你小巧的MP3所征服,原本人们对于MP3音质上的顾虑,已经被现有MP3高品质所打消。在这一年中,无论是从本身的品质,还是市场销售的情况来看,MP3已经完全占有了市场,成为随身听行业的霸主6。当MP3在容量、外观、音质上的发展无法再吸引更多眼球的时候,开始转向多功能方向发展。正如在手机身上所发生的一切,人们对于MP3的要求,不再是单一的欣赏音乐,而是能像手机一样身兼多职5。而目前消费类电子产品的发展呈现出数字化和多功能集成化的明显趋势7。在MP3的研究上,由于市场趋近饱和,大多数公司都将精力集中在外观造型上,对于其功能及性价比的探索趋势相对较弱。122课题研究的意义本次论文主要是为了开发出一套低成本、可扩展容量的MP3。现在一般个人随身携带使用MP3存在容量固定,性价比较低的情况。此次论文便是根据这些情况而设计。此次设计的突出优势是1、突破了存储容量限制。本系统提供了SD卡接口,可以方便地访问外部的移动存储介质,这样就不会有特定的容量限制。当前,个人多媒体娱乐市场的需求快速增长,各种多媒体的应用也日趋丰富,对存储容量的要求必然越来越高,因此本系统采用的方案可以说是应势而生。2、低成本。由于MP3编码算法的CPU的性能要求非常,因此目前大部分的MP3实时编码都是采用专用的DSP芯片来实现,这些芯片大部分价格较高8。本系统采用通用单片机处理,对MP3算法做了硬件方式的实时编码满足音质要求。设计中又将汉字存储芯片移除,大大降低了系统的成本。13论文研究的内容和目标131论文研究的内容1分析FAT32磁盘文件格式。由于此次论文要求对SD卡数据进行读写,而现在大多数SD卡的数据格式几乎都是FAT16或FAT32格式。其内部数据存储方式及引导区大小等情况显得尤其重要。如果忽略此环节,势必在读取数据时造成错误,对结果造成重大影响。2分析MP3文件格式。在进行MP3播放时,MP3解码器并不能够完成数据的分析任务,它只能根据控制部分给出的控制方式及速率接受并运算数据,并将其转换为相应的模拟信号。故进行MP3格式的分析可以帮助我们编写相应分析程序,并为控制MP3解码芯片作出必要的准备。3分析出MP3解码方法。在使用MP3解码芯片解码时,必然会用到解码相关知识。而且,在将数据送到MP3解码芯片前,对数据做必要的处理也可以提高MP3解码芯片处理效率,增加设计的可实现性。如果对MP3解码不够了解,就可能导致设计的失败。4了解MP3解码芯片的相关使用。对于不同的MP3解码芯片,其操作、控制字及外围电路也各不相同,找出性价比高且外围电路简单的芯片就显得比较重要。这不但可以降低成本,也会大大提高系统的可行性并降低系统成本。5对MINISD卡的初始化及文件读写。SD属于存储设备,但是,它却与一般存储设备不同。其与集成芯片相似,需要对其初始化才能正常工作。而对其进行读写操作也与其它存储器不同,每次读写均需写入相应的命令控制字,否则,对SD卡的操作均为无效操作。132论文研究的目标1能够完成对SD卡或CF卡的初始化及SD卡中MP3数据进行读取。2通过MP3解码芯片播放出原音频文件。3通过控制部分,能够进行上一曲、下一曲的切换等。4能够显示出英文或数字音频文件的名字。5能够设计出相应电路图并用热转印技术做出电路板。此次设计属于基础应用型,最终要求做出电路,根据成本预算,采用热转印技术较为方便,成本也相应较低。只要电路接线及布线正确便可以完成电路板的制作。14论文的结构安排本论文的组织与内容安排为第一章介绍基于SD卡的MP3播放器设计的基本框架,以及课题的背景及意义,并论述了研究内容和目标,最后说明了本论文的组织结构。第二章介绍了MP3播放器的硬件电路设计,以及对设计MP3所需单片机的性能要求所作的简要分析。第三章是对基于SD卡的MP3播放器的软件分析及设计。其中,包括各种硬件驱动程序的分析、设计及组合等情况。第四章是对基于SD卡的MP3播放器的效果进行测试分析,以及本次设计的前景和展望分析。第二章硬件设计本章着重介绍基于SD卡的MP3播放器设计的硬件设计。其设计流程如图21所示。性能分析选择器件接口设计硬件测试结束图21硬件设计流程图21AVR单片机简介一般MP3文件大小都在38MB之间,而每个文件的播放时间为5分钟左右,按这样计算,单片机的处理能力必须在200KB/S以上,再加上SD卡的读取时间、解码时间和单片机自身需要的控制指令时间,因此,单片机的处理能力必须在600KB/S以上,即每微秒执行16条指令。而51系列单片机大部分指令为双周期指令,其工作频率在12MHZ时,每条指令需要2M,所以,本论文采用AVR系列的ATMEGA32单片机,其具有更高的工作性能。下面我们作以简单介绍。ATMEGA32单片机属于AVR单片机中配置较高的产品。它在AVR内核基础上,增加了更多的功能,并完善了接口性能,在省电、稳定性、抗干扰以及灵活性方面也考虑得更加周全和完善,所以,ATMEGA32单片机的系统结构相对于其他AVR单片机结构来说复杂一些。ATMEGA32单片机是基于AVRRISC结构的8位低功耗CMOS微处理器。其内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与算术逻辑单元ALU相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码的效率,并且具有比普通的复杂指令集微处理器高10倍的数据吞吐率9。ATMEGA32单片机的内部资源有先进的RISC指令集、非易失性程序和数据存储器、JTAG接口、特殊功能接口。其中,RISC指令集有32个8位通用工作寄存器,支持全静态工作,工作于16MHZ时性能高达16MIPS,内部含有RC振荡电路,并且还有只需两个时钟周期的硬件乘法器。单片机内部还含有32KB系统内可编程FLASH,其可擦写周期达到10,000次,独立的锁定位,可对芯片进行软件加密以及1KB的EEPROM和2KB的片内SRAM。最值得一提的是,ATMEGA32单片机内部含有8通道的10位ADC电路,4路PWM通道,可编程串口和支持主机/从机工作模式的SPI接口。其中,SPI接口通信速度可达到2MB/S,由于本次设计的SD卡及解码芯片均含有SPI接口,因此,这种接口给设计带来了很大方便。而且,其内部含有RC振荡电路,无须提供外部时钟仍然能够正常工作。22AVR单片机SPI接口性能分析因为ATMEGA32单片机在工作在16MHZ时能达到16MIPS即16百万条指令每秒的速度,即,它每执行一条指令的时间为00625S,这种速度是51系列单片机的12倍。从上面的分析我们知道,MP3所需单片机性能要求约为每微秒执行16条指令。故,ATMEGA32单片机符合设计MP3的系统要求,能够通过它实现MP3的设计。另外,SD卡含有集成的SPI接口。使用专门的SPI接口比使用位操作模拟接口时序的方法操作更简单,效率也更加高。其工作速度与振动器频率的关系如表21所示。表21SCK与振荡器频率关系SPI2X1SPR12SPR02SCK频率000FSOC/4001FSOC/16010FSOC/64011FSOC/128100FSOC/2101FSOC/8110FSOC/32111FSOC/64注1SPI2X为AVR单片机内部SPI状态寄存器的SPI倍速位。2、3SPR1和SPR0为AVR单片机内部的SPI控制寄存器的SPI时钟频率选择位。从上表我们可以知道当ATMEGA32工作于16MHZ时,其最大传输速率可以达到16MHZ/28MHZ。这个速度完全可以满足MP3的播放要求。23基于SD卡的MP3接口设计231ATMEGA32引脚介绍在进行单片机的接口设计以前,我们首先来了解并分析一下ATMEGA32单片机的引脚。其具体结构如图22所示。图22ATMEGA32单片机引脚图10当PA口作为8为双向I/O端口时,其内部具有上拉电阻,输出缓冲器具有对称的驱动特性,可以输出和吸收20MA大电流。另外,它还可以作为AD转换引脚,本论文中不会使用,所以这里不做介绍。当PB、PC、PD端口全作为普通I/O口时,和PA口功能基本相同。另外,PC口在使能了JTAG时,复位发生时,TDI、TMS、TCK的上拉电阻使能,而且,当JTAG编程使能时,JTAGTAP控制器没有数据输出,即是说,JTAG在编程使能后,这些引脚不能用来作为I/O口。232ATMEGA32接口介绍与设计首先,介绍一下时钟和复位电路的设计。1时钟电路的设计。ATMEGA32单片机时钟电路可以采用三种设计方式。方式一,采用内部RC振荡电路。采用此种设计时要保持XTAL1和XTAL2为空,这样可以减少MP3体积大小,但是,这种方式下,不能对CKOPT进行编程,且频率受温度影响较大。方式二,采用外部RC振荡电路。这种电路可以减少晶体振荡器的使用,但是,会要增加一个电阻和电容。而且,这两种器件一般情况下精度有限且抗干扰能力不足,延时不够精确。因此,这种方式只适用于对时间不敏感场合,在本次设计中不能使用。方式三,采用石英晶体振荡器。石英晶体频率较稳定,抗干扰能力较强。只是,启动时频率稳定性较差。但是,可以通过软件延时的方法消除这个问题。综上,本次设计中可以采用方式三。而在实际大批量生产时可以采用方式一。具体电路如图23所示。图23时钟电路2复位电路的设计。ATMEGA32单片机与51单片机不同,它使用的是低电平复位,其连接方法比较固定,本次设计中我们采用一般接法。如图24所示。图24复位电路刚上电时,由于电容C5的作用,REST引脚会保持一段时间的低电平,使电路复位,然后,缓慢变高,使电路进入正常工作状态。当按键按下时,REST与地接通变低电平,电路发生复位。然后,介绍一下按键和显示电路。按键电路如果设计得不合理,那么,很容易造成单片机接口不够。为了能够节约出更多接口,我们采用如图25所示的电路,这样,原来需要6个引脚的开关接口,现在只需要5个引脚就够了。如图25键盘接口电路在显示电路部分,我们采用LCD1602,虽然一般MP3都不采用这种大而重的器件,但是,为了本次设计的方便,我们仍然采用了这种显示器件。其具体电路如图26所示。图26显示部分电路最后,介绍一下SPI接口及其电路设计。这是本次设计的最重要的接口,它工作性能的好坏直接影响到本次设计的成败。SPI系统的发送方向只有一个缓冲器,而在接受方向有两个缓冲器。即是说,在发送时一定要等到移位过程全部结束后,才能对SPI数据寄存器执行写操作。而在接收数据时,需要在下一个字符移位过程全部结束前,通过访问SPI数据寄存器读取当前接受到的字符;否则第一个字节将会丢失。其数据传递过程如图27所示。图27SPI主从机的连接10从图中可以看出SPI接口内部数据全由寄存器控制,在进行数据移出的同时也在进行数据的移入。其中,还有一个SPI接口使能端口SS,通过这个端口,我们可以控制SPI的使用。同时,我们可以通过设计模拟其工作特性的硬件引脚,从而达到节约端口、操作方便的目的。在本次设计中,我们采用SD卡作为数据存储介质。因此,我们现在来分析一下其接口及数据传输模式。SD卡有9个引脚,它们分别是VCC、GND、DAT0DAT3、CLK、CMD。其中,它们在不同的模式下有不同的定义。其具体定义如表22所示。表22SD卡引脚定义11针脚名称类型1描述1CS/DAT3I/O/PP卡监测/数据位32CMD/MOSIPP命令/回复3VSSS地4VCCS供电电压5CLKI时钟6VSS2S地7DAT0/MISOI/O/PP数据位08DAT1/IRQI/O/PP数据位19DAT2I/O/PP数据位21S电源供电,I输入O输出I/O双向PPI/O使用推挽驱动SD卡的总线概念SD卡数据传输分为SPI模式和SD模式。在SD模式下速度较快,但是,由于使用引脚过多,而且,在SPI模式下速度已经足够,因此,本次设计中采用SPI模式。在SPI模式下,SD卡只需要接MISO、MOSI、CLK、CS、CLK、VSS、VCC这7个引脚就可以了。而ATMEGA32单片机也提供了相应的接口。但是,由于AVR单片机的接口标准电压为5V,SD卡的供电及接口标准电压均为33V。因此,在本次设计中采用电阻分压。如图27所示。图27SD卡接口电路单片机输出5V,SD卡要求输入33V。故采用一个33K欧和18K欧的电阻分压,保证SD卡的输入电压约为33V。单片机的输入虽然5V才是高电压,但是,当电压大于25V时即被识别为高电压,所以SD卡的输入,在一定速度下能够直接被单片机识别出来,SD卡输出可以直接与单片机输入相连。解码作为MP3必不可少的部分,它的设计也关系着整个设计的成败。下面这种介绍一下这部分的设计步骤。第一步,我们必须选择一款解码芯片。这款芯片应该尽可能包含解码、放大电路。其次,要求价格实惠、外围电路简单等。在本次设计中,采用了VS1003B。这是一款专用音频解码芯片。芯片内部包含MP3、WMA等硬件解码,还包含放大电路。其体积较小,外围电路也比较简单。第二步,管脚分析。其引脚如图28所示。它的模拟、数字及I/O口电源是分开的,其也含有SPI接口,支持25V电源供电,接口电源采用33V,可以进行串行通信,硬件复位等。图28VS1003B引脚图12根据数据手册中提供的信息,要成功运用VS1003B这款芯片,还必须注意当不使用RX引脚时应接到IOVDD上。TEST为测试保留,也应该连接到IOVDD上。GPIO0需要使用100K欧下拉电阻。其它引脚可以根据其定义进行连接。未使用功能可不进行连接。第三步,接口设计。根据第二步中管脚分析结果。我们仍然需要对芯片输入引脚进行电平转换。这里我们仍然采用电阻分压的方式。主要输入引脚为数据选择、命令选择、复位、时钟、查询忙、数据输入。具体电路如图29所示。图29VS1003电平转换电路另外,还有第二步中介绍的时钟、电源以及特殊引脚的连接。由于使用的是成熟的音频解码芯片,硬件连接方式比较固定,且其数据手册给出了示例,不需要太多自行设计部分,只要根据时序设计好软件,便可以实现各种功能。图210VS1003B连接电路自此,基于SD卡的MP3播放器硬件部分设计全部完成。在设计中充分考虑了以后的升级扩展等问题。但是,在电平转换时使用了较多的电阻实现,对系统模型最终大小有一定影响。在实际生产中可以用贴片电阻代替,这样就可以大大减小电路板的体积。第三章软件设计31软件设计流程前一章介绍了硬件电路的设计,本章就要根据相应的硬件,进行软件设计。软件设计可以分为自底向上或自顶向下的设计方法,这里我们采用后者。首先,我们分别对键盘、SD卡、FAT、VS1003B进行驱动程序设计,然后,对这些驱动程序加以排列、组合,做到最优启动顺序,最后进行高层人机接口程序的设计。为了能够明确我们具体所需的驱动程序设计,下面我们先将设计的总体程序流程图确定下来。如图31所示。否是是开始初始化各驱动程序是否有歌曲否结束播放一帧数据扫描键盘一次获取歌曲信息读入一帧数据歌曲是否结束下一曲图31程序流程图在完成程序流程图之后,我们需要分别对各个部分进行程序设计,下面就分别介绍各种驱动程序的编写方法。32键盘、显示程序设计键盘部分由于键盘在设计中使用的是23的矩阵键盘,所以在编写程序时相对较为麻烦。必须先将其中的2个设置为输出低电平,另外3个引脚设置为输入。当检测到3输入引脚有低电平输入时,为了防止是干扰,使用软件延时10MS再次检测,若仍然为低电平,则说明有键按下,读出键值;然后,再将另外3个引脚设置为输出低电平,原来的2个引脚设置为输入,使用同样的办法可以读出按键值。这样得到的两组按键值可以组合成唯一的一个按键值。在扫描按键时,不用进行过多的处理,处理越多,耗时越多,对输出的声音影响也就越大,所以,在扫描程序中,只需要将按键值返回即可,不需要进行太多处理。对于键盘接口的设置,可以利用一初始化程序,将接口进行一种定义,这样,在扫描过程中程序可以节约更多的时间进行数据的读写。显示部分由于显示部分使用的是LCD1602液晶显示器,这种显示器需要进行初始化设置,然后才能正常使用,其具体工作指令如表31所示。表31LCD1602指令表13要使用这种液晶显示器件,必须要有如下初始化过程。1延时15MS;2写指令38H(不检测忙标志);3延时5MS;4写指令38H(不检测忙标志);5延时5MS;6写指令38H(以后每次写指令、读/写数据操作之前均需检测忙信号);7写指令38H显示模式设置;8写指令08H关闭显示;9写指令01H显示清屏;10写指令06H显示光标移动设置;11写指令0CH显示开及光标设置。13初始化程序完成后,我们可以利用C语言编写功能与PRINTF相近的函数。这样,在显示过程中,可以更加方便显示各种信息。33SD卡驱动程序设计SD卡使用的是SPI模式,这种总线接口在AVR单片机中可以直接使用其寄存器加以控制。因此,在编写SD卡驱动程序之前,必须先将单片机的SPI总线初始化。其具体代码如图32所示图32SPI总线初始化代码段在初始化SPI总线时,一般总线设置为低速模式,因为大多数器件在其初始化过程中,都不能有太高的速度,否则,很容易造成部分指令不能被接收,导致初始化失败。在MP3播放过程中,用单片机作为控制中心,所以,在设置时还应该将单片机设为主机,其它模块作为从机。在单片机SPI总线初始化完成后,就要对SD卡进行初始化。初始化SD卡,必须先对SD卡进行激活,其激活步骤如图33所示。在SD卡被激活后,就可以进行初始化操作。初始化时,我们必须进行一下设置1设置一次读写SD卡数据块的长度;2开启或关闭校验位,这里我们选择关闭校验位,因为在SD卡使用过程中会有数据起始标志位等,而且SD卡在低速模式下,本身读写出错的可能性不大。另外,SD卡的数据、指令长度为32位,而SPI总线为8位,在使用过程中还需要编写一些接口函数以便编写SD卡控制函数,操作SD卡。在开始激活时序时,至少需要先发送108个初始时钟,才能够进行后面的步骤。在我们平常使用的MINI卡中,还包含很多MMC卡。这两种卡的使用指令基本相同,唯一的差别是激活时的最后几条指令。因此,我们可以在本次设计中加入几条关键性指令,判断并激活两种微型存储卡。在不知道使用的是什么类型的存储卡时,可以用一般办法判断存储卡的类型。即,在写入55H返回01H且写入41H返回00H,则说明是SD卡;否则,写入01H返回00H,则为MMC卡。图33SD卡激活步骤15在初始化SD卡完成后,需要对本次设计中需要使用的一些特殊功能进行设计,如是否需要校验位,一次读写的数据长度为多少等。当SD卡激活并完成初始化后,就可以对SD卡数据进行读写了,其读取数据会在歌曲播放过程中经常使用,因此,我们可以编写一个读函数。只要需要读取数据时,只需要调用此函数就可以获得所需数据。34FAT驱动程序设计当读取到SD卡中的数据后,我们还不能直接使用这些数据,这些数据是根据微软制定的FAT/NTFS格式排列存放的。其中,在磁盘的开始区域存放的是磁盘系统的相关信息。当我们读取到这些信息时,还需要进行一些相应的计算,找出其中的MP3或其它音乐格式文件的数据入口地址、结束地址等,这样,单片机才能够获得相应的数据,并对数据进行分析送给解码芯片解码。现在市场上大多数SD/MMC卡都采用的是FAT32格式,因此,下面我们就开始以FAT32格式为例进行分析。在本次设计中,为了能够方便地看到SD卡内部数据,我们采用WINHEX软件对SD看内部数据进行分析。每张磁盘都有自己固定的存储结构。磁盘的第一个区域是系统区,从0面,0磁道,1扇区开始。系统区一般用来存放系统存储和维护的信息,系统区由三部分组成1引导记录(包含磁盘大小、格式、存储方式等信息);2文件分配表FAT(为文件分配磁盘空间);3目录(包括文件名、磁盘地址和文件状态)16。其具体结构如图34所示。引导记录FAT目录系统文件用户文件系统区数据区图34系统区和数据区组织图本次设计中,需要对引导记录进行详细分析,计算出数据位置,找到音乐文件。而在引导区最重要的部分为前512字节。在前512字节中,前96字节记录了系统的详细信息,这些信息可以帮助我们算出系统区和数据区各组成部分的位置。其内部前96个字节如图35所示。图35SD卡前96字节截图在图35中,每个字节含有为前3字节为跳转指令结构;411字节为依赖的系统文件名;第12、13字节为字节数/扇区;14字节为扇区数/簇;15、16字节为保留扇区数;17字节为FAT数目;18、19字节为启动入口;1921字节为小卷标扇区数;第22字节为多媒体类型描述(一般为F8);23、24字节为扇区数/小卷标FAT;25、26字节为扇区数/磁道;27字节为头字节数;2932字节为隐藏扇区数;第3336字节为磁盘总扇区数;3740为扇区数/FAT;41字节为扩展标志位;4244字节为磁盘版本号;4548字节为启动目录的第一簇;4950启动信息扇区位置;51、52字节为启动数据备份扇区位置;另外,8387字节为文件系统格式;其余信息在本次设计中暂未用到。知道以上信息及其含有,我们就可以计算出磁盘数据的位置等信息。为了能够方便地使用这些信息,在设计中可用如图36所示的结构体进行赋值,使程序能够高效的运行。在知道以上信息后,可以采用下面计算公式进行计算,算出数据所在位置。FAT表起始地址(隐藏扇区数保留扇区数)字节数/扇区目录区起始地址FAT表起始地址FAT数目扇区数/FAT字节数/扇区启动目录首簇扇区数/簇字节数/扇区第一个数据扇区地址目录区起始地址目录簇数扇区数/簇字节数/扇区目录区的大小是不固定,其大小会根据文件的多少而进行调整,只有在一个文件目录后不存在其它文件,才说明已经不含有其它文件。因此,在读取到的数据名为00H时,就说明文件已经结束,可以不再往后面读取文件。图36启动信息结构体在获取到启动信息以及数据区等位置关系以后,就可以读取自己需要的数据了。在使用过程中,我们可以编写一些专门用于计算文件下一簇/扇区的程序,这样就可以通过调用函数的方法方便地找到自己需要的数据,判断文件是否结束等情况。35VS1003B驱动程序设计设计MP3最重要环节之一是音频解码,解码质量直接关系到播放效果。本次设计中使用的是解码芯片VS1003B,那么,编写VS1003B的驱动程序就是解码中关键环节。VS1003B有一个硬件复位引脚,在进行硬件复位后,还需要进行初始化设置,和音乐信息相关的设置,这样才能让其正常工作。因此,下面对MP3文件格式做简略介绍,以方便对VS1003B进行设置。MP3文件是由帧构成,帧是MP3文件最小组成单位。MP3文件大体分为三部分TAG_V2ID3V2,FRAME,TAG_V1ID3V117。每个MP3数据帧又分为帧头和数据部分构成。帧头长度为4BYTE(32位),帧后面可能有两个字节的CRC校验。帧头数据结构如图37所示。图37MP3帧头结构A表示帧同步,所有位置位;B表示MPEG音频版本;C表示音乐层描述;D为保护位;E为位速率索引;F表示采样频率索引;G为填充位;I为声道模式;其余信息与本次设计关系不大,暂未使用,这里不做介绍。以上介绍中最重要的为E和F部分。E部分具体含义如表32所示。表32位速率索引表BITSV1,L11V1,L2V1,L3V2,L1V2,L2V2,L30000FREEFREEFREEFREEFREEFREE000132323232328800106448406448161600119656489656242401001286456128643232010116080641608064400110192968019296804801112241129622411256561000256128112256128646410012881601282881601288010103201921603201921609610113522241923522241121121100384256224384256128128110141632025641632025614411104483843204483843201601111BADBADBADBADBADBAD1V1MPEG1V2MPEG2/MPEG25L1LAYERIL2LAYERIIL3LAYERIII2FREE可以利用的位率;BAD不允许的值在帧头B、C部分可以查到MP3版本及层数,根据B、C的值在上表中可以查出音乐播放速率。F区决定音乐采样率,而采样率值则通过表33可以查出。表33采样率索引表单位HZBITSMPEG1MPEG2MPEG250044100220501102501480002400012000103200016000800011RESERVEDRESERVEDRESERVED无论帧长度是多少,每帧的播放时间都是26MS;每帧的大小可以通过以下方法计算得出帧大小MPEGVERSIONMPEG114472比特率/采样率填充位。当计算出帧大小波特率和采样率后,我们就可以对MP3文件进行解码。在对MP3格式做简要介绍后,下面就对VS1003B解码芯片做一些重要说明。其硬件连接方式在第二章已经做了说明,此次设计中使用的是SPI接口,另外还连接了复位端、数据请求端、数据端及命令端。VS10003B接口指令为8位,0X2为写;0X3为读。一般我们只需要写,只有在验证写入是否成功时,才读VS1003B内部寄存器。在每次读写数据后,数据请求端会变低表示忙。只有当数据请求端变高后才能进行数据/指令读写。其具体时序如图38所示。图38VS1003B写数据时序图18根据时序图可以看出要操作VS1003B,需要一条8为指令,再跟上8位地址,和写入该地址的16位数据。然后,DREQ会变低,直到内部完成数据的操作。VS1003B初始化时,需要对模式寄存器、时钟频率及倍频寄存器、音量寄存器进行设置。另外,还需要对音频寄存器进行设置,其取值由具体MP3文件帧头数据计算得到,计算过程在MP3分析时已经说明,这里不再解释。在进行初始化设置以后,就可以进行数据送入解码芯片进行解码。由于软件复位不会改变这些寄存器的值,我们在进行歌曲切换时可以进行软件复位,这样,在进行歌曲切换时可以不用进行其它复杂操作,直接进行软件复位就可以了。另外,DREQ引脚在VS1003B的FIFO在能够接受数据的时候输出高电平。此时,VS1003B可获取至少32BYTE的SDI数据或一个SCI命令。遵循这个标准,当DREQ变低时,发送器必须停止发送新的数据19。根据这个信息,我们在对VS1003B芯片大量写入音乐数据时,可以一次性写入32字节,这样就可以大大提高数据输入的效率,让音乐播放更为流畅。36MP3软件运行设计在完成了各种驱动程序设计后,就需要对音乐播放流程、界面和操作进行设计。如果在播放过程中,没有好的界面及人机接口程序,就会不利于使用者操作,而且,在使用过程中,客户由于不知道怎样操作,胡乱按键就容易造成其它未知错误。因此,下面我们就怎样进行整体设计做简要说明。首先,程序需要对系统进行初始化。初始化各个驱动的顺序必须有严格规定,应该从键盘开始,到显示器,再到SPI接口初始化,到SD卡和FAT格式初始化,最后是VS1003B的初始化。采用以上顺序,主要是为了能够在任何一个接口或器件初始化失败时,在显示器中能够给出相应的动作,指示哪一部分出错,用户应该怎样继续往下操作。正因为如此,在键盘和显示器初始化过程中,绝对不能有死循环,而其它程序中循环部分必须保留一定次数,超过这个次数就跳出循环并报错,交给系统处理错误,并发出警告。在初始化各驱动程序完成后,需要进入主程序,播放SD卡中的音乐。这部分程序可以在死循环中完成。一旦开始播放音乐,就不需要停下,除非暂停键(可设一标志位加以判断)被按下。其程序段如图39所示。图39主程序段代码在MP3播放过程中,可以先搜索全部音乐,将其放入一全局变量中,然后,利用这个全局变量判断是否所有音乐已经播放完成。播放过程主要为搜索音乐,找到音乐数据位置,读取数据,送入VS1003B解码,判断文件是否结束,没有则再查找下一簇数据并读取数据,否则,送入结束数据代码,跳到下一曲。其中,在进行完每一块数据的解码之后,需要进行一次键盘扫描,根据键盘的值,对VS1003B或单片机的相应寄存器进行操作,达到控制MP3播放的目的。第四章总结41基于SD卡的MP3播放器测试结果在使用热转印技术制板、打孔、焊接以及程序下载后,本次设计就接近尾声了。最后,需要进行最终的效果测试。下面对测试过程及情况做简要说明。首先,在一张容量为128M的SD卡中存储了几首MP3、WMA格式的歌曲文件,然后,插入自制的电路板中,上电播放。音乐播放成功,无任何异常产生。然后,进行按键测试。音量加减键能够正常工作,但是,在按下按键时,歌曲出现播放声音出现断续情况。根据程序分析,由于每26MS需要一帧数据,而按下按键会导致程序中断数百毫秒,故出现歌曲播放声音不连续的情况。进行歌曲切换、暂停/播放按键测试时,一切正常,无任何异常。最后,在进行以上测试过程之中,显示器能够正常工作,显示的信息也一切正常。串口也能够将播放中的信息正确传递给电脑显示。到此,基于SD卡的播放器测试完成。所有电路及预期功能基本完成,无异常产生。42前景与展望MP3播放器在现在市场上已经变得非常常见,从这个角度看,MP3的发展潜力已经不是很

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论