基于STM32单片机的MP3播放器毕业设计_第1页
基于STM32单片机的MP3播放器毕业设计_第2页
基于STM32单片机的MP3播放器毕业设计_第3页
基于STM32单片机的MP3播放器毕业设计_第4页
基于STM32单片机的MP3播放器毕业设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、11032011物理与电子信息工程系电气工程及其自动化2007级0710617114张蓝凯讲师曾繁于stm32的mp3播放器设计独 创 性 声 明本人郑重声明:所呈交的毕业论文(设计)是本人在指导老师指导下取得的研究成果。除了文中特别加以注释和致谢的地方外,论文(设计)中不包含其他人已经发表或撰写的研究成果。与本研究成果相关的所有人所做出的任何贡献均已在论文(设计)中作了明确的说明并表示了谢意。签名: 年月日授权声明本人完全理解贺州学院有关保留、使用本科生毕业论文(设计)的规定,即:学院有权保留并向国家有关部门或机构送交毕业论文(设计)的复印件和磁盘,允许毕业论文(设

2、计)被查阅和借阅。本人授权贺州学院可以将毕业论文(设计)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编论文(设计)。本人论文(设计)中有原创性数据需要保密的部分为:无。签 名: 年月日指导教师签名: 年月日基于stm32的mp3播放器设计摘 要随着数字编解码及压缩技术的发展,语音文件也朝着高压缩比、高保真的方向发展,从mp1、mp2到目前的mp3格式。因此高压缩比、高保真mp3播放器设计研究有很好的应用前景。本论文详细介绍了基于stm32的mp3播放器的设计的方法,系统实现了把sd卡中存储的mp3格式的文件解码播放,并在tft触摸屏上显示播放歌曲的名称、歌

3、曲播放剩余时间及显示歌曲对应的歌词,通过tft触摸屏上的图形交互用户图界,还可以实现歌曲的快进、快退、暂停和更改循环模式等,基本上可以实现一个带有触摸屏功能的mp3播放器。关键词:mp3播放器;stm32f103vct6;vs1003;sd卡abstractat the development of the digital coding and decoding and compression technology, voice files are also moving in a high compression ratio, high-fidelity direction, from mp

4、1, mp2 to mp3 format now. therefore, high compression ratio, high-fidelity design of mp3 players have a good prospect.this paper introduces based stm32s mp3 player design methods, system implements the sd card stored in mp3 format decoding player, and tft touch screen display playing a song title, s

5、ong playback remaining time and display songs corresponding to the lyrics, through the tft touch screen graphic interactive graphical user community, songs can also fast forward, rewind, pause and change the loop mode, basically can function with a touch screen mp3 player. key words: mp3 player; stm

6、32f103vct6; vs1003; sd card目 录摘 要iabstractii1绪论11.1选题背景11.2国内外研究现状及意义12系统硬件方案设计22.1设计目标22.2设计方案对比22.2.1控制器方案22.2.2mp3解码方案32.2.3显示模块方案32.2.4mp3储存介质方案32.3系统设计原理42.3.1中央处理器工作原理42.3.2音频解码芯片52.3.3tft电阻式触摸屏72.3.4sd卡93系统软件方案设计113.1系统软件开发平台113.1.1程序设计流程图123.2各模块软件系统设计123.2.1vs1003驱动程序123.2.2tft显示屏驱动程序133.2.

7、3sd卡驱动程序154系统测试、调试164.1运行过程164.2设计过程遇到的困难和问题174.2.1硬件方面174.2.2软件方面185结论18参考文献18致 谢 1 绪论1.1 选题背景随着数字编解码及压缩技术的发展,语音文件也朝着高压缩比、高保真的方向发展,从mp1、mp2到目前的mp3格式。便携式mp3播放器作为一种集音频播放、数据存储为一身的数码产品,其功能结构为电子设计人员所津津乐道。mp3是mpeg一1音频iii(1ayeriii)的简称。mpeg一1音频(iso/iecll 1723)是目前普遍应用的音频压缩标准,其中层iii的算法最为复杂,但压缩比最大,效果也最好,在低码率的

8、条件下基本能达到cd的音质效果。mp3标准用尽可能低的码流实现cd音质的声音而不会产生数据损失。如果对于一段声音不进行压缩的话,那么每存储一秒钟的立体声cd音质音乐必须用1.4mbit,这是个十分大的开销。通过运用mpeg音频标准的压缩技术,我们可以把存储空间压缩到原来的1/12而不会降低声音的音质。即使使用124的压缩因子,仍然比单纯降低采样率的音质要好。低数据量和高播放品质的优点使其成为音乐存储、数字广播、网上音乐传输的主要方式。人们不仅可以使用计算机软件,还可以通过数字随身听来欣赏音乐。在这种数字化潮流下,嵌入式系统已成为当前研究和应用的热点之一,嵌入式手持设备的视音频多媒体应用也越来越

9、广泛。由于嵌入式系统的应用要求及成本因素决定了嵌入式系统在系统资源, 包括硬件资源和软件资源方面都是非常精简和高效的1.2 国内外研究现状及意义mp3全称是mpeg layer 3,狭义的讲就是以mpeg layer 3标准压缩编码的一种音频文件格式。在internet广泛普及的今天, mp3音乐以其较小数据量和近似完美的播放效果已经成为计算机上和internet最流行的音乐格式了。将cd格式的音乐数据压缩成mp3格式,音效相差无几(除非你有很好的音响和鉴赏力),文件大小至少可以压缩12倍(每首pcm格式的cd歌曲大约4050mb数据量)。自韩国世韩(seahan)公司1998年推出世界上第一

10、台mp3随身听以来, mp3播放器以其小巧的外形,不错的近乎于cd的音质,前卫的功能,越来越受到消费者的青睐,也就成为业界甚至大众媒体关注的一个热门话题。它的记录媒介是芯片或卡,无需转动部件,彻底摆脱了磁带和光碟的束缚,因而,抗震和节电性能更好。在市场消费刺激下,各大公司纷纷推出了自己的mp3播放器产品,ic供应商提供了众多的mp3解码芯片及其解决方案。除了micronas方案(mas3507+dac3550)、st方案(st92163+sta013/015)、crystal软解压单芯片方案(ep7209,ep7212)、ti软解压单芯片方案(tms320c5409),还有台湾创品方案(t33

11、510,t33520)、美国sigmatel方案(stmp3400)和ti的da-250解决方案。这使mp3播放器的研制与生产变得更加容易,成本也大大降低,市场更加广阔 。2 系统硬件设计2.1 设计目标本论文是基于stm32的mp3播放器的设计,论文中将涉及到:stm32的学习和嵌入式原理的应用,mp3解码的实现原理及其解码芯片的应用指南,sd卡的数据存储结构及其各种文件系统的区别,tft触摸屏的操作及简单gui在tft上的实现。预期将能实现在tft液晶上对mp3播放的实时控制。2.2 设计方案对比2.2.1 控制器方案方案一:此方案采用 89c51 单片机实现,单片机软件编程自由度大,可用

12、编程实现各种控制算法和逻辑控制。但是 89c51 需外接模数转换器来满足数据采样。如果系统增加语音播放功能,还需外接语音芯片,对外围电路来说,比较复杂,且软件实现也较麻烦。另外,51 单片机需要用仿真器来实现软硬件调试,较为繁琐。方案二:此方案采用 spce061a 单片机实现,此单片机内置 8 路 adc,2 路 dac,且集成开发环境中,配有很多语音播放函数,用 spce061a 实现语音播放相对方便。但5v的工作电压,16位的处理器芯片,较低的闪存,使得功耗比较大,处理速度比较慢,工作效率比较低,存储量受到限制。方案三:此方案采用stm32f103vct6实现,它使用高性能的arm co

13、rtex-m3 32位的risc内核,工作频率为72mhz,内置高速存储器(高达128k字节的闪存和20k字节的sram),丰富的增强型i/o端口以及包含2个12位的adc、3个通用16位定时器和一个pwm定时器。使得处理速度大大提高,机器功耗大大降低,整体性能得到很大提高。32位的处理器使得控制更加稳定、迅速,窗口型看门狗,使得程序运行更加高效。另外,比较方便的是该板支持硬件仿真,通过ulink仿真器可以方便实现在线逐步调试,这大大方便了系统的开发与调试工作。基于stm32的高性能,低功耗,方便调试等特性,故选择方案三。2.2.2 mp3解码方案 方案一: 此方案采用软解mp3,直接用软件解

14、码。节约了硬件成本,但代码复杂,编程难度较高,工作量极大,而且对控制器的处理速度和资源要求都比较高。方案二:此方案采用硬解mp3,直接用音频解码芯片解码。它使用高性能的vs1003 mp3解码芯片,功能强大而且价格便宜,vs1003支持mp3、wav、wma、midi等诸多音频格式,音质可与市场上中档mp3播放器相媲美。基于上述比较,故选择方案二;2.2.3 显示模块方案 方案一:此方案采用lcd1602,完成数据显示。lcd1602驱动电路简单,它可以显示简单的中英文字符,功能和设计的成本都比较低!方案二:此方案采用lcd12864,它既可以显示中英文字符,也可以显示图片。但其图案分辨率较低

15、,而且只能显示单色字符。方案三:此方案采用tft液晶模块,它既可以显示彩色数字、中英文字符和图案,还可以加上触摸屏模块,实现gui用户图形交互实时控制!基于tft液晶的强大功能,故选择方案三。2.2.4 mp3储存介质方案方案一:此方案采用直接将mp3文件存放在控制器的内部rom储存器中,读取速度快,操作简单方便。但是,相比于51,avr, spce061a等单片机,虽然stm32有着很大的内部rom容量,但还是不能完整的保存一首mp3歌曲。方案二:此方案采用u盘来储存mp3文件,极大的提高了储存容量。方案三:此方案采用sd卡来储存mp3文件。采用spi通讯方式的sd卡不仅读取数据的速度快,而

16、且具有小体积,大容量等特点。根据本人的实际情况,故采用了方案三。 2.3 系统设计原理本设计由stm32最小系统,sd卡的读取模块,tft控制模块,外扩flash模块,触摸屏模块,串口通信模块组成。将要解决sd卡的读取及使用fatfs系统对sd卡的操作、tft液晶的控制及触摸屏原理、还有图形用户界面gui的实现等问题。硬件系统方框图如图2-1所示。基本设计流程是使用stm32系列微控制器,采用fatfs文件系统方式读取sd卡中的mp3文件,并控制mp3解码芯片对mp3文件进行解码播放,并在tft液晶上显示实时播放情况。stm32f103vct6tft 触摸屏sd卡vs1003音频解码外扩fla

17、sh串口通信图 2-1 硬件系统方框图2.3.1 中央处理器工作原理stm32系列是基于cortexm3核的微控制器,它在cortexm3内核的基础上扩展了高性能的外围设备。cortexm3是arm公司最新推出的基于armv7体系架构的处理器核,具有高性能、低成本、低功耗的特点,专门为嵌入式应用领域设计。armv7 架构采用了thumb2技术,它是在arm的thumb代码压缩技术的基础上发展起来的,并且保持了对现存arm解决方案完整的代码兼容性。 thumb2技术比纯arm代码少使用31%的内存,减小了系统开销,同时能够提供比thumb技术高出38%的性能。在中断处理方面,cortexm3集成

18、了嵌套向量中断控制器nvic(nested vectored interrupt controller)。nvic是cortexm3处理器的一个紧耦合部分,可以配置1240个带有256个优先级、8级抢占优先权的物理中断,为处理器提供出色的异常处理能力。同时,抢占(preemption)、尾链(tailchaining)、迟到技术(latearriving)的使用,大大缩短了异常事件的响应时间。cortexm3异常处理过程中由硬件自动保存和恢复处理器状态,进一步缩短了中断响应时间,降低了软件设计的复杂性。cortexm3体系架构提出了新的单线调试技术,cortexm3处理器的跟踪调试是通过调试访

19、问端口(debug access port,dap)来实现的。dap端口可以作为串行线调试端口(swdp)或串行jtag调试端口(swjdp,允许jtag或sw协议)使用。其中swdp只需要时钟和数据2个引脚,实现低成本跟踪调试,避免使用多引脚进行jtag调试,并全面支持realview编译器和 realview调试产品。此外cortexm3还具备高度集成化的特点,大大减小了芯片面积,内部集成了许多紧耦合系统外设,合理利用了芯片空间,使系统满足下一代产品的控制需求。其引脚分布如图2-2所示:图2-2 stm32f103vct6 微控制器引脚分布图2.3.2 音频解码芯片vs1003 是一个单片

20、mp3/wma/midi音频解码器和adpcm编码器。它包含一个高性能,自主产权的低功耗dsp 处理器核vs_dsp4,工作数据存储器,为用户应用提供5kb 的指令ram 和0.5kb 的数据ram。串行的控制和数据接口,4 个常规用途的i/o 口,一个uart,也有一个高品质可变采样率的adc和立体声dac,还有一个耳机放大器和地线缓冲器,芯片原理图如图2-3所示。其具体特性如下:(1)能解码 mpeg 1 和mpeg2 音频层 iii(cbr+vbr+abr);wma 4.0/4.1/7/8/9 5-384kbps 所有流文件;wav(pcm+imaad-pcm);产生midi/sp-mi

21、di 文件。(2)对话筒输入或线路输入的音频信号进行imaadpcm编码。支持 mp3 和wav 流。(3)高低音控制,低功耗,单时钟操作1213mhz,内部pll锁相环时钟倍频器。(4)内含高性能片上立体声数模转换器,两声道间无相位差。内含能驱动30欧负载的耳机驱动器,模拟,数字,i/o 单独供电。(5)为用户代码和数据准备的5.5kb片上ram,串行的控制,数据接口,可被用作微处理器的从机。(6)特殊应用的spi flash引导,供调试用途的uart接口,新功能可以通过软件和4 gpio 添加。 图2-3 vs1003芯片原理图2.3.3 tft电阻式触摸屏tft电阻式触摸屏由tft显示屏

22、、驱动ic(ili9320控制tft)、触摸屏、触摸屏控制器(ads7843控制触摸屏电压的转换)等组成。本设计采用的tft显示屏是3.2寸tft240*32026万色彩屏模块,支持sd卡,支持dataflash,支持16位/8位模式,模块可以180度任意旋转使用。ili9320是一款包括一个720通道的源极驱动器,一个320通道门驱动器,172,800字节数据ram,能驱动240rgbx320tft液晶显示器的驱动芯片。电阻式触摸屏工作原理如下:电阻式触摸屏利用压力感应进行控制,它的主要部分是一块与显示器表面配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面图有

23、一层透明氧化金属导电层,上面盖有另外一层氧化金属导电层,在他们之间有许多细小的(小于1/1000英寸)透明隔离点把两层导电层隔开绝缘。当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,控制器侦测到这一接触并计算出(x,y)的位置,再根据模拟鼠标的方式运作。图2-4 电阻式触摸屏的原理图触摸屏控制芯片为ads7843, ads7843是一个内置12位模数转换、低导通电阻模拟开关的串行接口芯片。供电电压2.75 v,参考电压vref为1 v+vcc,转换电压的输入范围为0 vref,最高转换速率为125 khz,其引脚功能如表2-5所示。ads7843典型应用电路如图图2-6所示。表2-5 ad

24、s7843的引脚功能表 图2-6 ads7843典型应用电路2.3.4 sd卡sd卡(secure digital memory card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,sd卡允许在两种模式下工作,即sd模式和spi模式,本系统采用spi模式。本小节仅简要介绍在spi模式下,stm32处理器如何读写sd卡。sd卡如果采用fat16文件格式,按照其不同的特点和作用大致可分为5 部分:mbr区、dbr区、fat区、fdt区和data区。由于sd卡一般不做引导盘,一般也不分区,因此通常无mbr区,直接从dbr区开始。下面对后面四个区分别作简介:(1)

25、dbr区内容为系统引导记录,它包括一个引导程序和一个被称为bpb(bios parameter block)的本分区参数记录表。引导程序的主要任务是当mbr将系统控制权交给它时,判断本分区根目录是否有操作系统引导文件,如果有则将其读入内存,并把控制权交给该文件。bpb参数块记录着本分区的起始扇区、结束扇区、文件存储格式、根目录大小、fat个数,分配单元大小等重要参数。(2)fat区该区内容为文件分配表,fat16文件系统进行空间分配的最基本单位是簇。文件分配表反映了sd卡所有簇的使用情况,通过查文件分配表可以得知任一簇的使用情况。对于fat16来说,fat表每项占用两个字节。fat表的第一项通

26、常为fff8h。对于其它项,若其值为0000h表示可用;fff7h表示为坏簇;fff8h-ffffh之间表示该簇为某文件或目录的最后一个簇,fff0h-fff6h之间为保留值;其它值则指示下一个簇的簇号。 (3)fdt区该区的内容为文件目录表,fat文件系统的一个重要思想是把目录(文件夹)当作一个特殊的文件来处理,fat32甚至将根目录当作文件处理。fat分区中所有目录文件,实际上可以看作是一个存放其它文件(文件夹)入口参数的数据表。因此,目录占用空间的大小并不等同于其下所有数据的大小,但也不等于0,通常是占很小的空间。其具体的存储原理是:不管目录文件所占空间为多少簇,一簇为多少扇区、多少字节

27、;系统都会以32个字节为单位,进行目录文件所占簇的分配。(4)data区该数据区存放文件的内容,sd卡所占用的空间绝大部分为此部分。如果文件长度大于一个簇的大小,需要多个簇存放该文件,这些放通过fat链表串连起来。sd卡内部结构及引脚如图2-7 所示图2-7 sd卡内部结构及引脚sd卡主要引脚和功能为:clk:时钟信号,每个时钟周期传输一个命令或数据位,频率可在025mhz之间变化,sd卡的总线管理器可以不受任何限制的自由产生025mhz的频率。cmd:双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有

28、卡;dat03:数据线,数据可以从卡传向主机也可以从主机传向卡。sd卡以命令形式来控制sd卡的读写等操作。可根据命令对多块或单块进行读写操作。在spi模式下其命令由6个字节构成,其中高位在前。sd卡共支持三种传输模式:spi模式(独立序列输入和序列输出),1位sd模式(独立指令和数据通道,独有的传输格式),4位sd模式(使用额外的针脚以及某些重新设置的针脚。支持四位宽的并行传输)低速卡通常支持 0400 千比特/秒数据传输率,采用spi 和1位sd传输模式。高速卡支持 0 100 兆比特/秒数据传输率,采用4位sd传输模式;支持025 兆比特/秒 ,采用spi和 1位sd模式。3 系统软件设计

29、3.1 系统软件开发平台stm32系列微控制器采用arm公司最新的cortexm3内核。cortex-m3是arm公司推出的最新的针对微控制器应用的内核,提供业界领先的高性能和低成本的解决方案,将成为mcu应用的热点和主流。但是目前能够支持cortex-m3架构的开发工具很少,包括sdt、ads1.2等开发工具都不支持。mdk是目前性价比最高的支持cortex-m3处理器的开发工具。故本次设计的软件平台是建立在软件mdk vision4.11之上的。3.1.1 程序设计流程图开始系统初始化tft初始化触摸屏初始化sd卡初始化vs1003初始化mp3播放程序触摸屏按下?播放模式设置读取触摸屏数据

30、,实行相应操作图3-1 程序设计流程图本系统的程序设计流程图如图3-1所示,工作过程大致为:stm32通过从sd卡中读取mp3文件,将所读取的数据流发送到vsl003解码器中解码播放;tft触摸屏则用于显示歌曲的实时播放状态、歌词的显示、功能按扭和控制歌曲的快进,快退,停止等。3.2 各模块软件系统设计3.2.1 vs1003驱动程序1、vs1003 初始化的一般流程如下:(1)硬复位,xreset = 0;(2)延时,xdcs、xcs、xreset置1;(3)等待dreq为高;(4)软件复位:spi_mode = 0x0804;(5)等待dreq为高(软件复位结束);(6)设置vs1003的

31、采样率:spi_audata = 0xbb81,采样率,立体声;(7)设置重音:spi_bass = 0x0055;(8)设置音量:sci_vol = 0x2020;(9)向vs1003发送4个字节无效数据,用以启动spi发送;2、vs1003播放mp3的一般流程如下:(1)打开一个指定的mp3文件;(2)发32个字节的数据到vs1003;(3)检测dreq,当dreq为高时发下一个32字节的数据;(4)是否发完32个字节,否,则回到第3步;(5)是否发完打开的mp3文件,否,则回到第2步; (6)关闭打开的mp3的文件;vs1003读写函数如下:u16 vs1003_reg_read(u8

32、address);/读寄存器void vs1003_data_write(unsigned char * buf);/写数据void vs1003_cmd_write(u8 address,u16 data);/写命令void vs1003_init(void);/初始化vs1003void mp3reset(void);/硬复位void vs1003softreset(void); /软复位void set1003(void); /设置vs1003的音量,播放模式等void vsramtest(void); /ram测试void vssinetest(void); /正弦测试u16 getd

33、ecodetime(void); /得到解码时间u16 getheadinfo(void); /得到比特率void resetdecodetime(void);/重设解码时间void loadpatch(void); /加载频谱分析代码void getspec(u8 *p); /得到分析数据3.2.2 tft显示屏驱动程序驱动tft显示屏实际上就是对ili9320驱动ic的操作。对ili9320的初始化操作如下:(1)向ili9320控制器写入0x00.(2)如果返回的数据为不是0x9320,则驱动ic不是ili9320,停止初始化。(3)如果返回的数据为0x9320,则向相应的寄存器写入默认

34、的数据,启动驱动ic。(4)拉低片选信号cs,再写r22h寄存器,接着写入要写的数据。(5)写结束后再将cs拉高。tft显示屏的读写函数如下:extern void tft_write_start(void); /写开始extern void tft_write_end(void); /写结束extern void tft_setgramhva(u16 x0,u16 y0); /设置gram的最初地址extern void tft_setgramarea(u16 hsa,u16 hea,u16 vsa,u16 vea); /设置一个gram显示区域extern void tft_init(vo

35、id);/tft显示屏初始化 /extern void tft_test_square(u16 x0,u16 x1,u16 y0,u16 y1,u16 color);extern void tft_clear(u16 x0,u16 x1,u16 y0,u16 y1,u16 color); /清屏函数extern void drawonepixel(u16 x, u16 y, u16 color); /画点函数extern void write_asc8x16e(u16 x,u16 y,u16 textcolor,u16 backcolor,u16 w_char);/8*16英文字符extern

36、 void write_asc12x24e(u16 x,u16 y,u16 textcolor,u16 backcolor,u16 w_char);extern void write_asc12x24e_string(u16 x,u16 y,u16 textcolor,u16 backcolor,u8 *w_string);extern void write_asc20x40e(u16 x,u16 y,u16 textcolor,u16 backcolor,u16 w_char);extern void write_gb16(u16 x,u16 y,u16 textcolor,u16 back

37、color,u8 *w_char);/16*16中文字符extern void write_gb_16_and_asc8x16e(u16 x,u16 y,u16 textcolor,u16 backcolor,u8 *w_string);extern void write_gb_24_and_asc12x24e(u16 x,u16 y,u16 textcolor,u16 backcolor,u8 *w_string);extern void display_picture(u16 x,u16 y,u16 width,u16 height ,u16 *picture); /显示图片3.2.3 s

38、d卡驱动程序1、驱动模选择sd卡上电时,如果cs接地,sd将进入spi模式,cs接高电平,将进入sd bus模式。在sd bus模式时,发送cmdo sd卡不会回应,在spi模式时,发送cmd0,sd卡能回应r1信息。2、初始化sd卡进入sd bus模式后,发送cmdo复位sd卡。由于处于sd bus模式,sd卡此时不会回复信息。发送命令的时候需要注意sd卡命令状态,不同的状态只能响应待定的命令,下面为初始化命令发送流程:(1) cmdo 复位卡。(2)cdm55 用户命令。(3)cmd41 sd卡工作电压设置命令。(4)cmd2 从默认地址获取sd卡id。(5)cmd3获取一个新地址。(6)

39、cmd9从新地址读取sd卡id。(7)cmd7选择新地址的sd卡为有效卡。(8)cmd55 用户命令。(9)cmd6设置数据位宽。(10)cmd16设置block长度。(11)cmd13读取当前sd卡状态。(12)初始化完成。3、发送sd卡支持的操作命令不同的sd卡所支持的命令稍有不同,但基本命令都是支持的。详细支持哪类命令要从sd卡的id中获得。这一步主要为读,写,擦这三个功能。读cmd17,写cmd24,擦cmd38。4、退出sd卡操作如果总线上挂有多个sd卡,就需要用cmd7命令退出当前sd卡,从面选择其他的sd卡操作。cmd7命令为选择卡或取消卡,在初始化的时候发送cmd7命令,sd卡

40、将进入数据发送模式,在数据模式里发送cmd7则退出当前卡的操作。需要注意的是,在数据模式里不同的状态只支持特定命令。sd卡读写函数如下:u8 spi_readwritebyte(u8 txdata); /spi总线读写一个字节u8 sd_waitready(void); /等待sd卡就绪u8 sd_sendcommand(u8 cmd, u32 arg, u8 crc); /sd卡发送一个命令u8 sd_sendcommand_nodeassert(u8 cmd, u32 arg, u8 crc);u8 sd_init(void); /sd卡初始化u8 sd_receivedata(u8 *d

41、ata, u16 len, u8 release);/sd卡读数据u8 sd_getcid(u8 *cid_data); /读sd卡cidu8 sd_getcsd(u8 *csd_data); /读sd卡csdu32 sd_getcapacity(void); /取sd卡容量u8 sd_readsingleblock(u32 sector, u8 *buffer); /读一个sectoru8 sd_writesingleblock(u32 sector, const u8 *buffer); /写一个sectoru8 sd_readmultiblock(u32 sector, u8 *buff

42、er, u8 count); /读多个sectoru8 sd_writemultiblock(u32 sector, const u8 *data, u8 count); /写多个sector4 系统调试4.1 运行过程(1)使用mdk uvision 4.11 编译程序生成相应的hex文件。(2)使用串口线将板子的串口与pc机连接,设置启动方式,将boot0接高电平,boot1接低电平。(3)打开 mcuisp v0.993单片机在线编程专家,加载mdk生成的hex文件,将程序烧录到控制器中。(4)设置启动方式,将boot0接低电平,boot1接低电平。(5)复位一下硬件,即可进入mp3播放

43、界面。(6)插上耳机,即能听到美妙的音乐。4.2 设计过程遇到的困难和问题4.2.1 硬件方面在本次设计中,由于首次用到altium designer来设计pcb,遇到了各种各样的困难和问题。例如:由于设计的原理图很大,如果把所有的元件都画在同一张原理图上,那么将会显得非常的杂乱,烦琐。在这里我使用了层次图的设计方法,把子模块各放到一个层中设计,在顶层中再把子模块连接起来,不仅使设计显得更加直观,而且利于模块之间的移植。还有,层之间的元件重叠,不显示绿色报错。在设计中第一次用到贴片元件,也是本次设计中的一次挑战。经过多次尝试努力,终于找到了焊接贴片元件的诀窍:(1)首先将元件小心地放到pcb板

44、上,使其与焊盘对齐,要保证芯片的放置方向是正确的。(2)将烙铁头尖沾上少量的焊锡,在两个对角位置的引脚上加少量的焊锡,使芯片固定而不能移动。(3)在焊完对角后重新检查芯片的位置是否对准,如有必要可进行调整或拆除并重新在pcb板上对准位置。(4)在ic脚上加满焊锡,为拖焊作准备。(5)把pcb板45度角斜放或立起来,以保证焊接过程中,熔化的焊锡能顺利流动。(6)从上到下,顺势来回拖动烙铁头,使焊锡与贴片ic引脚分离。(7)检查无虚焊,无短路后,用硬毛刷浸上酒精沿引脚方向仔细擦拭,直到焊剂消失为止,即可完成焊接。在完成焊接工作之后,上电调试时,发现系统非常不稳定。由于硬件系统上没有接有jtag仿真

45、接口,不能在mdk中仿真调试,所以只能在程序中的每一个子初始化函数中加入一个串口测试程序,结果发现程序死在vs1003的初始化中。在经过几个日日夜夜的努力之后,正当我准备要放弃,重新做板子的时候,无意之间手碰到了vs1003的晶振引脚,系统又恢复正常了。通过与主控制器的晶振接法作比较后,在vs1003的晶振引脚之间加上一个1m的电阻后,系统就可以正常工作了。4.2.2 软件方面在首次驱动vs1003时,声音总是断断续续的。在逐步检查,排除了晶振的频率,spi的速度,stm32控制器的处理速度之后,发现原来是在写入数据之后没有等待vs1003的dreq引脚为高电平,就继续写入数据。在加入while(gpioc-idr & mp3_dreq)=0); /等待dreq为高 这一条语句之后,就能正常的播放音乐了。5 总结 通过这次毕业设计的研究与制作,让我了解了mp

温馨提示

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

评论

0/150

提交评论