应用电子技术专业毕业论文-基于STC12C5A60S2与VS1003音频播放器的研究.doc_第1页
应用电子技术专业毕业论文-基于STC12C5A60S2与VS1003音频播放器的研究.doc_第2页
应用电子技术专业毕业论文-基于STC12C5A60S2与VS1003音频播放器的研究.doc_第3页
应用电子技术专业毕业论文-基于STC12C5A60S2与VS1003音频播放器的研究.doc_第4页
应用电子技术专业毕业论文-基于STC12C5A60S2与VS1003音频播放器的研究.doc_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

电子信息工程系毕业论文江阴职业技术学院毕业论文课题:基于STC12C5A60S2与VS1003音频播放器的研究专 业应用电子技术学生姓名倪松鹏 班 级 10应用电子1班学 号 10030113指导教师 何谐 完成日期 2012年12月14日摘 要随着电子消费产品的快速发展,音频播放器在各种场合的需求也日益增长,随之而呈现的音频播放器的设计方案也越来越多,其中主要的设计方案有3种:自身集成有解码模块的MCU专用芯片、DSP软件解码和主控MCU上一个专用的解码芯片。基于成本、音质和功耗的综合考虑,采用一种基于SPI协议的解码芯片VS1003来实现音频解码功能,处理器选用STC12C5A60S2作为控制MCU,存储介质选用SD卡来实现音频播放功能。本设计的音频播放过程是STC12C5A60S2通过SPI接口将音频数据从SD卡中读出,然后再通过SPI接口传送至VS1003进行解码播放,在此VS1003解码模块单独使用一个SPI接口,以减少干扰和噪音,提高音质。在此研究基于STC12C5A60S2处理器的SPI接口,以实现VS1003的驱动。以STC12C5A60S2作为核心控制器,结合VS1003音频解码器,设计了一种带SD储存卡的MP3播放器,在软件设计上,使用FAT32文件系统对文件进行管理,可以使播放歌曲在MP3播放器与个人计算机之间共享。AbstratWith the rapid development of consumer electronic products, audio player on various occasions in the growing demand, subsequently and the audio player design is also increasing, which mainly design has 3 kinds: the integrated decoding module in control MCU chip, DSP software decoder and a main control MCU the last dedicated decoding chip.Based on the cost, quality and the power consumption of the integrated consideration, a method based on the SPI protocol decoding chip VS1003 to realize audio decoding function, the processor selects STC12C5A60S2 as control MCU, storage medium using SD card audio playing function.The design of audio playback process is STC12C5A60S2 through SPI interface audio data read out from the SD card, and then through the SPI interface to send to VS1003 for decoding and playing, this VS1003 decoding module separately using a SPI interface, so as to reduce the interference and noise, improve the quality.In this study based on the STC12C5A60S2 processor SPI interface, to achieve the VS1003 driver.With STC12C5A60S2 as the core controller, combined with the design of VS1003 audio decoder, a memory card with SD MP3 player, in the design of software, using the FAT32 file system for file management, can make songs in MP3 player and personal computers to share.- 49 -目 录摘 要IAbstratI第一章 绪论11.1 MP3背景11.2 应用现状11.3 研究内容21.4 原理概述2第二章 VS1003音频解码模块42.1 VS1003简介42.2 VS1003硬件设计52.2.1 VS1003管脚功能52.2.2 内部寄存器62.2.3 数据通信82.2.4 模块设计及其与单片机的连接12第三章 存储模块143.1 SD储存卡简介143.2 SD储存卡硬件设计143.2.1 SD存储卡硬件结构与接口模式143.2.2 SD命令163.3.3 SD存储卡数据操作17第四章 FAT32在单片机上的实现214.1 FAT32文件系统概述214.2 FAT32文件系统在单片机上的软件设计224.2.1 主引导扇区的数据结构224.2.2 分区引导扇区的数据结构234.2.3 目录项的数据结构254.2.4 文件信息数据结构254.2.5 重要参数数据结构264.2.6 FAT32运用函数26第五章 主要软件设计305.1 MP3音频文件读取播放相关软件设计305.1.1 SD储存卡写命令305.1.2 SD储存卡初始化315.1.3 读SD储存卡单块数据335.1.4 VS1003写指令365.1.5 VS1003初始化375.2 主控程序设计395.2.1 MP3文件读取与发送395.2.2 主控制程序42第六章 系统调试与分析446.1 软件调试446.2 硬件调试45第七章 总结与展望46致 谢47参考文献48附 录49第1章 绪论MP3作为高质量音乐压缩标准,给音频产业带来了具大的冲击。MP3技术使音乐数据压缩比率大,回放质量高。如CD格式的音乐数据压缩成MP3格式,音效相差无己,但大小至少可压缩12倍。由于MP3音乐的较小数据量和近乎完美的播放效果使其在网络上传输得以实现。随着电子技术的发展,MP3播放器向大容量、高音质、小巧便携不断发展。本文将从软硬件方面详细介绍如何实现基于VS1003解码芯片的MP3音频播放过程。1.1 MP3背景MP3是一种音频压缩技术,其全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III),简称为MP3。它被设计用来大幅度地降低音频数据量。利用MPEG Audio Layer 3的技术,将音乐以1:10甚至1:12的压缩率,压缩成容量较小的文件,而对于大多数用户来说重放的音质与最初的不压缩音频相比没有明显的下降。它是在1991年由位于德国埃尔朗根的研究组织Fraunhofer-Gesellschaft的一组工程师发明和标准化的。用MP3形式存储的音乐就叫作MP3音乐,能播放MP3音乐的机器就叫作MP3播放器。MP3是利用人耳对高频声音信号不敏感的特性,将时域波形信号转换成域信号,并划分成多个频段,对不同的频段使用不同的压缩率,对高频加大压缩比(甚至忽略信号)对低频信号使用小压缩比,保证信号不失真。这样一来就相当于抛弃人耳基本听不到的高频声音,只保留能听到的低频部分,从而将声音用110甚至112的压缩率压缩。由于这种压缩方式的全称叫MPEG AudioPlayer3,所以人们把它简称为MP3。根据MPEG规范的说法,MPEG-4中的AAC(Advanced audio coding)将是MP3格式的下一代。MP3还分为耳机MP3和外放MP3两大类,传统MP3需要带耳机才有很好的音质,但是对人们的耳膜有所伤害,新型的MP3主要方向是外放MP3,对耳膜几乎没有任何伤害,从而得到人们的喜爱。1.2 应用现状MP3是与MPEG一道开始发展的。1987年德国的IIS(Institute fur Integrierte Schaltungen)地方UE147研究所,根据心理声学原理,开始对压缩技术进行了研究,并开发出强有力的技能标准ISO-Layer-3。Fraunhofer IIS为了推广MP3,率先对Winplay 3进行推广,从而为MP3的推广奠定了基础。德国的广播频道FFN利用电话ISDN设备每天发送长达20分钟的8个节目到中央广播演播室,由此,每年可以节省30万美元的运输费。在法国第十六届冬奥上,德国的广播系统利用MP3清晰地转播比赛实况,以此证明了MP3是数码音频广播极具发展潜力的工具。关于利用MP3的全球化卫星音频广播,目前处于在准备阶段,今后利用简单广播手段,在世界任何地方也可以欣赏到CD级高音频音乐了。而且,目前通过网络点播提供各种音频服务(Audio On Demand)已成了热门话题。个人也可以利用Winamp软件等设立个人广播站。从表观上看,MP3播放所包括的功能也越来越多。除上述以外MP3技术被广泛的应用于便携式设备上,例:MP3播放器,手机等。1.3 研究内容在发展中最主要的芯片是存储和解码芯片,随着储存技术的发展如今的储存芯片价格公道,储存能力强;至于解码芯片,在许多MP3评测中都有提到,它不仅决定了音频处理的速度,也确定了MP3的特别音效功能,包括多重EQ、3D音效。当然,解码芯片也是影响音质的最重要部分之一,APU(Audio Processing Unit,音频处理单元)的算法会对波形的还原起着决定性的作用。虽说MP3格式也是有损压缩,但是使用高采样率之后,MP3的音质会大幅度提高。VS1003是一款集MP3/WMA/MIDI音频解码和ADPCM编码的芯片,能很好的完成MP3音乐文件的解码播放,适合做控制器和解码器分开的MP3的播放研究。本文的目的就在于以STC12C5A60S2单片机与VS1003解码器为载体深入的研究和学习MP3的播放原理。1.4 原理概述本系统选用STC公司生产的STC12C5A60S2单片机作为控制核心,通过编程读取放在SD储存卡中的数据到单片机,然后单片机再将数据发送给VS1003并驱动其播放出音乐,图1-1 所示为系统工作原理框图。图1-1 系统工作原理框图该系统可分为存储模块,STC12C5A60S2单片机系统和VS1003解码三大模块,其中单片机采用STC12C5A60S2是因为普通的51单片机的数据处理速度比较低,无法完成MP3的流畅的播放。STC12C5A60S2/AD/PWM系列单片机是STC生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S,即25万次/秒),针对电机控制,强干扰场合。工作电压:5.5V-3.5V;工作频率范围:035MHz,相当于普通8051的0420MHz;用户应用程序空间60K,片上集成1280字节RAM;通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口)可设置成四种模式:准双向口/弱上拉,强推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA;共4个16位定时器两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器。第2章 VS1003音频解码模块2.1 VS1003简介VS1003是一个单片MP3/WMA/MIDI音频解码器和ADPCM编码器。它包含一个高性能,自主产权的低功耗DSP处理器核VS_DSP,工作数据存储器,为用户应用提供5KB的指令RAM和0.5KB的数据RAM。串行的控制和数据接口,4个常规用途的I/O口,一个UART,也有一个高品质可变采样率的ADC和立体声DAC,还有一个耳机放大器和地线缓冲器。其内部结构图如图2-1所示。图2-1 VS1003内部结构图VS1003通过一个串行接口来接收输入的比特流,它可以作为一个系统的从机。输入的比特流被解码,然后通过一个数字音量控制器到达一个18位过采样多位-DAC。通过串行总线控制解码器。除了基本的解码,在用户RAM中它还可以做其他特殊应用,例如DSP音效处理。VS1003能解码MPEG1与MPEG2音频层III(CBR+VBR+ABR);WMA 4.0/4.1/7/8/9 5384kbps所有流文件;WAV(PCM+IMA AD-PCM);产生MIDI/SP-MIDI文件;对话筒输入或线路输入的音频信号进行IMA ADPCMM编码支持MP3和WAVV流高低音控制;内含高性能片上立体声数模转换器,两声道间无相位差;内含能驱动30欧负载的耳机驱动器。2.2 VS1003硬件设计2.2.1 VS1003管脚功能VS1003是一片集合编码和解码功能的芯片,由于本次研究中只需用它的解码功能,在此只需要了解其解码功能所用到的各个管脚的功能,在系统设计时由于主控器是STC12C5A60S2单片机,所以VS1003采用SPI接口设置。VS1003所用到的管脚的名称、类型、功能详见表2-1。表2-1 所用管脚功能表管脚名称LQFP-48管脚类型管脚功能XRESET3DI低电平有效,异步复位端DGND04DGND处理器核与I/O地CVDD05CPWR处理器核电源IOVDD06IOPWRI/O电源CVDD17CPEW处理器核电源DREQ8DO数据请求,输入总线GPIO2/DCLK9DIO通用I/O2/串行数据总线时钟,接100K下拉电阻。GPIO3/SDATA10DIO通用I/O3/串行数据总线数据,接100K下拉电阻。XDCS/BSYNC13DI数据片选端/字节同步IOVDD114IOPWRI/O电源XTALO17AO晶振输出XTALI18AI晶振输入IOVDD219IOPWRI/O电源DGND220DGND处理器核与I/O地DGND321DGND处理器核与I/O地DGND422DGND处理器核与I/O地XCS23DI片选输入,低电平有效CVDD224CPWR处理器核电源RX26DIUART接收口,不用时接IOVDDSCLK28DI串行总线的时钟SI29DI串行输入SO30DO3串行输出CVDD331CPWR处理器核电源TEST32DI保留做测试,连接至IOVDD表2-1 所用管脚功能表(续)管脚名称LQFP-48管脚类型管脚功能GPIO0/SPIBOOT33DIO通用I/O0/SPIBOOT,使用100K下拉电阻GPIO134DIO通用I/O1AGND037APWR模拟地,低噪声参考地AVDD038APWR模拟电源RIGHT39AO右声道输出AGND140APWR模拟地AGND241APWR模拟地GBUF42AO公共地缓冲器AVDD143APWR模拟电源AVDD245APWR模拟电源LEFT46AO左声道输出AGND347APWR模拟地2.2.2 内部寄存器在VS1003的使用中除了需要对管脚作用的了解,还要对VS1003的内部寄存器有很好的了解。VS1003共有16个16位的寄存器,地址分别为0X00XF除了模式寄存器(MODE,0X0)和状态寄存器(STATUS,0X1)在复位后的初始值分别为0X800和OX3C外,其余的寄存器在VS1003初始化后的值均为0。在本次设计中对VS1003部分寄存器进行设置,其中主要介绍几个重要的SCI寄存器的功能及其设置。重要寄存器的定义、类型、参数、功能,详见表2-2。表2-2 SCI寄存器SCI寄存器,前缀SCI_寄存器类型复位值时间缩写bits描述0x0RW0x80070 CLKIMODE模式控制0x1RW0x3C40 CLKISTATUSVS1003状态0x2RW02100 CLKIBASS内置低音/高音增强器0x3RW011000 XTALICLOCKF时钟频率+倍频数0x5RW03200 CLKIAUDATAMisc.音频数据0xBRW02100 CLKIVOL音量控制通过上面的介绍简略的了解所用寄存器的名字、功能,但在使用过程中需要对各寄存器进行详细设置。下面将VS1003所用寄存器逐一进行详细介绍:在SCI寄存器中SCI_MODE用于控制VS1003的操作,其缺省值为0x0800。1、 MODE(地址0X0,RW,可读写)模式寄存器在VS1003中是一个比较重要的寄存器,其每一位都对应着VS1003的不同设置。bit0:SM_DIFF 微分。SM_DIFF=0 正常音频相位;SM_DIFF=1 左声道反转。当SM_DIFF 置位时,VS1003将左声道反相输出,立体声输入将产生环绕效果,对于单声道输入将产生差分(反相)左/右声道信号。bit1:SM_SETTOZERO 置零。bit2:SM_RESET。SM_RESET=1,VS1003 软复位。软复位之后该位会自动清零。bit3:SM_OUTOFWAV。SM_OUTOFWAV=1,停止WAV解码。当你要中途停止WAV、WMA或者MIDI文件的解码时,置位SM_OUTOFWAV,并向VS1003持续发送数据(对于WAV文件发送0)直到将SM_OUTOFWAV清零同时SCI_HIDAT1也将被清零。bit4:SM_PDOWN。SM_PDOWN=1,软件省电模式,该模式不及硬件省电模式(可由VS1003的XRESET来激活)。bit5:SM_TESTS。SM_TESTS=1,进入SDI测试模式。bit6:SM_STREAM。SM_STREAM=1,使能VS1003的流模式。bit7:SM_PLUSV。SM_PLUSV=1,MP3+V解码使能。bit8:SM_DACT。SM_DACT=0,SCLK上升沿有效;SM_DACT=1,SCLK下降沿有效。bit9:SM_SDIORD。SM_SDIORD=0,SDI总线字节数据MSB在前,即须先发送MSBSM_SDIORD=1,SDI总线字节数据LSB在前,即须先发送LSB该位的设置不会影响SCI总线。bit10:SM_SDISHARE。SM_SDISHARE=1,SDI与SCI将共用一个片选信号(同时SM_SDINEW=1),即将XDCS与XCS这两根信号线合为一条,能省去一个I/O口。bit11:SM_SDINEW。SM_SDINEW=1,VS1002本地模式(新模式)。VS1003在启动后默认进入该模式。(这里所说的模式指的是总线模式。)bit12:SM_ADPCM。SM_ADPCM=1,ADPCM录音使能。同时置位SM_ADPCM和SM_RESET将使能VS1003的IMA ADPCM录音功能。bit13:SM_ADPCM_HP。SM_ADPCOM_HP=1,使能ADPCM高通滤波器。同时置位SM_ADPCM_HP、SM_ADPCM和SM_RESET将开启ADPCM录音用高通滤波器,对录音时的背景噪音有一定的抑制作用。bit14:SM_LINE_IN 录音输入选择。SMLINE_IN=1,选择线入(line in)SM_LINE_IN=0,选择麦克风输入(默认)。2、 SCI_BASS(地址0X2,RW,可读写)重音/高音设置寄存器。VS1003的内置的重音增强器VSBE是种高质量的重音增强DSP算法,能够最大限度的避免音频削波。当SB_AMPLITUDE(bit:74)不为零时,重音增强器将使能。可以根据个人需要来设置SB_AMPLITUDE。例如SCI_BASS=0x00f6,即对60Hz以下的音频信号进行15dB的增强。当ST_AMPLITUDE(bit:1512)不为零时,高音增强将使能。例如,SCI_BASS=0x7a00,即10kHz以上的音频信号进行10.5dB的增强。3、 SCI_CLOCKF(地址0X3,RW,可读写)。bit15bit13:SC_MULT时钟输入XTALI的倍频设置,设置之后将启动VS1003内置的倍频器。bit12bit11:SC_ADD用于在WMA流解码时给倍频器增加的额外的倍频值。bit10bit0:SC_FREQ当XTALI输入的时钟不是12.288M时才需要设置该位段,其默认值为0,即VS1003默认使用的是12.228M的输入时钟。4、 SCI_AUDATA(地址0X5,RW,可读写)。当进行正确的解码时,该寄存器的值为当前的采样率(bit:15bit1)和所使用的声道(bit0)。采样率须2的倍数;bit0=0,单声道数据,bit0=1,立体声数据。写该寄存器半直接改变采样率。5、 SCI_VOL(地址0XB,RW,可读写)。音量控制寄存器。高八位用于设置左声道,低八位用于设置右声道。设置值为最大竟是的衰减倍数,步进值为0.5dB,范围为0到255。最大竟是的设置值为0x0000,而静音为0xffff。例如:左声道:2.0dB,右声道:3.5dB,则SCI_VOL=(4X256)+7=0x0407。硬件复位将使SCI_VOL清零(最大音量),而软件复位将不改变音量设置值。(设置静音(SCI_COL=0XFFFF)将关闭模拟部分的供电。)2.2.3 数据通信VS1003与核心控制器STC12C5A60S2的数据通信是通过SPI总线方式进行的。VS1003通过串行命令接口(SCI)和串行数据接口(SDI)来接收STC12C5A60S2的控制命令和MP3的数据;通过xCS、xDCS引脚的置高/低来确认是哪一个接口处于传送状态。VS1003的功能控制,是通过SCI口写入特定寄存器实现的。在音频流解码系统中,要以VS1003为从机数据应答模块得到顺畅的模拟音频流,必须依据VS1003关于SPI协议下其自身特定的SPI工作原理对STC12C5A60S2进行编程控制才能实现。VS1003特定的SPI协议可分为两大类:SCI( Serial Command Interface,串行命令接口)传输和SDI( Serial Data Interface,串行数据接口)传输SCI传输是指VS1003为实现基于SPI协议的数据传输而率先进行的命令传输。该命令传输也是基于SPI协议,但具体协议内容因命令的不同而不同。STC12C5A60S2必须完全依据SCI命令的协议格式去编写代码才有可能实现初步的SPI通信。由于SPI协议本身是全双工的同步通信方式,因此对于SCI传输过程,VS1003定义了读、写2套命令操作机制。写命令操作相对于读命令操作更为重要,主要用于告知从机关于数据通信的具体类别,而读命令操作只在某些调试中用于监视通信是否正常。数据应答是衡量SPI数据是否被从机正确接收和从机是否准备接收下一批SPI数据的重要标识信号。在硬件上该控制位是独立的,是VS1003独有的数据请求返回管脚。毕竟无论是SCI传输还是SDI传输,VS1003在整个系统的SPI传输中都是完全被动地接收数据的,而VS1003本身还承担着实时处理音频数据的责任,如果VS1003的处理时序与主机的传输时序发生了冲突,那么VS1003被动接收的数据将变得无效,进而使整个系统数据传输失效;如果VS1003在被动接收数据的前提下能够根据自身的数据处理时序发出数据请求标识,表明在某一段时间内数据传输可以进行,在另一段时间内数据传输需要稍微暂停一下,那么整个SPI数据传输就会与音频信号处理时序协调起来,实现流畅的音频数据传输和处理。因此数据应答是一个非常重要的通信标识逻辑,完全由VS1003自动产生。对于主机则必须时刻依据数据应答调整SPI传输时序。VS1003的SCI传输协议通常包含一个8 bit的指令字节、一个8 bit的地址字节和一个16 bit的数据字节。具体操作通常由8 bit的指令字节来确定。每次SCI传输后数据请求返回管脚( DREQ)都会被设置为低,VS1003是不允许在数据请求返回管脚变为高之前开始新的SCI或SDI传输的。SDI传输是指VS1003基于SPI协议的数据传输,完全是音频流数据,VS1003在接收SDI数据的同时完成片内的音频解码数据处理任务,以2B为单位进行SDI数据的传输和处理,每传输完2B的二进制音频数据,VS1003就在数据请求返回管脚上设置一个低电平。该管脚在再次变为高电平之前,主机不能连续向从机发送SDI数据,否则数据将被自动舍弃无效。SCI读数据过程如图2-2所示。图2-2 SCI读数据XCS线就是该系统的CS信号传输线。它本身只是一个片选和使能的功能。VS1003的内部地址里都有固定的参数作为内存数据,当对这些内部地址进行读操作时就会把里边的参数读出来。因此,首先STC12C5A60S2的XCS线上信号需要拉低以选择芯片,这是SPI协议的一个关键。然后读指令代码0x03将会通过STC12C5A60S2的SI管脚被传输至VS1003。读指令代码之后紧跟一个8bit的地址字节。在该地址被读入之后,任何在SI管脚上传输的数据都将被忽略。刚才所传输地址空间中包含的16bit固定参数将会紧跟着在SO管脚上返回给STC12C5A60S2,用于监视通信。数据传输完成后,XCS线上的信号需要被拉高。最后VS1003的DREQ管脚上的信号会因为VS1003的处理而有短暂的拉低,很快会自动变为高电平以迎接下一个SCI指令。SCI写数据过程如图2-3所示。图2-3 SCI写数据它与SCI读数据类似,也是先将XCS线拉低以选择芯片。然后写指令代码0x02经由SI管脚被传输至VS1003。写指令代码之后也是一个8 bit的地址字节,只不过该地址是用来存放将要传输来的SPI数据的。整个过程中SO管脚是闲置的。在整个数据传输过程中,SCI传输与SDI传输之间是紧密跟进的,因此在编写代码时必须非常注意真正的时序,尤其是注意DREQ信号的高低状态和XCS线的高低选择。对于图2-4所示的2个相邻的SCI命令传输过程,XCS信号必须在2个SCI传输中被拉高,当检测到DREQ线上信号变高后再拉低以进行SCI传输。而对于图2-5所示的2个相邻的SDI字节传输过程,由于传输的只是SDI数据,完全没有必要采取DREQ的中断。因此XCS信号可持续走高以放心通信,直到2B的SDI数据传完,再看DREQ管脚上的信号以判断是否继续通信。2个SDI传输之间的SCI传输过程(见图2-6),只要有SCI传输,在传输完成之后就一定存在一个DREQ低电平返回,DREQ与SCI传输是匹配的。图2-4 两个相邻的SCI命令(4B)传输过程图2-5 两个相邻的SDI字节传输过程图2-6 两个SDI传输之间的SCI传输过程2.2.4 模块设计及其与单片机的连接通过上面的几节对VS1003的介绍,能初步的对VS1003进行硬件设计,VS1003工作时需要3.3V、2.5V的电压提供,为了模块的小型化本设计中采用稳压芯片将单片机工作电压(5V)降压到3.3V、2.5V提供给VS1003的I/O电源与模拟电源、处理器工作电压。要使VS1003工作必须在17、18脚接晶振电路;3脚(异步复位端)接上电复位电路;8脚(数据请求)需要与控制器连接;9、10、33、34脚(通用I/O口)这里没有用到下拉100K电阻;13脚(数据片选/字节同步)需要与控制器连接;23脚(片选信号)需要与控制器连接;26脚(UART接收口)本设计不用但需要接IOVDD;28脚(串行时钟)需要与控制器连接;29脚(串行输入)需要与控制器连接;30脚(串行输出)上拉10K电阻;32脚测试用接IOVDD;39脚(右声道输出)接到耳机的右声道输出;42(公共缓存地)用于耳机接地;46(左声道输出)接到耳机左声道输出,上述的与单片机连接的引脚通过插排引出。具体连接详见图2-7。图2-7 VS1003设计图第3章 存储模块3.1 SD储存卡简介SD储存卡(Secure Digital Memory Card)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD储存卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。大小犹如一张邮票的SD记忆卡,重量只有2克,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。SD储存卡在24mm32mm2.1mm的体积内结合了(SanDisk)快闪记忆卡控制与MLC(Multilevel Cell)技术和Toshiba(东芝)0.16u及0.13u的NAND技术,通过9针的接口界面与专门的驱动器相连接,不需要额外的电源来保持其上记忆的信息。而且它是一体化固体介质,没有任何移动部分,所以不用担心机械运动的损坏。SD储存卡(Secure Digital Memory Card)是一种基于半导体闪存工艺的存储卡,1999年,由日本松下、东芝及美国SanDisk公司共同研制完成。2000年,这几家公司发起成立了SD协会(Secure Digital Association简称SDA),阵容强大,吸引了大量厂商参加。其中包括IBM,Microsoft,Motorola,NEC,Samsung等。在这些领导厂商的推动下,SD储存卡已成为目前消费数码设备中应用最广泛的一种存储卡。SD储存卡多用于MP3随身听、数码摄像机、数码相机等,也有用于笔记本电脑上。其投影面积与MMC卡相同,只是略微厚一点,为2.1mm,但是SD储存卡的容量大得多,且读写速度也MMC卡快4倍。同时,SD储存卡的接口与MMC卡是兼容的,支持SD储存卡的接口大多支持MMC卡。目前SD储存卡在数码相机中正在迅速普及,大有成为主流之势。这是由于SD储存卡的体积要比CF卡小很多,并且SD储存卡在容量、性能和价格上和CF卡的差距越来越小,而这两年支持SD储存卡的手机迅速在市场走热,因此,SD储存卡的迅速成长绝对不是偶然的。最重要的一点就是MMC卡也能和SD储存卡相兼容,这也正是SD储存卡迅速走红的原因之一。现在的SD储存卡容量由8MB到128GB不等。3.2 SD储存卡硬件设计SD储存卡可以设计出便宜的播放器和驱动器而没有可移动的部分。使用非常有效的数据压缩比如MPEG,SD储存卡可以提供足够的容量来应付多媒体数据。3.2.1 SD存储卡硬件结构与接口模式SD储存卡有9个引脚,引脚的排序和卡内部结构如图3-1所示,引脚的功能与模式见表3-1。它的内部包括接口驱动器、时钟、寄存器组、卡接口控制器、上电检查、存储器核和接口。SD存储卡上的所有单元有内部时钟发生器提供时钟。图3-1 SD储存卡的引脚和内部结构SD储存卡上所有单元由内部时钟发生器提供时钟,接口驱动单元通过DAT和CMD同步外部时钟的信号到内部所用时钟。SD储存卡由6线接口控制,包括:CMD,CLK,DAT0-DAT3,在多SD储存卡垛叠中为了标识SD储存卡,使用卡标识寄存器(CID)和相应地址寄存器(RCA)。CSD寄存器包括不同类型操作参数,SD储存卡有自己的电源开通检测单元,无需附加的主复位信号,有防短路功能,在带电插入或移出卡时,无需外部控制电压。SD储存卡的接口可以支持两种操作模式:SD储存卡模式和SPI模式。主机系统可以选择以上其中任一模式,SD储存卡模式允许4线的高速数据传输。SPI模式允许简单通用的SPI通道接口,这种模式相对于SD模式的不足之处是丧失了速度。SD总线允许强大的1线到4线数据信号设置。当默认的上电后,SD储存卡使用DAT0。初始化之后,主机可以改变线宽。混和的SD储存卡连接方式也适合于主机,在混和连接中Vcc,Vss和CLK的信号连接可以通用,但是命令、回复、和数据(DAT03)这几根线,各个SD储存卡必须从主机分开。这个特性使得硬件和系统上交替使用。SD总线上通信的命令和数据比特流从一个起始位开始,以停止位中止。CLK:每个时钟周期传输一个命令或数据位。频率可在025MHz之间变化。SD储存卡的总线管理器可以不受任何限制的自由产生025MHz的频率。CMD:命令从该CMD线上串行传输。一个命令是一次主机到从卡操作的开始。命令可以以单机寻址(寻址命令)或呼叫所有卡(广播命令)方式发送。回复从该CMD线上串行传输。一个命令是对之前命令的回答。回复可以来自单机或所有卡。DAT03:数据可以从卡传向主机,数据通过数据线传输。SPI总线允许通过2通道(数据入和出)传输比特数据。SPI兼容模式使得MMC主机系统通过很小的改动就可以使用SD储存卡。SPI模式使用字节传输,所有的数据被融合到一些字节中并通过CS信号来校正。SPI模式的优点就是简化主机的设计。表3-1 SD储存卡接口模式引脚分配引脚编号SD模式SPI模式名称类型描述名称类型描述1CD/DAT3IO或PP卡检测/数据线3#CSI片选2CMDPP命令/回应DII数据输入3VSS1S电源地VSSS电源地4VDDS电源VDDS电源5CLKI时钟SCLKI时钟6VSS2S电源地VSS2S电源地7DAT0IO或PP数据线0DOO或PP数据输出8DAT1IO或PP数据线1RSV9DAT2IO或PP数据线2RSV注:S:电源供给I:输入O:采用推拉驱动的输出PP:采用推拉驱动的输入输出3.2.2 SD命令1. SD储存卡的命令格式:SD储存卡的指令由6字节(Byte)组成,如下:Byte1:0 1 x x x x x x(命令号,由指令标志定义,如CMD39为100111即16进制0x27,那么完整的CMD39第一字节为01100111,即0x27+0x40)Byte2-5:Command Arguments,命令参数,有些命令没有参数。Byte6:前7位为CRC(Cyclic Redundacy Check,循环冗余校验)校验位,最后一位为停止位0。2. SD储存卡的命令SD储存卡命令共分为12类,分别为class0到class11,不同的SD储存卡,主控根据其功能,支持不同的命令集如下:Class0:卡的识别、初始化等基本命令集CMD0:复位SD卡。 CMD1:读OCR寄存器。 CMD9:读CSD寄存器。 CMD10:读CID寄存器。 CMD12:停止读多块时的数据传输。 CMD13:读Card_Status寄存器。Class2:读卡命令集 CMD16:设置块的长度。 CMD17:读单块。 CMD18:读多块,直至主机发送CMD12为止。Class4:写卡命令集 CMD24:写单块。 CMD25:写多块。 CMD27:写CSD寄存器。Class5:擦除卡命令集 CMD32:设置擦除块的起始地址。 CMD33:设置擦除块的终止地址。 CMD38:擦除所选择的块。Class6:写保护命令集 CMD28:设置写保护块的地址。 CMD29:擦除写保护块的地址。 CMD30:对地址写保护位。Class7:卡的锁定,解锁功能命令集。Class8:申请特定命令集。Class1011:保留。其中Class1,Class3,Class9:SPI模式不支持。3.3.3 SD存储卡数据操作鉴于在单片机中应用时,多数情况下对数据的传输速率要求不是太高,所以使用SPI接口模式。SD储存卡的初始化是非常重要的,只有进行了正确的初始化,才能进入SPI模式。在初始化过程中,SPI的时钟不能太快,否则会造初始化失败。在初始化成功后,应尽量提高SPI的速率。在刚开始要先发送至少74个时钟信号,这是必须的。在很多读者的实验中,很多是因为疏忽了这一点,而使初始化不成功。随后就是写入两个命令CMD0与CMD1,使SD储存卡进入SPI模式进行。初始化命令为CMD1,由0x41,0x00,0x00,0x00,0x00,0xFF组成。前两位固定为01,命令索引号为000001,32位参数为0,CRC校验为1111111,结束标志为1。首先把片选CS拉低,发送CMD1信号;插入一定量的时钟信号,等待SD在SPI模式下的复位;如果收到00h的信号表明初始化成功,如果收到的信号始终是FFh,则表明初始化失败,需要重新初始化操作;拉高片选CS,并且发送8位时钟信号,完成整个初始化操作。图3-2 初始化时序图CID寄存器存储了SD储存卡的标识码。每一个卡都有唯一的标识码。CID寄存器长度为128位,它的寄存器结构见表3-2,图3-3 为读CID时序图。表3-2 CID寄存器结构名称域数据宽度CID划分生产标识号MID8127:120OEM/应用标识OID16119:104产品名称PNM40103:64产品版本PRV863:56产品序列号PSN3255:24保留423:20生产日期MDT1219:8CRC7校验合CRC77:1未使用,始终为110:0图3-3读取CID时序CSD(Card-Specific Data)寄存器提供了读写SD储存卡的一些信息。其中的一些单元可以由用户重新编程。对CSD操作的时序见图3-4。图3-4 读取CSD 的时序读扇区是对SD储存卡驱动的目的之一。SD储存卡的每一个扇区中有512个字节,一次扇区读操作将把某一个扇区内的512个字节全部读出。对SD储存卡的操作主要是对存储在SD储存卡的数据进行读写,SPI模式下的读扇区操作时序如图3-5所示。读扇区命令为CMD17,由0x51,32位读地址,0xFF组成。前两位固定为01,命令索引号为010001,参数为32位读扇区地址,CRC校验为1111111,结束标志为1。首先把CS拉低,发送CMD17,插入一定量的时钟信号,等待命令发送成功,当收到00h信号后表明命令发送成功,如果始终收到的是FFh则表明发送命令失败,需要重复发送,插入一定量的时钟信号,等待读取扇区数据。当收到0xFE标志后,表示随后的512字节为接收的数据,512个字节后是两字节CRC校验位,但在SPI模式下,并不关心这些位的具体数值。操作结束,拉高CS位,并发送8个时钟信号。读取的数据长度可以由CMD16设定,默认值是512个字节。图3-5 读扇区的时序写扇区是SD储存卡驱动的另一目的。每次扇区写操作将向SD储存卡的某个扇区中写入512个字节。写扇区操作可以分成三部分,第一是写命令CMD24,时序与前面的读扇区相同。CS拉低,写入CMD24,插入一定量的时钟信号,当读回的是00h时,表示命令写入成功,然后再插入一定量的时钟信号。第二是向SD储存卡写入512字节的数据,同读扇区命令相同,写入的字节数也可由CMD16设定,默认是512字节。首先写入扇区开始标志FFh,紧接着写入512字节的数据,最后是两字节的CRC校验,因为SPI模式下并不关心CRC校验的数据,CRC校验的数据可以是两个0xFF。发送完数据后可以连续读SD储存卡,如果读回的数据的低五位是00101表明写入的512个字节的数据被SD储存卡所接收,整个过程如图中5-8部分。第三是将数据存入SD储存卡相应的flash存储单元中,这个过程需要一定时间,在此时间段,SD储存卡呈现忙状态,读SD储存卡数据端数据为00h,此时间段需要发送一定量的时钟信号;直到读SD储存卡的数据端读回的数据是FFh,表示数据写入成功,拉高CS片选,插入8个时钟信号。图3-6 写扇区的时序第4章 FAT32在单片机上的实现4.1 FAT32文件系统概述文件系统在操作系统中体现文件命名、存贮和组织的整体结构,由文件、目录和对这些项目定位及存取所需的信息组成。Windows95 OSR2和Windows 98开始支持FAT32文件系统,它是对早期DOS的FAT16文件系统的增强,由于文件系统的核心-文件分配表FAT由16位扩充为32位,所以称为FAT32文件系统。在一逻辑盘(硬盘的一分区)超过512兆字节时使用这种格式,会更高效地存储数据,减少硬盘空间的浪费,一般还会使程序运行加快,使用的计算机系统资源更少,因此是使用大容量硬盘存储文件的极有效的系统。本人对Windows 98下的FAT32文件系统做了分析实验,总体上与FAT16文件系统变化不大,现将有关变化部分简介如下:(1) FAT32文件系统将逻辑盘的空间划分为三部分,依次是引导区(BOOT区)、文件分配表区(FAT区)、数据区(DATA区)。引导区和文件分配表区又合称为系统区。

温馨提示

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

评论

0/150

提交评论