已阅读5页,还剩93页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编号毕业设计说明书论文课题便携式音乐播放器设计学院电子工程与自动化学院专业电子信息科学与技术学生姓名学号指导教师职称高级研究员题目类型理论研究实验研究工程设计工程技术研究软件开发2013年4月20日摘要摘要随着电子行业的迅猛发展,人们对消费类电子产品的需求越来越高,多功能便携式MP3也越来越受大众的青睐。根据消费者的爱好需求,各种多功能的MP3层出不穷,其尽可能的吸收照相机、手机等电子产品的其它功能。本次系统设计采用ARMCORTEXM3内核的STM32F103VET6作为微控制器、SD卡作为存储介质、VS1003作为音频解码芯片以及TFT彩晶屏作为人际交互设备,设计一款可播放MP3、WAV文件格式的便携式音乐播放器,并实现相关功能。本次设计的重点是了解FAT文件系统的构造、SD卡的读取、VS1003芯片的解码过程、人机交互设备的控制操作以及各主从机之间的通讯方式。其中,STM32F103系列集成了低功耗、IO资源多、通信接口多、体积小、价格适中等多项优点;随着日本松下、东芝及美国SANDISK公司于1999年8月共同研制,SD卡被广泛应用与闪存介质,并易于读取;VS1003是一个多功能的MP3、WAV解码芯片,自带DAC,具有无相位差的立体声输出;TFT显示屏集成了触控特点使得人机交互更为简便、程序编写更为简洁。关键字STM32F103VET6SD卡VS1003解码芯片;TFT彩晶屏;便携式音乐播放器。摘要ABSTRACTWITHTHERAPIDDEVELOPMENTOFTHEELECTRONICSINDUSTRYTHECONSUMERELECTRONICPRODUCTSHAVEBEENUSEDMOREOFTENBYPEOPLEBECAUSEOFTHEIRGROWINGDEMANDITSPOPULARTOHAVEAMULTIFUNCTIONPORTABLEMP3FORPEOPLEWITHTHEINCREASINGLYFAVOREDBYTHEPUBLICAVARIETYOFMULTIFUNCTIONMP3AFTERANOTHERACCORDINGTOTHEDEMANDOFCONSUMERTHEYWEREPRODUCEDWITHABSORBTHEOTHERFEATURESOFTHECAMERAS,CELLPHONESANDOTHERELECTRONICPRODUCTSASMUCHASPOSSIBLETHESYSTEMUSEDTHEARMCORTEXM3CORESTM32F103VET6ASMICROCONTROLLER,SDCARDASTHESTORAGEMEDIUM,VS1003ASHUMANINTERACTIONASTHEAUDIODECODERCHIP,ANDTFTDISPLAYSCREENEQUIPMENTTOMAKEAPORTABLEMUSICPLAYERWITHTHEFUNCTIONTHATCOULDPLAYWAVANDMP3FILESINTHISDESIGN,ANDSOMERELATEDFUNCTIONSTHEDIFFICULTYLIEINDESIGNISFOCUSEDONUNDERSTANDINGTHESTRUCTUREOFTHEFATFILESYSTEM,HOWTOREADSDCARD,THEPROCESSOFDECODINGINVS103CHIP,THECONTROLOFHUMANCOMPUTERINTERACTIONANDTHECOMMUNICATIONBYMASTERANDSLAVEAMONGOFTHESEDEVICES,STM32F103SERIESINTEGRATESALOWPOWER,IORESOURCES,COMMUNICATIONINTERFACE,SMALLSIZE,AFFORDABLEANDMANYOTHERADVANTAGESPANASONIC,TOSHIBA,SANDISKCORPORATIONANDTHEUNITEDSTATESDEVELOPTOGETHERINAUGUST1999SDCARDSAREWIDELYAPPLICATIONANDFLASHMEDIA,ANDEASYTOREADVS1003ISAMP3,WAVDECODERCHIPWITHMANYFUNCTION,BUILTINDACANDSTEREOOUTPUTWITHNOPHASEDIFFERENCETFTASADISPLAYMAKETHEHUMANCOMPUTERINTERACTIONEASIERANDPROGRAMMINGMORECONCISEBYINTEGRATINGTOUCHFEATURESKEYWORDSSTM32F103VET6SDCARDVS1003DECODERCHIPTFTDISPLAYSCREENPORTABLEMUSICPLAYER目录目录引言11设计任务与思路211设计任务212设计思路22器件选择和系统框图221器件选择222系统框图与概述23硬件电路设计431电源模块432微控制器模块533SD卡模块634音频解码模块735音频放大模块836彩晶显示模块937复位模块104FAT文件系统1041FAT文件系统简介1042FAT文件系统的读取操作125系统软件设计1551STM32程序调试15511STM32启动简析15512STM32程序测试17513STM32时钟系统1952TFT显示驱动2153SD卡读取驱动23531SD卡总线拓扑23532寄存器与协议23533驱动流程图2654VS1003驱动设计26541VS1003总线拓扑26目录542VS1003主要寄存器28543VS1003相关协议29544读写时序29545驱动流程与框图3055系统软件流程图316实物与功能3161实物总图3262利用电池供电3363支持WAV和MP3格式3364支持SD卡存储3465可选择播放3466可快进快退357自我总结36谢辞38参考文献39附录一40附录二46桂林电子科技大学毕业设计(论文)报告用纸共58页第1页引言在INTERNET广泛普及的今天,MP3音乐一起较小数据流量和近乎完美的播放效果已经成为计算机和INTERNET上最流行的音乐格式了。将CD格式的音乐数据压缩成MP3格式,音效相差无几,文件大小却至少可以压缩12倍(每首PCM格式的CD歌曲大约40MB至50MB数据流量)。自韩国世韩公司1998年推出世界上第一台MP3随身听以来,MP3播放器以其小巧外形,近乎于CD的音质,前卫的功能,越来越受到消费者的青睐,也就成为业界甚至大众媒体关注的一个热门话题。它的记录媒介是芯片或卡,无需转动部件,彻底摆脱磁盘和光碟的束缚,因而抗震性和节点性能更好。在市场消费的刺激下,各大公司纷纷推出了自己的MP3播放器产品。除了MICRONAS方案、ST方案、TI软解压单芯片方案,还有台湾创品方案、美国SIGMATEL方案等。进入2004年,当MP3在容量、外观、音质上的发展无法再吸引更多眼球的时候,开始转向多功能发展,正如在手机身上所发生的一切,人们对于MP3的要求,不再是单一的欣赏音乐,而是向手机一样身兼多职。作为全球第一款闪存式彩屏MP3,信利MP301的推出引起了MP3市场的巨大关注,除了彩屏的加入,MP301还支持图书、图片浏览及游戏功能,多功能融合,是消费类电子产品的发展趋势。MP3播放器的诞生,为传统随身听带来了致命打击。曾几何时,MP3和MD之间的斗争成为业界最热门的话题,当时甚至多数人都认为MP3由于音质上的原因将白给MD,但事实上,MP3的发展远远超出了MD支持者们的预想。直至今日,MP3已成为随身听市场的主流产品,并成为了继手机之后最为广泛使用的个人随身电子产品。抱着学习的态度,秉着严谨的精神完成此次音乐播放器的设计。桂林电子科技大学毕业设计(论文)报告用纸共58页第2页1设计任务与思路11设计任务本设计课题是一个软硬件相结合的设计类题目。要求设计一个具有如下要求的便携式音乐播放器利用电池供电、支持WAV和MP3格式、支持U盘CF卡或者SD卡,可选择播放、可快进快退。12设计思路整个系统主要由微控制器、音频解码部分、音效处理部分、SD卡部分、人机交互部分、按键复位部分、电源部分、程序口下载部分组成,整个系统由MCU控制,各个部分协调运作。2器件选择和系统框图21器件选择该系统要求能够对MP3、WAV格式的音频文件进行解码,处理起来速度是有要求的,尤其是对320KBPS的MP3格式数据流的处理,必须非常快,才能实现MP3的流畅播放,可供选择的八位机有AVR、PIC,可供选择的32位处理器有SAMSUNG、STM32、ATMEL等。选择MCU优先考虑于拥有丰富的RAM,八位机RAM主要靠扩展,内部RAM一般在4KBYTE以内,32位机里面,SAMSUNG一般不内带RAM,也要外扩。出于成本的考虑,外扩RAM,FLASH芯片必然会增加成本,所以控制芯片最好选择自带RAM,FLASH,本次课题设计选择使用STM32F103VET6作为微控制器。本次课题设计要求的储存媒介是U盘CF卡或者SD卡。SD卡以其价格低、体积小、扩存容易等优势迅速占据市场,使用也越来越广泛。以此同时,各种MCU同时也在内部集成了SD控制器。出于成本和使用方便等因素的考虑,本次课题设计选择使用SD卡作为储存媒介。由于使用了ARM7处理器,MP3解码可以有两种方法,一是通过ARM处理器软解码,通过对MP3数据格式的解析实现MP3播放,二是通过外部解码芯片直接解码。第一种方法在解码高码率的MP3时,ARM7处理能力吃紧,而且STM32还需要外部DAC来做音频输出,所以采用第二种方法进行解码。MP3常见的解码芯片有VS100X系列和STA01系列,STA01需要外接DAC做音频输出,而VS1003自带DAC,且解码的文件格式包含MP3和WAV,另外它还可以实现录音功能,方便以后进行功能的拓展应用。人机交互设备包括输入设备和输出设备,选择硬件考虑到程序的调试控制,这里选择一款3寸的TFT液晶屏,其分辨率位240400,工作模式为16位数据模式,通讯速度较快。22系统框图与概述目录本次课题设计采用STM32F103VET6作为为控制器读取SD卡内的音乐文件,并将数据送入VS1003进行音频解码,得到模拟的音乐流,再进过音频放大送入耳机,同时结合TFT液晶屏进行人机交互控制,其系统框图如图21所示。桂林电子科技大学毕业设计(论文)报告用纸共58页第3页图21系统框图3硬件电路设计31电源模块电源模块是电子设备中必不可少的一部分,它位设备提供了能量。如图31所示为该系统的电源模块电路,5V电压经过AMS111725、AMS111728和AMS111733产生25V、28V和33V直流电压供系统使用。C31可以防止电感效应而产生自激,C33用来减小由于负载电流瞬时变化而引起的高频干扰,C32是进一步减小输出脉动和低频干扰,使电源输出更加稳定,SP位电源开关,D1和D2位电源指示灯。图31电源模块电路STM32F103VET6微处理器JTAG程序下载口SD卡电源部分VS1003音频解码音频放大耳机接口TFT触摸液晶复位桂林电子科技大学毕业设计(论文)报告用纸共58页第5页32微控制器模块微控制器STM32F103VET6控制着整个系统协调运作。STM32F103VET6基于ARMCORTEXM3内核设计,片上集成了丰富的数字和模拟资源,允许最高72MHZ的工作频率是一款性价比很高的32位ARM处理器,其管脚封装图如图32。自带128KB闪存和20KB的RAM,具有2个SPI接口、2个IIC接口3个USART接口一个USB接口和一个CAN总线接口,高达80个I/O口资源,采用外部8MHZ时钟经过倍频因子PLLMUL可倍频至72MHZ,通过一些列的AHB分频器可设置各种外设所需的频率以达到低功耗的目的。图32STM32F103VET6管脚图微控制器电路模块如图33。图中BOOT0为插针,用于选择启动模式当BOOT1时用户闪存存储器被选为启动区域,此时可以通过串口下载程序;当BOOT0时;系统存储区被选为启动区域。电容C11、C12、C13和C15为谐振电容,有助于系统时钟和RTC时钟的启振,在设计时,晶振要尽可能靠近芯片。电容C14、C16、C17、C20位芯片电源引脚的旁路电容,能够起到稳定电源的作用。微控制器各引脚接口描述如表31所示。图33微控制器模块电路桂林电子科技大学毕业设计(论文)报告用纸共58页第6页表31STM32F103VET6主要引脚接口描述STM32F103VET6引脚序号接口类型接口作用8、9RTC时钟晶振接口32768KHZ晶振Y112、13系统时钟接口8MHZ晶振Y283SD卡命令控制SDIO_CMD80SD卡时钟控制SDIO_CLK65、66、78、79SD卡控制器接口SD卡数据通讯SDIO_DATA97异步复位端,低电平有效XREST51片选输入端,低电平有效XCS63数据片选端/字节同步XDCS/BSYNC52串行总线时钟SCLK54串行输入SI53VS1003控制接口串行输出SO98复位88片选30时钟SCK31MISO32MOSI3846,5557,61,62,81,82TFT液晶屏接口16位数据接口DATA33SD卡模块SD卡(SECUREDIGITALMEMORYCARD)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备。SD卡的物理规格、管脚功能和数据传输协议时MMC(MULTIMEDIACARD)前向兼容的。它被广泛用于便携式装置上使用,例如数码相机、个人数码助理PDA和多媒体播放器。SD卡由日本松下、东芝及美国SANDISK公司于1998年共同开发研制。大小犹如一张邮票的SD记忆卡,重量只有2克,但却拥有高记忆容量、快速数据传输率、极大的移动性以及很好的安全性。SD卡标准是SD卡协会针对可移动存储设备设计专利并授权的一种标准,主要用于制定卡的外形尺寸、电气接口和通讯协议。其中SD卡外形尺寸如图34,引脚功能如表32图34SD卡外形尺寸桂林电子科技大学毕业设计(论文)报告用纸共58页第7页表32SD卡引脚图SDMODESPIMODEPINNAMETYPEDISCRIPTIONNAMETYPEDISCRIPTION0DATA2I/O/PPDATALINERSVIRESERVED1DATA3I/O/PPDATALINECSICHIPSELECT2CMDPPCOMMANDDATAINIHOSTTOCARD3VSSISGROUNDVSSISGROUND4VDDSVOLTAGEVDDSSUPPLYVOLTAGE5CLKICLOCKCLKICLOCK6VSS2SVOLTAGEVSS2SVOLTAGE7DATA0I/O/PPDATALINEDATAOUTOCARDTOHOST8DATA1I/O/PPDATALINERSVURESERVED由于SD卡的广泛引用,各种常用MCU内部都集成了SD控制器,而恰好本次设计选取的STM32F103VET6内部也含有SD控制器接口。为了获得更大的数据传输速度,本次设计采用SD模式进行主从机之间的通讯。该模式下具有6根通讯线(DATA03,CMD,CLK)和三根电源线(VSS1,VSS2,VDD)。电路模块如图35,其中RVA0RVA4为增强驱动能力。图35SD卡电路模块34音频解码模块本次课题设计采用的解码芯片是VS1003,VS1003是芬兰VLSI公司生产的单芯片MP3/WMA音频解码芯片,其拥有一个高性能、低功耗的DSP处理器核VSDSP,5KB的指令RAM,05KB的数据RAM,串行的控制和数据输入接口,4个通用的I/O口,1个UART口,1个可变采样率的DAC,1个立体声DAC以及音频耳机放大器。其内部结构如图36所示。桂林电子科技大学毕业设计(论文)报告用纸共58页第8页图36VS1003内部结构桂林电子科技大学毕业设计(论文)报告用纸共58页第9页VS1003通过一个串行接口来接收输入的比特流,它可以作为一个系统的从机。输入的比特流被解码,然后通过一个数字音量控制器到达一个18位过采样多位DAC。通过串行总线控制解码器。除了基本的解码,在用户RAM中它还可以作其他特殊应用,例如DSP音效处理。其内部部分引脚功能如表33。表33VS1003部分引脚功能表引脚号管脚名称管脚功能6,14,19IOVDDI/O电源(典型值28V最大值36V)38,43,45,47APWR模拟电源(典型值25V最大值28V)5,7,24,31CVDD处理器内核电源(典型值28V36V)37,40,41,47AGND模拟地3XRESET低电平有效,异步复位端8DREQ数据请求,输入总线9GPIO2/DCLK通用I/O2,串行数据总线时钟10GPIO3/SDATA通用I/O3,串行数据总线数据13XDCS/BSYNC数据片选端/字节同步17和18XTALO、XTALI晶振输出和晶振输入23XCS片选输入,低电平有效28SCLK串行总线的时钟29和30SI和SO串行输入和串行输出39和46RIGHT和LEFT右声道输出和左声道输出在设计VS1003解码电路时,数字地与模拟地必须相互连接并尽量靠近VS1003以避免锁存上拉,为了能播放48KHZ采样率的音频文件,输入时钟使用12288MHZ。具体设计电路如图37所示。VS1003通过MISOMOSISCKSPI接口来接收输入的MP3数据,经过VS1003内置的采样DAC转换为音频模拟量,最后通过LEFTRIGHT和GBUF输出。表37VS1003接口电路35音频放大模块本次课题设计采用的音频功放芯片是TDA1308,TDA1308是AB类的数字音频CD专用耳机功放芯片。低电压、低失真、高速率、强输出等优异的性能是以往的TDA2822、TDA7050、LM386等“经典”功放望尘莫及的。芯片内采用MOS管输出,桂林电子科技大学毕业设计(论文)报告用纸共58页第10页可直接推动低阻抗耳机。因为封装和功能引脚位与一般的双运放相同,在特定条件下,也能当双运放使用。在低供电电压条件下,性能比一般的运放要好。因其封装体积小,低电压低功耗等特点,主要应用在便携式数字音频电路中,如DISCMAN,光驱的耳放电路等。其引脚配置与功能方框图如图38。图38TDA1308引脚配置和功能方框图在设计音频放大电路模块时,采用了同相放大电路的接法,设计电路如图39。输入信号电压A5V加到运放的同相输入端“”和地之间,输出电压通过RV1和RV2的分压作用,可得电压增益AV1RV2/RV1,本次设计采用RV1RV2,使得电压放大为原来的两倍,输出至耳机接口。图39音频放大电路36彩晶显示模块显示器采用奋斗STM32开发板30TFT(240400),本次设计的LCD触摸屏所采用的控制器为XPT2046,XPT2046是一种典型的逐次逼近型模数转换器(SARADC),包含了采样/保持、模数装换、串口数据输出等功能。芯片内部集成有一个25V的内部参考电压,也可以从外部直接输入参考电压。其中,接口采用MCU的FSMC功能,LCD片选CS采用FSMC_NE1P88,FSMC_A16P58作为LCD的RS选择,FSMC_NWE1P86作为LCD的/WR,FSMC_NOEP85作为LCD的/RD,LCD的RESET脚用CPU的PE1(P98)LCDRST,FSMC_D0FSMC_D15和LCD的D1D8D10D17相互连接,触摸屏接口采用SPI1接口,片选位PB7SPI1CS3,由于LCD背光采用恒流源芯片PT4101控制,桂林电子科技大学毕业设计(论文)报告用纸共58页第11页采用PWM控制信号控制背光的明暗,PWM信号由PD13LIGHTPWM来控制,触摸电路的中断申请有PB6INT来接收,其设计电路如图310所示。图310彩晶显示电路37复位模块复位电路如图311所示,当接通电源时,电容C10进行充电使得NRST为高电平。按下复位按键后,电容C10放电为低电平实现复位功能。图311复位电路4FAT文件系统41FAT文件系统简介MP3文件BMPTXT等文件在SD卡中是以FAT11的文件格式存储的,FAT即文件配置表,本系统采用FAT16/32。以FAT32为例,其数据信息常分为5个部分MBR区、DBR区、FAT区、FDT区和DATA区。由于SD卡一般不做引导盘,一般也不分区,因此通常无MBR区,直接从DBR区开始。各分区的含义如下。MBR区主引导记录区,该区存储了分区表等信息,位于SD卡的扇区0(物理扇区),在其分区信息里面记录了DBR所在的位置。DBR区内容为系统引导记录,它包括一个引导程序和一个被称为BPB(BIOSPARAMETERBLOCK)的本分区参数记录表。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、根目录大小、FAT个数,分配单元大小等重要参数。FAT区称为文件分配表(FAT表),一般一个卡上会存在2个FAT表,一个用作备份,一个用作使用。FAT表一般紧随DBR,另一个FAT表则紧随第一个FAT表。桂林电子科技大学毕业设计(论文)报告用纸共58页第12页FAT表记录了每个文件的位置和区域,是一种链式结构,FAT以“F8FFFF0FFFFFFFFF”这样的8个字节为表头,用以表示FAT表的开始,后面的数据每四个字节为一个簇项(从第2簇开始),用来标记下一个簇所在的位置,这样每个位置都存储了下一个簇,只要按着这个表走,就可以找到文件的所有内容。如果找到下一个簇的位置,里面记录的是“FFFFFF0F”,代表这个文件到此就结束了,没有后续簇了,这样一个文件的读取就结束了。FTD区该区的内容为文件目录表,FAT文件系统的一个重要思想是把目录(文件夹)当作一个特殊的文件来处理,FAT32甚至将根目录当作文件处理。FAT分区中所有目录文件,实际上可以看作是一个存放其它文件(文件夹)入口参数的数据表。因此,目录占用空间的大小并不等同于其下所有数据的大小,但也不等于0,通常占很小的空间。其具体的存储原理是不管目录文件所占空间为多少簇,一簇为多少扇区、多少字节,系统都会以32个字节为单位,进行目录文件所占簇的分配,各个字段定义如表41所列。DATA区该数据区存放文件的内容,SD卡所占用的空间绝大部分为此部分。如果文件长度大于一个簇的大小,需要多个簇来存放该文件,这些簇通过FAT链表串连起来。表41文件目录表各字段定义FAT32文件目录项32个字节的定义字节偏移量字数量定义078文件名8103扩展名0X00读写0X01只读0X02隐藏0X04系统0X08卷标0X10子目录111属性字节0X20归档121系统保留131创建时间的10毫秒位14152文件创建时间16172文件创建日期18192文件最后访问时间20212文件起始簇号的高16位22232文件的最近修改时间24252文件的最近修改日期26272文件起始簇号的低16位28314表示文件的长度桂林电子科技大学毕业设计(论文)报告用纸共58页第13页42FAT文件系统的读取操作一般硬盘的数据结构是按图41而建立的。图41FAT文件系统结构图启动区的内容,也就是第一个扇区,使用WINHEX软件查看,如图42所示。其中,带下划线或点线部分为有用内容,具体含义依次如下。图42FAT启动区EB5990跳转指令。4D53444F53352E30厂商标志和DOS版本号,这里是MSDOS50。0020偏移地址0BH,长度2注意这里数据的布局,高地址放高字节,低地址放低字节(数据为小端格式组织),所以数据应该是0200,就是512。表示的意思是,该磁盘每个扇区有512个字节。有的可能是1024、2048、4096。08偏移地址0DH,长度1表示每个簇有8个扇区。这个值不能为0,而且必须是2的整数次方,比如1、2、4、8、16、32、64、128。但是这个值不能使每个簇超过32KB。2400偏移地址0EH,长度2转换一下,就是0024,意思是保留区域中的保留扇区数为36个。那么就可以知道下面的FAT1区的开始的地址就是0X24200(每个扇区的字节数)0X4800。桂林电子科技大学毕业设计(论文)报告用纸共58页第14页02偏移地址10H,长度1此卷中的FAT结构的份数为2,另外一个是备份的。C603偏移地址24H,长度2每个FAT占用的扇区数,转换一下,为03C6。那么每个扇区占用的字节数就是0X03C620078C00。根据启动区、FAT1、FAT2、根目录、数据区的次序,可以依次计算出它们的地址。通过以上分析我们知道了启动区地址是0X00。FAT1表的起始地址的为0X4800,如图43所示。FAT2表的起始地址为0X48000X78C000X7D400,如图44所示。根目录区的起始地址为0X7D4000X78C000XF6000,如图45所示。图43FAT1的起始地址图44FAT2的起始地址图45根目录的起始地址从SD卡中读取数据需要给出数据的地址,而且每次读取都是一个整扇区,512个字节。找出这些地址后,可以很方便的找到数据。由此可见读取0扇区的内容,我们就知道FAT文件系统的重要参数了,现在分析下根目录区的内容。根据前面得到的根目录地址0XF6000,通过软件查看它的内容如图46所示。这里使用的是FAT32短文件目录项,每32个字节表示一个文件(文件夹也是)。具体含义分别如下。桂林电子科技大学毕业设计(论文)报告用纸共58页第15页5A53444C20202020驱动器的名称,8个字节。图46根目录中的数据5445535420202020偏移地址20H,长度8文件名TEST空缺部分是空格。545854偏移地址28H,长度3文件类型,为ASCII字符表示。20偏移地址2BH,长度1文件属性,00000000读写;00000001只读;00000010隐藏;00000100系统;00001000卷标;00010000子目录;00100000归档。5839偏移地址30H,长度2文件创建时间。5839偏移地址32H,长度2文件最后访问日期。0300偏移地址3AH,长度2起始簇的簇号为03。772D0000偏移地址3CH,长度4文件长度2D77就是11639字节。从文件的大小可以计算出,需要占用多少个簇。根据前面的数据,每个簇放8个扇区,每个扇区512个字节,那么一个簇的空间就是4096字节了,即4KB。那么11639字节需要3个簇,这三个簇的开始的地址就可以计算出来了。通过起始簇号计算得到起始簇的地址0XF6000(根目录区地址)(032)080X2000XF7000(第一个簇开始地址)这里03减去的02的意思是因为簇号都是从2开始的。第二个簇号存放在0X48000304(因为四个字节存一个簇号)0X480C中,通过图47可知0X480C里面的内容是04000000,即第二簇号为04。此时第二个簇的地址0XF6000(042)080X2000XF8000。依次查看FAT1表可知第三个簇号为05,地址0XF6000(052)080X2000XF9000。继续看看下一个簇号内容为0X0FFFFFFF,说明文件放置结束。图47FAT1表中的内容通过以上分析可以得到该文件数据存放的起始地址了0XF7000(第一个簇开始地址)0XF8000(第二个簇开始地址)0XF9000(第三个簇开始地址),他们在文件系桂林电子科技大学毕业设计(论文)报告用纸共58页第16页统中存储的数据分别如图图48图49图410所示。由此就可以获得该文件的数据了。图48簇中的数据1图49簇中的数据2图410簇中的数据35系统软件设计51STM32程序调试511STM32启动简析要想较清楚的了解STM32的启动则必然得对STM32库有初步的认知。STM32库是有ST公司针对STM32提供的函数接口,即API(APPLICATIONPROGRAMINTERFACE),开发者可调用这些函数接口来配置STM32的寄存器,使使用者得于脱离最底层的寄存器操作,有开发快速,易于阅读,维护成本低等优点。实际上,库是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关的配置,向上为用户提供配置寄存器的接口,库开发配置与直接配置寄存器方式区别如图51所示。桂林电子科技大学毕业设计(论文)报告用纸共58页第17页对于STM32,因为外设资源丰富,带来的必然是寄存器的数量和复杂度的增加,这是如果直接配置则开发速度慢、程序可读性差。这两个缺陷直接影响了用户使用效率,而库开发方式则正好弥补了这两个缺陷。相对于库开发的方式,直接配置方式产生的代码会相对减少,但因为STM32有充足的资源,权衡库开发的优势与不足,本次设计采用库开发方式实现寄存器的配置。图51驱动方式STM32采用的是CORTEXM3内核,内核是整个微控制器的CPU,该内核是ARM公司设计的一个处理器体系结构。但ARM公司不生产芯片,只做技术授权。使之产生不同商家的外围硬件差异性。为了解决不同芯片厂商生产的CORTEX微控制器软件的兼容性问题,ARM与芯片厂商建立了CMSIS标准。CMSIS标准中主要的为CMSIS核心层,它包括(1)内核函数层其中包括用于访问内核寄存器的名称、地址定义,主要有ARM公司提供。(2)设备外设访问层提供了片上的核外外设的地址和中断定义,主要由芯片生产商提供。课件CMSIS层位于硬件层和操作系统或用户之间,可以为接口外设、实时操作系统提供简单的处理器软件接口,屏蔽了硬件差异,对软件的移植产生极大地好处。STM32的库就是按照CMSIS的标准建立。STM32的30版本库可以从官网获得,解压后找到HTML文件和LIBRARY文件,HLML文件时告诉我们ST公司已经为你写好了每个外设的驱动,LIBRARY文件下是驱动库的源代码和启动文件。使用时将LIBRARY文件下的库函数文件添加到工程中。这样就基本完成了寄存器的配置,相关函数文件功能如下。CORE_CM3C文件该文件可用于屏蔽不同编译器的差异,但最重要的时该文件中包含了STDINH这个头文件,它是独立于处理器之外的,主要作用是提供一些新类型的桂林电子科技大学毕业设计(论文)报告用纸共58页第18页定义。SYSTEM_STM32F10XC文件该文件是ST公司提供的遵守CMSIS标准,功能是设置系统时钟和总线时钟。通过M3核的核内寄存器来对8MHZ的时钟进行倍频、分频,或者使用芯片内部的时钟。所有的外设都是与时钟的频率有关,所以这个文件的时钟配置是很关键的。SYSTEM_STM32F10XC文件在实现系统时钟时要用到PLL,这就需要操作寄存器,寄存器都是通过存储器映射的方式来访问的,因此该文件包含STM32F10XH这个头文件。STM32F10XH文件这个文件非常重要,是一个非常底层的文件。所有处理器厂商都会对内存的操作封装成一个宏,即我们通常说的寄存器,并且把这些实现封装成一个系统文件,包含在相应的开发环境中。这样,在应用程序时只需将这个头文件包含进来。STM32F10X_PPPC和STM32F10X_PPPH文件这是ST公司针对每个STM32外设而编写的库函数文件,属于CMSIS的设备外设函数,其中PPP表示外设名称。STARTUP_STM32F10X_HDS上电后,微控制器无法从硬件上定位MAIN函数的入口地址,需要一个启动文件来处理。LIBRARY文件夹下几种不同的启动文件,本次使用的STM32F103VET6有64KRAM,512KROM,属于高密度产品,所以选择该文件。启动文件的作用便是负责执行微控制器从“复位”到“开始执行MAIN函数”中间这段时间(称为启动过程)所必须进行的工作。总的来说,启动文件的作用是(1)初始化堆栈指针SP(2)初始化程序计数器指针PC;(3)设置堆栈的大小;(4)设置异常向量表的入口地址;(5)配置外部SRAM作为数据寄存器(6)设置C库的分支入口_MAIN在库目录PROJECT/STM32F10X_STDPERIPH_TEMPLATE目录下,存放了官方的一个库工程模板,我们在库建立一个完整的工程时还需要添加这个目录下的STM32F10X_ITC、STM32F10X_ITH、STM32F10X_CONFH这三个文件。STM32F10X_ITC文件是专门用来编写中断服务函数的,在修改前,这个文件已经定义了一些系统异常的接口,其它普通中断服务函数有我们自己添加,而这些中断服务函数的接口可以在启动文件中找到。STM32F10X_CONFH文件这个文件包含了STM32F10XH,是用来配置使用了什么外设的头文件,用这个头文件可以很方便的增加或删减上面DRIVE目录下的外设驱动函数库,如GPIO、RCC、SPI、USART的外设库函数。512STM32程序测试当建立好工程并添加了上述函数后,接下来的便是测试芯片引脚功能。本次设计桂林电子科技大学毕业设计(论文)报告用纸共58页第19页通过配置GPIO寄存器来控制LED灯的亮灭,以验证STM32芯片驱动程序的正确与否。想要控制LED灯,当然是通过控制STM32芯片的I/O引脚电平的高低来实现。在STM32芯片上,I/O引脚可以被软件设置成各种不同的功能,如输入或输出,所以被称为GPIO,而GPIO引脚又分被为GPIOA、GPIOB、GPIOE五组,每组端口分为0至15,共16个不同引脚。因此,控制LED的步骤如下(1)GPIO端口引脚多选定需要控制的特定引脚(2)GPIO功能如此丰富配置需要特定的功能(3)控制LED的亮和灭设置GPIO输出电压的高低要控制GPIO口,就要涉及到控制相关的寄存器。通过查找STM32手册得GPIO相关配置器描述如图52,图中的7个寄存器可分为以下四类。(1)配置寄存器选定GPIO的特定功能,最基本的如,选择作为输入或者输出接口。(2)数据寄存器保存GPIO的输入电平或将要输出电平。(3)为控制寄存器设置某引脚的数据位1或0,控制输出电平。(4)锁定寄存器设置某锁定引脚后,就不能修改其配置。图52GPIO寄存器描述关于寄存器名称上标号X的意义,如GPIOX_CRL、GPIOX_CRH,这个X的取值可以是A到E,表示这些寄存器也是跟GPIO一样,也是分组的。即对于GPIOA和GPIOB他们有一组互不相干的寄存器,如控制GPIOA的寄存器名为GPIOA_CRL、GPIOA_CRH,而控制GPIOB则是不同的,被命名为GPIOB_CRL、GPIOB_CRH。实现控制LED灯亮灭的思路框图如图53所示。桂林电子科技大学毕业设计(论文)报告用纸共58页第20页图53控制LED灯框图对于GPIO端口,没个端口有16个引脚,每个引脚的模式有寄存器的四个位控制,每四位又分为两位控制引脚配置(CNFY10),两位控制引脚的模式及最高速度(MODEY10),其中Y表示第Y个引脚。配置GPIO引脚模式的一共有两个寄存器,CRH是高寄存器,用来配置高8位引脚PIN8PIN15,如果要配置PIN0PIN7引脚,则要在CRL中进行配置。513STM32时钟系统STM32芯片为了实现低功耗,设计了一个功能完善但却非常复杂的时钟系统。普通的MCU,一般只要配置好GPIO的寄存器,就可以使用了,但STM32还有一个步骤,就是开启外设时钟。STM32整体时间系统如图54所示。桂林电子科技大学毕业设计(论文)报告用纸共58页第21页图54STM32时钟树CPU_INTDIS/禁止所有中断/OSINIT/UCOSII初始化/BSP_INIT/硬件平台初始化/建立主任务,优先级最高建立这个任务另外一个用途是为了以后使用统计任务OS_ERROSTASKCREATEVOIDVOIDAPP_TASKSTART,/指向任务代码指针VOID0,/任务开始执行时,传递给任务的参数的指针OS_STK/分配给任务的优先级OSTIMESET0/UCOSII的节拍计数器清0节拍计数器是04294967295OSSTART/启动UCOSII内核RETURN0STATICVOIDAPP_TASKSTARTVOIDP_ARG/开始任务建立VOIDP_ARGOS_CPU_SYSTICKINIT/初始化UCOSII时钟节拍IFOS_TASK_STAT_EN0/使能UCOS的统计任务OSSTATINIT/统计任务初始化函数ENDIFAPP_TASKCREATE/建立其他的任务WHILE1OSTIMEDLYHMSM0,0,0,1000STATICVOIDAPP_TASKCREATEVOID/建立其余任务函数桂林电子科技大学毕业设计(论文)报告用纸共58页第49页MP3_SEMOSSEMCREATE0/建立MP3播放信号量/建立用户界面任务/OSTASKCREATEEXTAPPTASKUSERIF,/指向任务代码的指针VOID0,/任务开始执行时,传递给任务的参数的指针OS_STK/是否堆栈检验堆栈清零/建立触摸驱动任务/OSTASKCREATEEXTAPPTASKKBD,VOID0,OS_STK/建立MP3播放任务/OSTASKCREATEEXTTASK_MP3,VOID0,OS_STKSTATICVOIDAPPTASKUSERIFVOIDP_ARG/用户界面人物VOIDP_ARGGUI_INIT/UCGUI初始化WHILE1FUN/界面程序桂林电子科技大学毕业设计(论文)报告用纸共58页第50页STATICVOIDAPPTASKKBDVOIDP_ARG/触摸屏坐标获取任务VOIDP_ARGWHILE1OSTIMEDLYHMSM0,0,0,10/延时10MS会读取一次触摸坐标/GUI_TOUCH_EXECSTATICVOIDTASK_MP3VOIDP_ARG/MP3播放任务INT8UERRUNSIGNEDSHORTCOUNT,JVOIDP_ARGWHILE1OSSEMPENDMP3_SEM,0,/等待MP3播放信号BR1XDCS_SET0/XDCS0,选择VS1003的数据接口FORRESF_READ/读文件512字节IFRES0COUNT0OSTIMEDLYHMSM0,0,0,20/延时20MSWHILECOUNTMSGIDCASEWM_NOTIFY_PARENTIDWM_GETIDPMSGHWINSRC/获得窗体部件的ID/NCODEPMSGDATAV/动作代码/SWITCHNCODECASEWM_NOTIFICATION_RELEASED/窗体部件动作被释放IFIDGUI_ID_LISTBOX0/列表框的选择事件FILE_NOLISTBOX_GETSELLISTBOX1/获得列表框的高亮条目的编号ELSEIFIDGUI_ID_SLIDER0/SLIDER0的值被改变MP3_STEPSLIDER_GETVALUESLIDER0/获得SLIDER0的值F_LSEEK/将播放进度值定位到文件ELSEIFIDGUI_ID_BUTTON0/F1打开文件PUBLISTBOX_GETITEMTEXTLISTBOX1,FILE_NO,A,255/获得选择区高亮条文件名IFOPEN_F0/播放文件RESF_OPEN/读选中的文件RESF_READ/读开始512字节FSIZEF_SIZE/获得文件的大小尺寸MP3_STEP0/初始化播放进度变量桂林电子科技大学毕业设计(论文)报告用纸共58页第54页MP3_TIME_MINFSIZE/MP3_BITRATE125/60/获得播放时长的分钟数MP3_TIME_SECFSIZE/MP3_BITRATE12560/获得播放时长的秒数ITOAMP3_BITRATE,BIT_RATE_STR,10/转换十进制数为字符串STRNCATBIT_RATE_STR,“K/S“,4/拼凑成需要显示的字符串播放速率TEXT_SETTEXTTEXT0,BIT_RATE_STR/显示播放速率ITOAMP3_TIME_MIN,MP3_TIME_STR1,10/转换十进制数为字符串STRNCATMP3_TIME_STR1,“,3/拼凑成需要显示的字符串ITOAMP3_TIME_SEC,MP3_TIME_STR2,10/转换十进制数为字符串STRNCATMP3_TIME_STR1,MP3_TIME_STR2,2/拼凑成需要显示的字符串TEXT_SETTEXTTEXT1,MP3_TIME_STR1/显示播放时长桂林电子科技大学毕业设计(论文)报告用纸共58页第55页VS1003CVOIDSPI_VS1003_INITVOID/VS1003初始化配置SPI_INITTYPEDEFSPI_INITSTRUCTUREGPIO_INITTYPEDEFGPIO_INITSTRUCTURE/使能SPI2时钟/RCC_APB1PERIPHCLOCKCMDRCC_APB1PERIPH_SPI2,ENABLE/配置SPI2引脚SCK,MISO和MOSI/GPIO_INITSTRUCTUREGPIO_PINGPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15GPIO_INITSTRUCTUREGPIO_SPEEDGPIO_SPEED_50MHZGPIO_INITSTRUCTUREGPIO_MODEGPIO_MODE_AF_PPGPIO_INITGPIOB,/V3BRF24L01的SPI2片选GPIO_INITSTRUCTUREGPIO_PINGPIO_PIN_0GPIO_INITSTRUCTUREGPIO_SPEEDGPIO_SPEED_50MHZGPIO_INITSTRUCTUREGPIO_MODEGPIO_MODE_OUT_PPGPIO_INITGPIOB,/配置PB12为VS1003B的片选/GPIO_INITSTRUCTUREGPIO_PINGPIO_PIN_12GPIO_INITSTRUCTUREGPIO_SPEEDGPIO_SPEED_50MHZGPIO_INITSTRUCTUREGPIO_MODEGPIO_MODE_OUT_PPGPIO_INITGPIOB,GPIO_INITSTRUCTUREGPIO_PINGPIO_PIN_0/PE0VS1003RSTGPIO_INITGPIOE,GPIO_INITSTRUCTUREGPIO_PINGPIO_PIN_6/PC6VS1003XDCS串行数据接口选择GPIO_INITGPIOC,GPIO_INITSTRUCTUREGPIO_MODEGPIO_MODE_IPDGPIO_INITSTRUCTUREGPIO_PINGPIO_PIN_7/PC7VS1003DREQGPIO_INITGPIOC,/SPI2CONFIGURATION/SPI_INITSTRUCTURESPI_DIRECTIONSPI_DIRECTION_2LINES_FULLDUPLEXSPI_INITSTRUCTURESPI_MODESPI_MODE_MASTER/SPI主模式SPI_INITSTRUCTURESPI_DATASIZESPI_DATASIZE_8B/8位SPI_INI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 胃肠镜检查与消化系统感染防控
- 2026年主题班会记录表模板与填写范例
- 人工智能芯片技术规范协议
- 2026年幼儿园户外游戏活动摔伤事故案例分析与反思
- 2026年数据完整性管理要求与实践培训
- 2026年幼儿园冬季哮喘患儿居家照护
- 规模经济项目投资合同
- 2026年医用冷光源氙灯封装与反射镜镀膜
- 2026年合理膳食预防心脑血管病讲座发言
- 2026年护理法律法规与风险防范培训
- 2026届上海市普通高中高三下学期学业水平等级性考试物理试卷(含答案)
- 湖南师大附中2026届高三5月月考试卷(九)地理试卷(含答案及解析)
- 2026中国华西企业限公司招聘221人易考易错模拟试题(共500题)试卷后附参考答案
- 北京市2025中国疾病预防控制中心招聘编制内15人笔试历年参考题库典型考点附带答案详解
- 2026年高考政治后期备考策略分享交流课件
- 2026年上海市静安区中考语文二模试卷(含详细答案解析)
- 2026年绵阳考核招聘笔基础试题库完整参考答案详解
- 2026年成都市成华区网格员招聘考试参考试题及答案解析
- 兰州市2026事业单位联考-综合应用能力D类中小学教师模拟卷(含答案)
- 海南省2025年普通高中学业水平合格性考试化学试卷(含答案)
- 手术并发症的预防与处理
评论
0/150
提交评论