基于STM32的MP3音频播放器制作毕业论文.doc_第1页
基于STM32的MP3音频播放器制作毕业论文.doc_第2页
基于STM32的MP3音频播放器制作毕业论文.doc_第3页
基于STM32的MP3音频播放器制作毕业论文.doc_第4页
基于STM32的MP3音频播放器制作毕业论文.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

本科毕业论文基于stm32的mp3音频播放器制作二 级 学 院机械与电子工程学院专 业电子信息工程年 级学 号学 生 姓 名指 导 教 师职 称完 成 时 间独 创 性 声 明本人郑重声明:所呈交的毕业论文(设计)是本人在指导老师指导下取得的研究成果。除了文中特别加以注释和致谢的地方外,论文(设计)中不包含其他人已经发表或撰写的研究成果。与本研究成果相关的所有人所做出的任何贡献均已在论文(设计)中作了明确的说明并表示了谢意。签名: 年月日授权声明本人完全理解贺州学院有关保留、使用本科生毕业论文(设计)的规定,即:学院有权保留并向国家有关部门或机构送交毕业论文(设计)的复印件和磁盘,允许毕业论文(设计)被查阅和借阅。本人授权贺州学院可以将毕业论文(设计)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编论文(设计)。本人论文(设计)中有原创性数据需要保密的部分为:无。签 名: 年月日指导教师签名: 年月日目 录摘 要1引 言21 方案设计31.1主要内容32 系统硬件设计32.1 整体设计思路32.2 硬件器件的选择42.3 硬件系统框图52.4 硬件模块化原理图设计62.5 硬件pcb设计132.6 本章小结143 系统软件的设计143.1 设计思路143.2 软件模块化设计143.3 系统整合223.4 本章小结234 系统调试234.1 独立调试234.2 硬件调试问题234.3 软件调试问题244.4 本章小结255 终结与展望25参考文献26附 录27abstract28致 谢29贺州学院本科毕业论文(设计)基于stm32的mp3音频播放器的设计作 者 指导教师 摘 要: 本毕业策画是一款基于stm32的音频mp3播放器创作,功能包含:音频播放,电子图书,图片浏览,画板,录像,录音机,日历,游戏,收音机,记事本,计算器等。整个系统组成主要由音频解码部分、收音机部分、音效处理部分、sd卡部分、功率放大、电源部分、人机交互等几个部分组成,整个系统由一块mcu(stm32f103rbt6)控制运行,各个局部协调运作。关键词: stm32;mp3音频播放; 引 言伴随电子畛域的各个技术的迅速发展,各类电子产品的消费也产生了革命性的转变,引领新技术、创新产品层见叠出。特别是跟着网络媒体的技术的遍及、数字音频视频技术的迅速发展,和种种视频,音频数据压缩标准和相应的终端设备相继问世,已成为消费电子产品新的快速增长点。集成mp3的优点,同时拥有更多的新技术。 第一款mp3的出现是在1998年,从它问世电子消费市场短短的几个月时间就在市场上站稳的脚,而且消费的趋势一直呈上增长,直到2005年之后mp5的出现,而mp5的出现,更是把mp3几乎挤出了市场,mp5不光能够播放mp3、mp4,更是可以直接播放avi和rmvb等合流的影片格式,说白了便是mp5具备mp3、mp4的全部功效,同时还具有他们不具备的功效,是以mp5代替mp3只是时间的问题,当前mp5的价钱较高是最主要的缘由,要是mp5的价钱降下来了,便是mp3离开消费者的时候了。当前此外一个数码产物-数码相框,跟着数码相机的不断广泛应用,也在偷偷的袭来,数码相框便是能直接播放jpg/jpeg的一个微型显示器,正常的数码相框比mp3体积大,然而它们的本来目的不是面向移动设备的,数码相框重要作用在于家庭,它们主要功能不再移动上面,实际上,数码相框主要功能是显示照片,如果做成移动设备的话,体积必定不能太大,但是体积小带来的结果是图片显示效果就不好。现在的数码相框显示屏分辨率一般是480*720,对于日常的照片显示效果还是可以应付过来的,当然数码相框的开发者对图像显示进行了精心设计,使得我们的照片的分辨率不管是怎么样的,它都会执行最优的选择,以用来显示最佳效果,同时数码相框一般还具有其他附加功能,mp3便是其中一个功能,可以让图片与声音同时播放,为相片的浏览添加了声音的色彩,同时数码相框还拥有tvout的功效,这就很好的提高了分辨率的显示,让照片可以在电视上显示,可以大大的提高相片的观赏价值。通过对以上两款数码产品的分析,可以发现,新出的数码产品都包含了mp3的功能,但是又不限于此,也就是集成了mp3的优点,同时拥有原来mp3不具有的功能。这样,大大的提高了消费者对新的数码产品需求。1 方案设计1.1主要内容本设计课题是一个由stm32f103rbt6主控来完成mp3音频播放设计的软硬件相结合类的设计题目。能够实现mp3的基本播放功能,也具有其他多样化的外扩功能,系统的整体功能包含:音频播放,电子图书,图片浏览,画板,录像,录音机,日历,游戏,收音机,记事本,计算机等。 系统的组成部分只要有vs1003的音频解码、tea5767的收音制作、cd3314音量级处理、sd卡控制、功率放大、电源、人机交互等,全系统由一块小型mpu(stm32f103rbt6)掌管运行,利用各模块通信协议协调运转。本系统实现多样化功能,非常具有挑战性,主要的重心难点在于fat32文件及系统的解析,jpeg/bmp图片数据格式解码,触摸屏的运转等。由于本系统的特点需要,采用了各个击破的方法,一一实现以上功能,最终完成整个系统的功能。2 系统硬件设计2.1 整体设计思路 mp3音频播放重点完成图片浏览和音乐播放等,所以本设计要求对mcu内存运行、处理的能力比较高,因为图片解码压缩需要的ram比较多,对于mp3播放,要求较高的处理速度,特别是320kbps的mp3格式数据的处理,为了保证mp3歌曲的流畅播放处理速度必须要快。可选择的mcu有16位的avr,8位的stc等,可选择的32位的处理器有samsung、nxp、stm32、atmel等。在ram方面来说,对于8位单片机内部的ram一般在4kbyte以内,更多的内存是需要外部提供,32位的单片机里面,samsung很少自带ram,也要外部提供,对于本设计来说,成本越低越好,外部提供的ram必定会提高成本的开发,所以为了更好的掌控成品的高低,尽可能的选用mcu自带有flash和ram的。其次,本设计有mp3歌曲的播放以及jpeg/bmp图片浏览等功能,但是这两种文件格式需要较大的存储空间,可供选择的flash芯片,如samsung公司的k9f系列,但是这样的话,整个系统的容量就不可以改变了,需要扩容是困难。相比较来说u盘和sd卡是个不错的选择,但sd卡相比较与u盘,在掌控上面较容易,而且相同的容量sd卡价格便宜一些,故系统选择sd卡作为存储媒介。第三,mp3音乐的播放是在读取sd卡和vs1003的同时进行的,它们用到的都是spi通讯协议,所以需要主控芯片要有两个或两个以上spi共使用,这样才能有效的把读取速度提高。综上所述,本设计采用stm32f103rbt6作为主控芯片,该芯片具有的内部资源加上一点外扩之后可以胜任本设计。2.2 硬件器件的选择在系统实现的过程中,硬件选择是非常重要的一部分,主控芯片已经确定好了,接下来就是其他芯片的选取,来实现其相对应的功能,下面我们重点分析以下几个芯片的选型。2.2.1 mp3解码芯片选择使用stm32主控芯片解码有两种方法,第一是通过处理器的软件解码,第二是通专用芯片解码,第一种方法要求芯片运算速度非常高,而且声音不是很流畅,对播放的采样有极大要求,故选择第二种专用芯片解码。 本设计使用解码mp3的芯片是vs1003,它支持wav格式、mp3格式、midi格式、wma格式等,同时可以设置调整音量高低等,而且还有一个功能是可以支持mici,此外还可以扩展录音功能。2.2.2 收音机芯片选择本设计的收音功能只适用于fm收音,选用tea5767芯片来实现,tea芯片是飞利浦公司生产的一款低功耗电调谐调的立体声收音机芯片,该芯片通过iic总线协议可以直接控制。可以实现调频接收,频率的范围在76mhz108mhz,而且接收的是立体声,带信号强弱指示,但由于芯片体积较小,焊接困难,所以直接采用模块来实现,使用非常方便,可以提高本设计效果,节约时间以及成本。2.2.3 eeprom芯片选择 本设计需要保存用户的部分数据,而stm32需要外部扩展eeprom,防止系统掉电之后整个系统的数据将会复位,利用外扩的eeprom芯片可以实现用户数据的存储,eeprom芯片有很多可供选择的,由于在学习过程中比较常用的是atmel的24cxx系列的,而且价格便宜,故本设计最终采用了atmel的24c16芯片。2.2.4 功率放大芯片选择本设计包含两块放大芯片,一块是用来放大从cd3314输出的音频信号以方便驱动耳机,另一块是功率放大,用来驱动扬声器的。一级放大可供选择非常多,比如tda2822,tpa152等,但是tpa152与tda2822比较事,后者的优势比较大,tda2822对音质失真控制不好,thd大概在10%,而tpa152在带有32负载的前提下thd是2%,在带有10k负载的前提下小于0.01%。而且tpa152的输出功率比tda2822大,总输出可以达到1.5w。因此,这里选取音质相对好的tpa152芯片,作为耳机驱动芯片。 2.2.4电源芯片选择本设计要求系统电压输入: 2.5v, 3.3v,5v.所以对电源的处理需要满足能输出以上电压, 系统电源主要包括给数字芯片供电,这些电源需要的功率小,可以选用reg1117-2.5和reg1117-3.3v稳压芯片供给2.5v和3.3v的电压。reg1117的输出电流为800ma,符合设计要求。对于5v输入,也是采用lm2576,因为整个系统的数字部分电源供给都是来自5v的,所以它的电流较大。2.3 硬件系统框图综上分析,可以得出,整个设计系统由stm32f103rbt6芯片掌控,各个模块电路的详细介绍也在下面一一介绍,如图2.1所示是整个硬件系统设计框图。图2.1 硬件系统框图图2.1描述了各个模块与主控芯片之间的联系,由于电源不被mcu控制,所以在图2.1内没有画出。由上图2.1可以得出,整个硬件系统设计以stm32f103rbt6为核心,通过各种方式控制各个模块的工作,使整个系统完成预定的功能。2.4 硬件模块化原理图设计在此节中,将根据上面的硬件系统框图进行具体的硬件设计介绍,整个设计可以分为若干个模块。下面对这些模块进行逐一介绍。2.4.1 mcu和ds18b20模块电路设计mcu为整个设计系统的核心,它控制着这个系统的运行,让主控芯片稳定运行是必要前提,下图(图2.2)为mcu的原理图,包含一个后备电源ups1,一个主电源vcc3.3和一个模拟电源,模拟电源通过从vcc3.3加滤波电路得到。mcu外围的必须电路由滤波电容,下载电路(串口1)以及复位开关组成。同时,考虑到系统需要时钟功能,给时钟部分增加了后背电源电路,通过二极管连接到vbat脚,给实时时钟供电。这里采用了双电源结构,即在电源有外部供电的时候,后备电池不给时钟供电,时钟的电源来自外部,只有当外部电源断开的时候,后备电源才给时钟供电,以保持时钟的计时,这样可以延长后备电池的使用时间。同时,为了方便调试,电路中还添加一个多余的按键以及led,以方便在调试时使用,而且为了最大化的使得布线难度的降低,布局的美观,对一些io的控制做了相应的调整,而且所以的io也全部引出,方便以后功能的扩展,如:门禁系统等。与此同时,smt32f103rbt6自带的usb口也引出,方便日后升级使用。这里值得注意的是,因为cd3314,tea5767,at24c16这三个器件使用的是同一iic接口,可以节省io。图2.2 mcu模块电路2.4.2 mp3解码模块电路设计mp3播放需要解码,这里选用了vs1003解码芯片,该芯片能解码以下几种格式的文件:mp3、wma、midi、和wav音频文件,同时还具备录音功能,此功能本设计暂时没有用到,不过对其音频录音的电路设计保留了下来,以便日后使用。整个模块电路如图2.3所示。图2.3 mp3解码模块电路vs1003的电源分模拟电源和数字电源两种,对这两种电源电路的设计对音质的好坏有直接的影响,所以经考虑本设计采用了许多具有滤波和去耦功能的电容,选择了lc设计电路,为vs1003工作提供一个稳定的环境。2.4.3 收音机模块电路设计由于本系统直接采用tea5767的收音机模块来实现收音机功能,所以使得其外部电路大大简化,只要通过少数的几个元件就能实现收音机功能了。电路原理图如图2.4所示: 图2.4 收音机模块电路需要注意的是,收音机模块对电源敏感,同时对外部电路的干扰也较大,所以在这里,对模块电源的处理采用了rc滤波加大电容的方式,能有效的降低收音机模块对外部电源的干扰。也能保证收音机模块电源的稳定。图中ant为天线接口,通过外接天线,可以提高收音机的灵敏度。2.4.4 sd卡模块电路设计因为mcu没有自带的专门sd卡模式接口,只能通过spi通信模式访问sd卡如下电路图2.5s所示:图2.5 sd卡模块电路sd卡使用的是spi模式,把它挂在mcu的spi2模式上面。sd卡上面的spi通信需要在每个io上接一个42k左右的上拉电阻,这里选择45k。sd卡电路连接比较简单,只要连接没有出错,一般不会有什么大的问题stm32的spi口在72m时钟下,spi的时钟传送速度可以达到18m,也就是sd卡最大的读写速度可以达到2.25mbyte/s,足够播放音频格式了。2.4.5 音效处理模块电路设计这里选择的是cd3314作为音效处理芯片,电路图如图2.6所示,cd3314支持最多四个输入通道,这里我们用了其中三个,通道2对应收音机音源,通道3对应外部音源,通道4对应mp3音源。通过iic控制,可以实现这三个音源的切换。经过处理的音频信号从输出端输出到耳机放大器tpa152,通过放大驱动耳机,这样我们就能听到所要听的声音了。图2.6音效处理模块电路2.4.6 fm24c16模块电路设计铁电存储器fm24c16的电路也是很简单,只要通过简单的供电,然后连接iic总线,就可以了。电路如图2.7 所示:图2.7 fm24c16模块电路2.4.7 功放模块电路设计因为本系统既有耳机输出,又有喇叭输出,所以有两个音频放大电路:(一)基于tpa152的立体声耳机放大电路;(二)基于tpa3100d02的功率放大电路。耳机放大电路如图2.8所示,耳机放大电路采用官方推荐的电路结构,对从pt2314送来的音频信号进行缓冲输出,推动耳机工作。耳机输出采用五针的专用耳机插座,这个插座具有开管功能,信号从1,4脚输入,从2,3脚输出,第五脚是地。如果没有耳机插上,则有音频信号从2,3脚输出,如果耳机插上了,则2,3脚不会有音频信号输出。这样通过连接2,3脚到d类功放上面,就可以实现耳机,功率输出同一时间只能有一个工作。由于tpa152也是音频信号输出的一部分,对于这个芯片的供电,也是采用了lc滤波的形式,减少电源干扰对音质的影响。图2.8 tpa152耳机放大电路功率放大电路如图2.9所示:图2.9 tpa3100d02功率放大图该芯片提供的输出功率与负载电阻和输入电压有关。这里,我们采用12vdc供电,负载电阻为4欧姆,则能提供的输出功率为15w。从而根据其datasheet可以计算输出lc滤波环路的参数,电感取15mh,电容分别为1uf和0.22uf。图中的功能选择部分可以有两种选择模式:(一)把mute接地,则会使芯片一直处于工作状态。(二)把mute和fault相接则可以实现短路检测,在没有出现输出短路的时候,芯片正常工作,在出现输出短路的时候,fault输出高电平,通过mute控制芯片停止输出,这样可以有效地保护芯片。2.4.8 tftlcd2.8寸驱动电路设计tftlcd驱动电路如图2.10所示,该部分电路也比较简单。图2.10 tftlcd电路图控制设计2.4.9 电源电路设计图2.14 输入电源电路这个电路采用两块reg1117芯片给系统提供电源,一块提供3.3v的数字电源和模拟电源,它们通过电感连接,以减少数字电源对模拟电源的干扰。另外一块提供2.5v的电压,给vs1003的dsp提供核心电压。两者的输入电压均来自功率电源的5v输出。2.5 硬件pcb设计pcb硬件设计的时候主要注意一下若干点就好了:(1)对于电流比较大的走线,必须使用较宽的线宽(2)对于功率放大,最好以单点接地的方式连接。这样可以有效的降低各部分信号的相互干扰,以达到最好的放大效果。(3)对于走线,不可以走锐角的线,直角也最好少走,最佳的是走弧线。因为锐角和直角的走线会在尖端产生emi,尤其在高频信号较明显。(4)对于去耦电容,离芯片越近越好。(5)对于信号线,不要长距离的平行走线,可以有效的防止信号耦合2.6 本章小结在本章节中,首先是对整个系统的设计方案进行总体规划,包含媒介存储的选择,主控芯片的选型,硬件器件的选取以及互交方式的确定,经过总体方案的研究眼总结,得出初步的技术方案,具体确定了硬件器件的型号选取。接着详细介绍了各个模块之间的使用已经设计,并说明了一些pcb布线的规则,接下来就是进入到软件的设计了,在下一章节中,将对软件进行详细的说明。3 系统软件的设计3.1 设计思路经过上一章介绍,多功能mp3的硬件系统已经完成了基本设计,但是一个完整的系统必须要有硬件和软件的相互配合才能正常运行,如果没有软件没那么硬件形同虚设。软件是硬件的灵魂,硬件的实现价值体现在软件的控制下。所以软件和硬件二者缺一不可,缺一就等于失去了整个设计系统的可行性。多功能mp3的软件设计涉及很多编程,这是一个很复杂的软件设计系统,不可能保证一次就把所有的代码调试完成达到预期效果。这里我对应对各个模块的功能一一的验证过后,在通过最终的大整合在一起,从而实现最终想要的功能。3.2 软件模块化设计从本设计来说,可以把软件分为两部分来区分:第一个是与硬件有直接联系的底层驱动软件子系统。第二个是与硬件无关的应用型软件系统的设计。这样可以把两个软件系统的设计分成许多个模块。下面就一一介绍各个模块的区分以及编程思路。3.2.1 lcd模块驱动程序设计系统采用的lcd驱动芯片型号为ili9320,它是单芯片的soc驱动的晶体管显示器,320x240的分辨率,包括720路源极驱动与及320路栅极驱动,自带显存。颜色的深度是根据数据的大小来决定的。在此仅讲解部分重要指令,指令00h,当读操作的时候,读取控制器的型号;当写操作的时候,打开/关闭osc振荡器。当写操作设置osc为高电平时,开启内部振荡器;为0的时候,停止振荡器。至少要等待10ms的时钟稳定之后,才可以继续其他的功能设置。指令03h,进入模式命令。在此仅注意am、i/d1、i/d0这3个位。具体的设置与及效果见图21。图21 液晶显示方向控制3.2.2 触摸屏模块驱动程序设计本设计的输入系统选用的是四线电阻式触摸屏加ads7846实现的,整个设计系统的控制都是通过触摸屏控制的,所以,触摸屏控制算法的好坏对系统有着举足轻重的作用,这里有必要认识触摸屏和ads7846的工作原理。触摸屏工作原理:触摸摸是放置在显示器的最外边的,当知道触点在显示器上的触发坐标时,则可依据触发位置相应坐标点显示内容或图符获知触摸者的意图。电阻式触摸屏在嵌入式系统中采用得较多。电阻屏的组成,如图3.2,最底层是玻璃或有机玻璃构成的基层。当触摸到屏幕时,两导电层在触摸点处相碰。触摸屏输入系统意图如图3.3所示图3.2 触摸屏触摸示意图图3.3 触摸屏输入系统的组成3.2.3 sd卡模块驱动程序设计sd卡通信协议有两种:spi模式和sd模式。sd卡读写的标准方式是sd模式,不过选用sd模式时需要选择自带带有sd控制器接口的mcu,或者必须加入支持sd卡的读写的控制单元。由于sd卡控制器接口在stm32f103rbt6没有自带的,不过stm32f103rbt6却拥有强大的spi接口,故本设计选用spi模式读取sd卡。cs低电平有效则进入spi模式,反之工作在sd总线模式。sd卡初始化流程图如图3.7 所示。 图3.7 sd卡初始化3.2.4 vs1003模块驱动程序设计vs1003通讯模式为spi,本设计采用的是spi1,这里主要对vs1003如何初始化操作进行介绍。vs1003 与mcu相联系的主要的7根数据线为: xrst、xdcs、xcs、dreq、sck、so、si。 xrst:vs1003复位线,低电平有效。xdcs:数据片选信号,低电平有效。xcs:命令片选信号,低电平有效。dreq:数据请求,输入总线。sck、si、so:spi接口线。vs1003模块初始化步骤:l 硬复位,xrst =0;l 延时,xdcs、xcs、xrst置1;l 等待dreq为高;l 软件复位:spi_mode=0x0804;l 等待dreq为高(软件复位结束);l 设置vs1003的时钟:sci_clockf=0x9800,3倍频;l 设置vs1003的采样率:spi_audata=0xbb81,采样率48k,立体声;l 设置重音:spi_bass=0x0055;l 设置音量:sci_vol=0x2020;l 向vs1003发送四个字节无效数据,启动spi发送;3.2.5 fm24c16模块驱动程序设计fm24c16也是采用iic总线和mcu通信,通过标准的iic操作,很容易实现对fm24c16的读写。fm24c16的器件地址与页地址是连在一起的,这里需要注意。fm24c16的高四位为固定的1010,而第四位用来表示页地址07,每页拥有256个字节,这样fm24c16的总大小为2048字节。对fm24c16的读操作,先写入0xax(x:07),再写入要写入的地址,紧跟着就可以写入数据了。而对于fm24c16的读操作,则稍微复杂一点在执行写操作的上述过程之后,再写入0xax+1,代表执行读操作,紧随着就可以读数据了。3.2.6 tea5767模块驱动程序设计tea5767收音机模块支持iic和三线模式,这里我们选择iic来控制。tea5767的器件地址是0xc0,在对tea5767的读操作通过写入0xc1来执行。tea5767的读操作与写操作基本相同,只是iic开始之后写入0xc1,将发送一个字节改为接收一个字节就可以了。3.2.7 rct时钟驱动程序设计rtc实时时钟是利用stm32f103rbt6内部的时钟模块实现的,根据stm32的datasheet,得到rtc实时时钟的初始化过程如下:l 使能备份区域时钟l 取消备份区域写保护l 软复位备份区域l 开启外部低速晶振l 等待晶振就绪l 设置lsi作为rtc时钟l rtc时钟使能l 设置时钟分频系数l 等待rtc寄存器操作结束l 允许rtc配置l 配置秒钟寄存器l 配置更新l 等待rtc寄存器操作完成rtc时钟的设置到这里就结束了,在rtc时钟完成上述配置之后,就会每隔一段固定的时间,对秒钟寄存器(rtc-cnt)进行加1。这个操作软件不参与,一切由硬件执行。时钟分频系数(rtc-prl)确定固定时间,理论上因为外部低频晶振是32.768khz,所以只要在rtc-prl内写入32768-1就可以得到精确的1秒了,不过因为晶振的误差率,往往需要对这个值进行调整,以确保得到比较准确的走时。3.2.8 jpeg/bmp解码模块程序设计jpeg/bmp图片播放是本系统的一个重要功能,两者的解码均采用软件实现,bmp的解码相对jpeg比较简单,这里重点对jpeg的解码原理进行介绍。jpeg解码算法原理:jpeg压缩是利用人的视角系统特性,采用量化和无损压缩编码相结合的方法去掉视角的冗余信息和数据本身的冗余信息来达到压缩的效果。jpeg算法可分为基本jpeg(baseline system)和扩展jpeg(extended system)。本设计重点在为baseline system的算法做介绍。jpeg解码算法如图3.9 所示:图3.9 jpeg解码算法框图在jpeg解码反量化的公式:其中,c(u,v)代表熵解码输出,q(u,v)代表相应的量化矩阵。综上所述具体说明了jpeg的解码算法,在本设计中jpeg/jpg的解码通过软件来实现。返回值为此次解码成功与否的标志。在执行该函数之前,需要先执行图片解码的两个函数,一个函数用来清空个量化表,一个函数用来获取解码所需的各种参数。对于bmp的解码在这里不做详细解说了。3.2.9 fat32文件系统模块程序设计本设计需要读取sd卡,故必须对文件系统进行管理,本系统的重点是对文件系统的解析。本设计支持fat16和fat32两种文件系统,由于fat文件系统的构架非常复杂而且庞大,这里我们主要fat32文件系统的构架做简单介绍以便可以正常读取fat32系统下的文件。fat32文件系统:(1)dbr(操作系统引导记录区)的说明要想操作fat32我们首先要了解dbr。其中dbr 的核心部分为bpb (bios parameter block)(第1290 字节为bpb),bpb 的意义需要我们深入详细的去理解,才能够更好的完成和操控fat32。dbr各字节意义如图3.10:图3.10 dbr区各字节意义dbr区内,对操作有用的数据只有90个字节(即bpb字段)。但是就在这90 个字节就可以获取我们关于磁盘的许多信息,比如每扇区字节数、每簇扇区数、磁道扇区数等等。bpb部分数据字节意义如图3.11所示: 图3.11 bpb部分字段意义表通过对上面字段读取的了解,可以得到fat32文件系统的许多紧要信息:每扇区字节数、每簇扇区数、根目录簇号、该卷总扇区数、fat表1所在的扇区数等。fat32 文件系统最具特色的一部分是fat 表,fat32 的精华在于fat表的链式存储机制,它可以是的数据存储不连接,使磁盘的功能得到更好的发挥。一个fat表的内容如图3.12所示: 图3.12 fat表这样,在我们获取文件的起始簇随后,就可以从起始簇开始读取文件的内容了,如果大于一个簇,则可在fat表找下一个簇号,直到文件结束,从而达到了文件的读取功能。3.3 系统整合上一节详细介绍了系统各个模块程序的设计,一步一步实现了系统的各个功能,接下来需要做的工作就是把整个系统的模块程序整合起来,成为一个整体。 本设计的主控制程序通过调用各个模块的相关底层函数,从而实现系统的功能整合,主控制程序的流程图如图3.15所示,系统开机以后,第一步进行的是对各个硬件模块的初始化;第二步是对fat文件系统的初始化,对于fat文件系统来说要判断是否初始化成功;第三步是寻找系统文件,本设计的系统文件全部在system文件夹下,该文件夹下主要有:font文件夹、sysico文件夹、game文件夹。font文件夹下包括font12.fon和font16.fon两种字体文件。sysico文件夹下则包括了全部的系统图标(bmp格式)。game文件夹下包括三个等级的游戏文件夹,游戏图片也在相应的文件夹中,全部为bmp格式。其中font文件夹和sysico文件夹在系统加载的时候需要的。game文件夹则是在游戏的时候才进行检索的。图3.15 系统主控程序流程图3.4 本章小结本章主要说明本设计的软件设计方案,简而易懂的介绍了系统各模块的软件设计的实现与实践。重点描述了触摸屏原理、jpeg/bmp的解码方法以及fat32文件系统解析。最后整合了本设计的所有功能以及其的实现。到此多样化多功能mp3的系统设计以及基本完成,接下来的任务就是对该系统进行调试和测试。4 系统调试4.1 独立调试由以上针对软硬件系统进行了设计的主要描述,不过在上述设计当真,已经包括对调试中各种各样的问题处理。在设计的时候可能对某些小细节或者大问题考虑得不到位,这就需要调试中一一的去发现问题,再解决问题。最终完成设计的目标。这一章主要讲述在调试过陈中发现的典型问题。4.2 硬件调试问题在硬件调试过程中,发现了几个影响整个硬件设计的问题,在完成了硬件设计的时候,对本设计进行了硬件上的处理是,在主控芯片的电源检测时,发现相对应的管脚检测的vcc与gnd得不到相对应的电压,在此过程中经过了多次的原理图以及pcb图还有成品的检测后,最终发现了是由于硬件晶振上面的一个电容虚焊以及有一组电源线断开了所导致的,最终经过修改来进行改正。图4.1为硬件设计。图4.1 硬件设计图4.3 软件调试问题得益于以前知识和代码的积累,调试过程中顺利完成了很多软件调试,比如fat文件系统、ds18b20驱动等,但是在软件调试的时候出现了很多问题的,这里挑一个比较典型的问题说明。这个问题是vs1003播放音乐的问题。问题1,在测试vs1003播放音乐的过程中,发现移植之前的vs1003驱动到stm32上后,播放界面不可以添加歌曲,一开始怀疑是不是因为文件系统的程序问题而读取不到歌曲吗?如图4.2所示,经过反复的对文件系统的程序检测,发现代码没有问题,又开始替换vs1003的工业板进来调试,发现效果是一样的,从而排除不是硬件问题,之后有反复的查看了vs1003程序编写的资料,发现编写过程无误,最后拿出之前写过的程序进行一一对比,发现是因为没有对其vs1003进行初始化而导致的。图4.2 vs1003播放图4.4 本章小结本章是整个设计的最后一章,主要针对调试过程中出现的软件问题和硬件问题进行了举例说明。解决了整个系统的最后问题,使系统的所有功能得到了实现,并发现了一些器件问题,为以后的工作研究积累了经验。5 终结与展望本文以智能家电为目标,设计了一款mp3音频播放器,对未来家电的使用进行了一次探索。经历了几个月的不断努力与奋斗,从方案论证到硬件设计再到软件设计,一步步实现,最终完成了这个设计。但是在设计的过程中也找到了自己的不足,(1)基础知识的掌握不牢靠,使得很多细节的问题没有去注意到,从而影响整个系统完成;(2)对stm32整体构架不够熟悉,对于内部寄存器的操作了解不多不熟,对stm32的扩展很不熟练,从今往后会加强对这方面的训练。在本次设计中也受益匪浅,让我学会了很多问题的快速解决方法,从而有利于今后的工作已经更进一步的学习。希望明天会更好。参考文献 1 罗旭.支持歌词的mp3播放器的设计与实现,沈阳师范大学学报,2006/03。2 华锡锋.基于garfield芯片的mp3播放器的设计和优化,东南大学,2005,硕士。3 高立艾.可遥控车载mp3播放器的设计,河北农业大学,2006,硕士。4 mp3播放器与u盘设计; 自己动手打造心仪的个性mp3,清华大学出版社

温馨提示

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

评论

0/150

提交评论