基于SD卡的MP3播放器设计.docx

上传人:b****5 文档编号:7660944 上传时间:2023-01-25 格式:DOCX 页数:60 大小:606.53KB
下载 相关 举报
基于SD卡的MP3播放器设计.docx_第1页
第1页 / 共60页
基于SD卡的MP3播放器设计.docx_第2页
第2页 / 共60页
基于SD卡的MP3播放器设计.docx_第3页
第3页 / 共60页
基于SD卡的MP3播放器设计.docx_第4页
第4页 / 共60页
基于SD卡的MP3播放器设计.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

基于SD卡的MP3播放器设计.docx

《基于SD卡的MP3播放器设计.docx》由会员分享,可在线阅读,更多相关《基于SD卡的MP3播放器设计.docx(60页珍藏版)》请在冰豆网上搜索。

基于SD卡的MP3播放器设计.docx

基于SD卡的MP3播放器设计

基于SD卡的MP3播放器设计

摘要:

本论文首先针对基于SD卡的MP3的播放器整体设计加以研究和介绍,并讨论系统软硬件的选择,及具体开发调试环境;然后,深入介绍了系统设计方案及其实现,并着重研究了SD卡、FAT格式、解码芯片及其软件驱动的设计;最后,详细介绍了性能优化等方面的工作及其开发前景和本设计在Atmel公司生产的atmega32单片机上的实现并取得了较好的效果。

关键词:

MP3播放器;AVR单片机;SD卡;音频解码;FAT分析

TheDesignedOfMp3PlayerBasedOnSDCard

Abstract:

Inthispaper,firstofallitstudystheoverallofthedesignandthepresentationoftheMP3playerbasedonSDcard,thendiscussesthesystemhardware,softwarechoicesandspecificdevelopinganddebuggingenvironment;Thesecond,thispaperintroducethedesignofthesystemanditsimplementationdeeply,andemphasizetheSDcard,FATformat,decoderchipandsoftware-drivendesign;Finally,itdescribestheaspectsoftheworkforperformanceoptimizationanditsdevelopmentprospectsindetail,andusingmicrocontrolleratmega32whichisproducedbytheAtmelachievedgoodresults.

Keywords:

MP3Player;AVRMicroChipUnit;SDCard;AudioDecoder;FATanalysis

1绪论

1.1基于SD卡的MP3概述

1.1.1基于SD卡的MP3系统组成

基于SD卡的MP3播放器主要由主控制器、SD卡、解码芯片、键盘、显示器等五部分组成。

其基本框架见图1。

图1基本框架图

(1)控制模块

控制模块是整个系统的核心。

主要完成对系统中各种芯片的输入、输出控制,也是实现数据交换、软硬件接口的中心模块。

(2)解码模块

这是系统中又一重要模块。

其主要功能是实现对数据进行处理并输出模拟信号驱动耳机发声。

(3)输入模块

此模块可大致分为键盘部分和SD卡部分。

键盘部分主要用来控制对MP3的操作。

SD卡部分主要是对SD卡的读取。

(4)输出模块

此部分主要包括音频输出、显示输出。

音频输出主要会用到一些模拟电路,对电路进行去噪等。

显示输出主要是现实系统状态显示以便对其操作。

1.1.2基于SD卡的MP3播放器的特点

在半导体行业中,消费类电子是近年来发展最迅猛的一个领域。

2006年消费类电子在中国Mcu市场的需求所占份额超过了百分之四十[1]。

现在mp3技术已基本成熟,一般mp3都采用专用DSP芯片和集成的数据程序存储器。

集成数据存储器优点是成本低廉,但是,这样却无法方便的进行容量的扩展。

因此,本次论文在于设计出能够用SD或CF卡作为音乐存储介质的存储器,使mp3的容量能够方便地得到扩展。

随着存储器微型化快速发展,无法扩展容量的mp3已经很难满足人们的需求。

虽然一些mp3容量已经达到2G、4G甚至8G。

但其容量无法扩展,为用户以后的使用造成了极大不便。

当用户想要扩展容量时,不得不再换一个新的mp3。

这样就造成了用户成本上的增加,使用户得不偿失。

而SD卡mp3的出现则可以解决用户的这一烦恼。

这也是本次设计的优势所在。

另外,mp3为了达到音质效果的完美,往往采用高档DSP器件作为专门的解码播放芯片,这样虽然在效果上取得较大的突破,但mp3格式本身的限制,提高系统性能和效果也会有一定限制,不可能无限制地提高,且这些提高对于成本来说是得不偿失的。

故这类mp3价格是一般mp3的好几倍。

本论文采用一般的单片机控制和mp3格式解码芯片实现。

1.2课题研究的背景及意义

1.2.1课题研究的背景

便携式音乐播放器的历史从1979年Sony的WalkmanTPS-12随身听的问世开始。

这台磁带机音乐系统开启了个人娱乐市场的大门,在此之前,人们只能呆在家里用笨重的立体声录音机欣赏音乐[2]。

至今,便携式音乐播放器产品已经经历了磁带机、CD机、MD播放器、MP3播放器四个阶段[3]。

MP3的流行主要得益于如Nullsoft于1997年发布的Winamp和Napster于1999年发布的Napster这样的公司和软件包的成功,并且它们相互促进发展。

这些程序使得普通用户很容易地播放、制作、共享和收集MP3文件[4]。

AppleiPod作为一款MP3,它在很多方面并不出色,但它却是第一个把互联网音乐与MP3随身听捆绑销售的产品。

许多人都愿意付少量钱到Apple官方站下载单歌,iPod真正让唱片公司获得利润,所以得到了消费者和唱片商的双重支持[5]。

直到2004年,随着随身听的发展,人们已经越来越被迷你小巧的MP3所征服,原本人们对于MP3音质上的顾虑,已经被现有MP3高品质所打消。

在这一年中,无论是从本身的品质,还是市场销售的情况来看,MP3已经完全占有了市场,成为随身听行业的霸主[6]。

当MP3在容量、外观、音质上的发展无法再吸引更多眼球的时候,开始转向多功能方向发展。

正如在手机身上所发生的一切,人们对于MP3的要求,不再是单一的欣赏音乐,而是能像手机一样身兼多职[5]。

目前消费类电子产品的发展呈现出数字化和多功能集成化的明显趋势[7]。

在MP3的研究上,由于市场趋近饱和,多数公司都将精力集中在外观造型上,对其功能及性价比的探索趋势相对较弱。

1.2.2课题研究的意义

本次论文主要是为了开发出一套低成本、可扩展容量的MP3。

现在一般个人随身携带使用MP3存在容量固定,性价比较低的情况。

此次论文便是根据这些情况而设计。

此次设计的突出优势是:

(1)突破了存储容量限制。

本系统提供了SD卡接口,可以方便地访问外部的移动存储介质,这样就不会有特定的容量限制。

当前,个人多媒体娱乐市场的需求快速增长,各种多媒体的应用也日趋丰富,对存储容量的要求必然越来越高,因此本系统采用的方案可以说是应势而生。

(2)低成本。

由于MP3编码算法的CPU的性能要求非常,因此目前大部分的MP3实时编码都是采用专用的DSP芯片来实现,这些芯片大部分价格较高[8]。

本系统采用通用单片机处理,对MP3算法做了硬件方式的实时编码满足音质要求。

设计中又将汉字存储芯片移除,大大降低了系统的成本。

1.3论文研究的内容和目标

1.3.1论文研究的内容

(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卡的操作均为无效操作。

1.3.2论文研究的目标

(1)能够完成对SD卡或CF卡的初始化及SD卡中mp3数据进行读取。

(2)通过mp3解码芯片播放出原音频文件。

(3)通过控制部分,能够进行上一曲、下一曲的切换等。

(4)能够显示出英文或数字音频文件的名字。

(5)能够设计出相应电路图并用热转印技术做出电路板。

此次设计属于基础应用型,最终要求做出电路,根据成本预算,采用热转印技术较为方便,成本也相应较低。

只要电路接线及布线正确便可以完成电路板的制作。

1.4论文的结构安排

本论文的组织与内容安排为:

第一章介绍基于SD卡的MP3播放器设计的基本框架,以及课题的背景及意义,并论述了研究内容和目标,最后说明了本论文的组织结构。

第二章介绍了MP3播放器的硬件电路设计,以及对设计MP3所需单片机的性能要求所作的简要分析。

第三章是对基于SD卡的MP3播放器的软件分析及设计。

其中,包括各种硬件驱动程序的分析、设计及组合等情况。

第四章是对利用热转印技术制作电路板的方法进行简要说明、介绍。

第五章是对基于SD卡的MP3播放器的效果进行测试分析,以及本次设计的前景和展望分析。

2硬件设计

本章介绍基于SD卡的MP3播放器的硬件设计。

其流程如图2。

2.1AVR单片机简介

普通MP3文件大小都在3-8MB之间,每个文件的播放时间约为5分钟,按这样计算,单片机的处理能力必须在200kb/s以上,加之SD卡的读取时间、解码时间和单片机自身需要的控制指令时间,故单片机的处理能力必须在600kb/s以上,即每微秒执行1.6条指令。

51系列单片机大部分指令为双周期指令,当工作频率在12MHZ时,每条指令需要2μm,其工作性能不够。

本论文采用AVR系列的ATmega32单片机,其具有更高的工作性能。

ATmega32单片机属于AVR单片机中配置较高的产品,其所有寄存器都直接与算术逻辑单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。

这种结构大大提高了代码的效率,并且具有比普通的复杂指令集微处理器高10倍的数据吞吐率[9]。

ATmega32单片机内部有先进的RISC指令集、非易失性程序和数据存储器、JTAG接口、特殊功能接口,还有32KB系统内可编程Flash,独立的锁定位,可对芯片进行软件加密以及1KB的EEPROM和2KB的片内SRAM。

最值得一提的是,ATmega32内部含有8通道的10位ADC电路,4路PWM通道,可编程串口和支持主机/从机工作模式的SPI接口。

其中,SPI接口通信速度可达到2MB/s,本设计的SD卡及解码芯片均含有SPI接口,故此接口给设计带来了很大方便。

且其内部含有RC振荡电路,无须提供外部时钟仍然能够正常工作。

2.2AVR单片机SPI接口性能分析

ATmega32单片机在工作在16MHz时能达到16MIPS(即16百万条指令每秒)的速度,即每执行一条指令的时间为0.0625μs,是51系列单片机的12倍。

由此可知,MP3所需单片机性能要求约为每微秒执行1.6条指令。

故ATmega32单片机符合MP3设计的要求。

另外,SD卡含有集成的SPI接口,其工作速度比使用位操作模拟接口时序的方法操作更简单,效率也更加高。

SCK与振荡器频率关系如表1。

表1SCK与振荡器频率关系

SPI2X1

SPR12

SPR02

SCK频率

0

0

0

Fsoc/4

0

0

1

Fsoc/16

0

1

0

Fsoc/64

0

1

1

Fsoc/128

1

0

0

Fsoc/2

1

0

1

Fsoc/8

1

1

0

Fsoc/32

1

1

1

Fsoc/64

注:

1.SPI2X为AVR单片机内部SPI状态寄存器的SPI倍速位。

2、3:

SPR1和SPR0为AVR单片机内部的SPI控制寄存器的SPI时钟频率选择位。

由表1可知:

当ATmega32工作于16MHz时,其最大传输速率可以达到16MHz/2=8MHz。

此速度完全满足MP3的播放要求。

2.3基于SD卡的MP3接口设计

2.3.1ATmega32引脚介绍

进行单片机的接口设计首先需要分析一下ATmega32单片机的引脚[10]。

其结构见图3。

图3ATmega32单片机引脚图

当PA口作为8为双向I/O端口时,其内部具有上拉电阻,输出缓冲器具有对称的驱动特性,可以输出和吸收20mA大电流。

此外,它还可以作为AD转换引脚。

当PB、PC、PD端口全作为普通I/O口时,和PA口功能基本相同。

另外,PC口在使能JTAG后,复位发生时,TDI、TMS、TCK的上拉电阻使能。

当JTAG编程使能时,JTAGTAP控制器没有数据输出,即JTAG在编程使能后这些引脚不能用来作为I/O口。

2.3.2ATmega32接口介绍与设计

首先,介绍一下时钟和复位电路的设计。

(1)时钟电路的设计。

本设计采用石英晶体振荡器。

石英晶体频率较稳定,抗干扰能力较强。

具体电路见图4。

图4时钟电路图5复位电路

(2)复位电路的设计。

ATmega32单片机与51单片机不同,它使用的是低电平复位,其连接方法比较固定,其常见接法见图5。

刚上电时,电容C5促使REST引脚保持一段时间的低电平,使电路复位。

当按键按下时,REST与地接通变低电平,电路发生复位。

为了能够节约I/O口,设计的键盘接口电路见图6,这样原需6个引脚的接口现只需5个引脚。

图6键盘接口电路

显示电路部分采用了LCD1602,具体的电路如图7。

图7显示部分电路

最后,介绍一下SPI接口及其电路设计。

SPI系统的发送方向只有一个缓冲器,在接受方向有两个缓冲器。

即在发送时一定要等到移位过程全部结束后,才能对SPI数据寄存器执行写操作。

接收数据时,需要在下一个字符移位过程全部结束前,通过访问SPI数据寄存器读取当前接受到的字符;否则第一个字节将会丢失[10]。

其数据传递过程见图8。

从图8可知SPI接口内部数据全由寄存器控制,在进行数据移出的同时也在进行数据的移入。

其中,还有一个SPI接口使能端口SS,通过这个端口就可以控制SPI的使用。

图8SPI主从机的连接

本设计采用SD卡作为数据存储介质,下面分析一下其接口及数据传输模式:

该卡有9个引脚(VCC、GND、DAT0-DAT3、CLK、CMD),在不同的模式下有不同的定义[11],其定义见表2。

SD卡数据传输分为SPI模式和SD模式,设计中采用SPI模式。

SPI模式下SD卡只需接MISO、MOSI、CLK等7个引脚,而ATmega32单片机提供了相应接口,其标准电压为5V,SD卡的供电及接口标准电压均为3.3V。

故需设计了ATmega32单片机与SD卡的电压转换电路,其原理见图9。

表2SD卡引脚定义

针脚

名称

类型1

描述

1

CS/DAT3

I/O/PP

卡监测/数据位3

2

CMD/MOSI

PP

命令/回复

3

Vss

S

4

Vcc

S

供电电压

5

CLK

I

时钟

6

Vss2

S

7

DAT0/MISO

I/O/PP

数据位0

8

DAT1/IRQ

I/O/PP

数据位1

9

DAT2

I/O/PP

数据位2

注:

1:

S:

电源供电,I:

输入O:

输出I/O:

双向PP:

I/O使用推挽驱动SD卡的总线概念

图9SD卡接口电路

下面介绍解码部分的设计步骤。

(1)选择一款解码芯片。

所选芯片应包含解码、放大电路;其次,应价格实惠、外围电路简单等。

本设计采用了VS1003B,其体积较小,外围电路也比较简单,内部包含MP3、wma等硬件解码及放大电路。

(2)管脚分析。

其引脚如图10[12],其模拟、数字及I/O口电源是分开的,含有SPI接口,支持2.5V电源供电,接口电源采用3.3V,可以进行串行通信,硬件复位等。

使用VS1003B还须注意:

1.不使用RX引脚时应接到IOVDD上。

2.TEST为测试保留,也应该连接到IOVDD上。

3.GPIO0需要使用100千欧下拉电阻。

图10VS1003B引脚图

(3)接口设计。

根据管脚分析结果,对芯片输入引脚进行电平转换。

设计中仍采用电阻分压式。

其主要输入引脚为数据选择、命令选择、复位、时钟、查询忙、数据输入。

具体电路如图11。

图11vs1003电平转换电路

另外,时钟、电源以及特殊引脚的连接方式比较固定,且其数据手册给出了示例,只要根据时序设计好软件,便可以实现各种功能。

具体电路见图12。

自此,基于SD卡的MP3播放器硬件部分设计全部完成。

在电平转换时使用了较多的电阻实现,对系统模型最终大小有一定影响。

在实际生产中可以用贴片电阻代替,这样就可以大大减小电路板的体积。

图12vs1003b连接电路

3软件设计

3.1软件设计流程

本章将根据相应的硬件自顶向下设计相应软件。

首先对键盘、SD卡、FAT、vs1003b设计对应的驱动程序,并对这些驱动程序加以排列、组合以获得最优启动顺序,最后设计高层人机接口程序,总体程序流程见图13。

3.2键盘、显示程序设计

键盘部分:

设计中使用2行×3列的矩阵键盘,先将行引脚设为输出低电平,列引脚设为输入。

检测到输入引脚有低电平时,使用软件延时10ms防止干扰,再次检测,若仍然为低电平,则说明有键按下,读出键值;再将列引脚设为输出低电平,行引脚设为输入,用同样的办法可以读出键值。

这样得到的两组按键值可以组合成唯一的一个键值。

键盘接口可以利用初始化程序进行特定定义,扫描过程中程序便可节约时间进行数据的读写。

显示部分:

设计采用的是LCD1602液晶显示器,其工作指令如表3[13]。

LCD1602液晶显示器的初始化过程[13]如下:

1.延时15ms;2.写指令38H(不检测忙标志);3.延时5ms;4.写指令38H(不检测忙标志);5.延时5ms;6.写指令38H(以后每次写指令、读/写数据操作之前均需检测忙信号);7.写指令38H:

显示模式设置;8.写指令08H:

关闭显示;9.写指令01H:

显示清屏;10.写指令06H:

显示光标移动设置;11.写指令0CH:

显示开及光标设置。

表3LCD1602指令表

3.3SD卡驱动程序设计

SD卡使用的是SPI模式,SPI总线在ATmega32单片机中可直接使用。

编写SD卡驱动程序前,须先将单片机的SPI总线初始化。

其具体代码为:

Voidspi_init(void){

DDRB|=(1<

DDRB&=~(1<

SPCR|=(1<

PORTB|=(1<

一般器件初始化过程中,不能有太高的速度,否则很容易导致初始化失败。

故SPI总线初始化时,应初始设为低速模式。

在MP3播放过程中,单片机作为控制中心,还应将单片机设为主机,其它模块设为从机。

SPI总线初始化完成后,需对SD卡进行激活并初始化。

其激活步骤如图14[15]。

图14SD卡激活步骤

初始化SD卡时须按以下步骤进行设置:

1.设置一次读写SD卡数据块的长度;2.开启或关闭校验位,本设计关闭校验位。

另外,SD卡的数据、指令长度为32位,SPI总线为8位,使用过程中还需编写接口函数以操作SD卡。

开始激活时序前,至少要发送108个初始时钟以进行后面的步骤。

日常使用的mini卡中包含很多MMC卡。

这两种卡的使用指令基本相同,差别是激活时的最后几条指令。

故可以在设计中加入几条关键指令,判断并激活两种存储卡。

未知存储卡类型时,可写入55H返回01H且写入41H返回00H,则使用的是SD卡;否则写入01H返回00H,则为MMC卡。

初始化SD卡的最后一步是特殊功能的写入,如设置校验位,一次读写的数据长度等。

SD卡激活并完成初始化后,就可以对SD卡数据进行读写了。

3.4FAT驱动程序设计

一般SD卡中的数据是根据微软制定的FAT/NTFS格式存放的。

磁盘开始区域存放的是磁盘系统的相关信息,当读取到这些信息时,还需要进行一些相应的计算,找出MP3或其它音乐格式文件的数据入口地址、结束地址等,单片机才能够获得相应的数据,并对数据进行分析送给解码芯片解码。

现多数SD/MMC卡都采用FAT32格式,故本设计就以FAT32格式为例进行分析。

设计中采用WinHex软件对SD卡内部数据进行分析。

一般磁盘都有自己固定的存储结构。

磁盘的第一个区域是系统区,从0面,0磁道,1扇区开始。

系统区一般用来存放系统存储和维护的信息,系统区由三部分组成:

1.引导记录(包含磁盘大小、格式、存储方式等信息);2.文件分配表FAT(为文件分配磁盘空间);3.目录(包括文件名、磁盘地址和文件状态)[16]。

其具体结构如图15。

本设计需要对引导记录进行详细分析,计算出数据位置,找到音乐文件。

在引导区最重要的部分为前512字节。

其中前96字节记录了系统的详细信息,根据这些信息可以算出系统区和数据区各组成部分的位置。

其数据见图16。

图16SD卡前96字节截图

图16中各字节含义如下:

前3字节为跳转指令结构;4-11字节为依赖的系统文件名;第12、13字节为字节数/扇区;14字节为扇区数/簇;15、16字节为保留扇区数;17字节为FAT数目;18、19字节为启动入口;19-21字节为小卷标扇区数;第22字节为多媒体类型描述(一般为F8);23、24字节为扇区数/小卷标FAT;25、26字节为扇区数/磁道;27字节为头字节数;29-32字节为隐藏扇区数;第33-36字节为磁盘总扇区数;37-40为扇区数/FAT;41字节为扩展标志位;42-44字节为磁盘版本号;45-48字节为启动目录的第一簇;49-50启动信息扇区位置;51、52字节为启动数据备份扇区位置;另外,83-87字节为文件系统格式。

知道以上信息便可计算出磁盘数据的位置等信息。

根据这些信息用一结构体进行赋值。

其具体代码如下。

structbpb50{WORDbpbBytesPerSec;

BYTEbpbSecPerClust;

WORDbpbResSectors;

BYTEbpbFATs;

WORDbpbRootDirEnts;

WORDbpbSectors;

BYTEbpbMedia;

WORDbpbFATsecs;

WORDbpbSecPerTrack;

WORDbpbHeads;

DWORDbpbHiddenSecs;

DWORDbpbHugeSectors;};

目录区大小不是固定的,其大小会根据文件的多少而自动调整,读取到的目录数据为00H时,就说明文件已经结束,可以不再往后面读取文件。

获取到启动信息以及数据区等位置关系后,便可以读

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1