stm32 mp3播放器毕业论文.doc_第1页
stm32 mp3播放器毕业论文.doc_第2页
stm32 mp3播放器毕业论文.doc_第3页
stm32 mp3播放器毕业论文.doc_第4页
stm32 mp3播放器毕业论文.doc_第5页
免费预览已结束,剩余37页可下载查看

下载本文档

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

文档简介

毕业论文stm32 mp3播放器毕业论文题目: 基于STM32的MP3播放系统设计 专 业 电子信息科学与技术摘要 MP3是一种高质量音乐压缩标准,采用MP3压缩的数据量可以缩小到1/12,音质却没有多少损失。由于MP3音乐的较小数据量和高质量的播放效果,使它很快成为一种集音频播放、数据存储为一身的数码产品,并深受人们的喜爱。本文采用STM32系列微控制器,结合解码芯片VS1003、SD卡、 LCD等外围设备设计并实现了MP3播放器。其主要功能有:播放VS1003支持的所有音频文件,如MP3、WMA、WAV文件,且音质非常好;通过摇杆控制播放上一首/下一首,通过电位计来控制音量增减,通过LCD显示音量图标和播放状态等;本系统还计划实现读卡器功能,PC机可通过USB接口直接对开发板上的SD卡进行读写操作,以方便拷贝音频文件。关键字:MP3播放器、CortexM3、STM32V100、VS1003ABSTRACTIs a high quality MP3 music compression standard, with MP3 compressed data can be reduced to 1 / 12, but there is little loss of sound quality. MP3 music as the smaller amount of data and high-quality playback, it will soon become a set of audio playback, the data is stored as a digital product, and very popular. In this paper, STM32 family of microcontrollers, combined with decoder chip VS1003, SD card, LCD and other peripherals design and implementation of MP3 players. Its main functions are: Play VS1003 supports all audio files, such as MP3, WMA, WAV files, and the sound quality is very good; through the joystick control playback on a / to the next, through a potentiometer to control volume change, through the LCD show the volume icon and play status, etc.; The system also plans to achieve reader function, PC machine interfaces via USB directly to the development board of the SD card read and write operations to facilitate the copying audio files.Key words: MP3 Players; CortexM3; STM32V100; VS1003目 录摘要IABSTRACTII目 录III第一章 绪论11.1 选题背景11.2 国内外研究现状及意义11.3 设计和研究方向2第二章 系统设计理论基础32.1 Arm嵌入式系统32.2 STM32V100 Arm开发板32.3 SD卡32.4 FAT16文件系统42.4.1 DBR区42.4.2 FAT区52.4.3 FDT区52.4.4 DATA区52.5 音频编解码器52.6 液晶显示器62.7 电路焊接6第三章 系统总体设计方案及硬件环境73.1 设计目标73.2 设计原理73.2.1 中央处理器工作原理73.2.2 电源部分原理83.2.3 音频解码器介绍83.2.5 液晶显示原理93.3模块设计方案对比103.3.1 控制模块103.3.2 电源模块103.3.3 音频解码器模块113.3.4 显示模块113.4 最终设计方案12第四章 硬件电路设计134.1 系统硬件设计平台134.2 总体架构设计134.3 模块化电路设计144.3.1 SD卡模块144.3.2 音频解码器模块154.3.3 液晶显示模块16第五章 软件程序设计175.1 系统软件开发平台175.2 程序实现思想175.3整体软件系统流程图175.4 各模块软件系统设计185.4.1 SD卡读写模块设计185.4.2 FAT16文件系统185.4.2 MP3播放流程设计195.4.3 液晶显示设计195.5 程序设计结果20第六章 测试和调试216.1 运行过程216.3 问题分析216.3.1 硬件方面216.3.2 软件方面22第七章 结论23结束语24参考文献25致谢26附录27附录一2736 第一章 绪论1.1 选题背景随着信息技术的飞速发展,形式多样的数字化产品已经开始成为继PC机后的信息处理工具,在这种数字化潮流下,嵌入式系统已成为当前研究和应用的热点之一,嵌入式手持设备的视音频多媒体应用也越来越广泛。由于嵌入式系统的应用要求及成本因素决定了嵌入式系统在系统资源, 包括硬件资源和软件资源方面都是非常精简和高效的。随着数字编解码及压缩技术的发展,语音文件也朝着高压缩比、高保真的方向发展,从MP1、MP2到目前的MP3格式。便携式MP3播放器作为一种集音频播放、数据存储为一身的数码产品,其功能结构为电子设计人员所津津乐道。MP3是MPEG一1音频III(1ayerIII)的简称。MPEG一1音频(ISOIECll 1723)是目前普遍应用的音频压缩标准,其中层III的算法最为复杂,但压缩比最大,效果也最好,在低码率的条件下基本能达到CD的音质效果。MP3标准用尽可能低的码流实现CD音质的声音而不会产生数据损失。如果对于一段声音不进行压缩的话,那么每存储一秒钟的立体声CD音质音乐必须用14Mbit,这是个十分大的开销。通过运用MPEG音频标准的压缩技术,我们可以把存储空间压缩到原来的112而不会降低声音的音质。即使使用124的压缩因子,仍然比单纯降低采样率的音质要好。低数据量和高播放品质的优点使其成为音乐存储、数字广播、网上音乐传输的主要方式。人们不仅可以使用计算机软件,还可以通过数字随身听来欣赏音乐。1.2 国内外研究现状及意义MP3全称是MPEG Layer 3,狭义的讲就是以MPEG Layer 3标准压缩编码的一种音频文件格式。在INTERNET广泛普及的今天, MP3音乐以其较小数据量和近似完美的播放效果已经成为计算机上和INTERNET最流行的音乐格式了。将CD格式的音乐数据压缩成MP3格式,音效相差无几(除非你有很好的音响和鉴赏力),文件大小至少可以压缩12倍(每首PCM格式的CD歌曲大约4050MB数据量)。自韩国世韩(Seahan)公司1998年推出世界上第一台MP3随身听以来, MP3播放器以其小巧的外形,不错的近乎于CD的音质,前卫的功能,越来越受到消费者的青睐,也就成为业界甚至大众媒体关注的一个热门话题。它的记录媒介是芯片或卡,无需转动部件,彻底摆脱了磁带和光碟的束缚,因而,抗震和节电性能更好。在市场消费刺激下,各大公司纷纷推出了自己的mp3播放器产品,IC供应商提供了众多的MP3解码芯片及其解决方案。除了Micronas方案(MAS3507+DAC3550)、ST方案(ST92163+STA013/015)、Crystal软解压单芯片方案(EP7209,EP7212)、TI软解压单芯片方案(TMS320C5409),还有台湾创品方案(T33510,T33520)、美国SigmaTel方案(STMP3400)和TI的DA-250解决方案。这使mp3播放器的研制与生产变得更加容易,成本也大大降低,市场更加广阔 。1.3 设计和研究方向STM32系列微控制器采用ARM公司最新的CortexM3内核。VS1003音频解码芯片为 VS10xx系列的第三代产品,是芬兰VLSI Solution 公司生产的单片MP3/WMA/MIDI解码和ADPCM编码芯片。本文采用STM32系列微控制器,结合解码芯片VS1003、SD卡、 LCD等外围设备设计并实现了MP3播放器。其主要功能有:播放VS1003支持的所有音频文件,如MP3、WMA、WAV文件,且音质非常好;通过摇杆控制播放上一首/下一首,通过电位计来控制音量增减等;通过LCD显示音量图标和播放状态;本系统还计划实现读卡器功能,PC机可通过USB接口直接对开发板上的SD卡进行读写操作,以方便拷贝音频文件。第二章 系统设计理论基础2.1 Arm嵌入式系统嵌入式系统的体系结构(architecture)是嵌入式设备的一种抽象,这意味着体系结构是系统的一般化,它典型的展现详细的现实信息,例如软件源代码或硬件电路设计。在体系结构层次,一个嵌入式系统中的硬件和软件组件表示为相互作用的要素的某种组合。要素是硬件或软件的表示,它们的实现细节被抽象掉了,只留下行为和相互关系的信息。体系结构的要素可以在内部集成于嵌入式设备之中,或者存在于嵌入式系统外部并且与内部的要素相互作用。简而言之,嵌入式体系结构包括嵌入式系统的要素、与嵌入式系统相互作用的要素、每个单独的要素的属性、以及要素之间相互作用的关系。2.2 STM32V100 Arm开发板STM32F103VBT6增强型系列使用高性能的ARM Cortex-M3 32位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一个CAN。STM32F103VBT6增强型系列工作于-40C至+105C的温度范围,供电电压2.0V至3.6V,一系列的省电模式保证低功耗应用的要求。2.3 SD卡SD卡(Secure Digital Memory Card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。本小节仅简要介绍在SPI模式下,STM32处理器如何读写SD卡,如果读者如希望详细了解SD卡,可以参考相关资料。SD卡内部结构及引脚如图2-1 所示图2.1 SD卡内部结构及引脚SD卡主要引脚和功能为:CLK:时钟信号,每个时钟周期传输一个命令或数据位,频率可在025MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生025MHz的频率;CMD:双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡;DAT03:数据线,数据可以从卡传向主机也可以从主机传向卡。SD卡以命令形式来控制SD卡的读写等操作。可根据命令对多块或单块进行读写操作。在SPI模式下其命令由6个字节构成,其中高位在前。SD卡命令的格式如表1所示,其中相关参数可以查阅SD卡规范。2.4 FAT16文件系统SD卡如果采用FAT16文件格式,按照其不同的特点和作用大致可分为5 部分:MBR区、DBR区、FAT区、FDT区和DATA区。由于SD卡一般不做引导盘,一般也不分区,因此通常无MBR区,直接从DBR区开始。下面对后面四个区分别作简介2.4.1 DBR区内容为系统引导记录,它包括一个引导程序和一个被称为BPB(Bios Parameter Block)的本分区参数记录表。引导程序的主要任务是当MBR将系统控制权交给它时,判断本分区根目录是否有操作系统引导文件,如果有则将其读入内存,并把控制权交给该文件。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、根目录大小、FAT个数,分配单元大小等重要参数。2.4.2 FAT区该区内容为文件分配表,FAT16文件系统进行空间分配的最基本单位是簇。文件分配表反映了SD卡所有簇的使用情况,通过查文件分配表可以得知任一簇的使用情况。对于FAT16来说,FAT表每项占用两个字节。FAT表的第一项通常为FFF8H。对于其它项,若其值为0000H表示可用;FFF7H表示为坏簇;FFF8H-FFFFH之间表示该簇为某文件或目录的最后一个簇,FFF0H-FFF6H之间为保留值;其它值则指示下一个簇的簇号。2.4.3 FDT区该区的内容为文件目录表,FAT文件系统的一个重要思想是把目录(文件夹)当作一个特殊的文件来处理,FAT32甚至将根目录当作文件处理。FAT分区中所有目录文件,实际上可以看作是一个存放其它文件(文件夹)入口参数的数据表。因此,目录占用空间的大小并不等同于其下所有数据的大小,但也不等于0,通常是占很小的空间。其具体的存储原理是:不管目录文件所占空间为多少簇,一簇为多少扇区、多少字节;系统都会以32个字节为单位,进行目录文件所占簇的分配。2.4.4 DATA区该数据区存放文件的内容,SD卡所占用的空间绝大部分为此部分。如果文件长度大于一个簇的大小,需要多个簇存放该文件,这些放通过FAT链表串连起来。2.5 音频编解码器音频编码解码器芯片主要由围绕一些处理硬件的一个模数转换器(ADC)和一个数模转换器(DAC)组成,但它们只是众所周知的海底冰山露出来的一角。最近一段时间,大部分工程师认为音频编解码器就是在DSP平台上运行的压缩和解压缩算法。在整个音频频率范围里,“语音”编解码器适合数字电话应用,而“音频”编解码器则适合娱乐音频应用。在这个意义上,音频编解码器是从Dolby公司的噪音抑制技术演变成Dolby和其它一些公司更综合性的压缩方法。它们的出现还与国际标准组织(ISO)的运动图像专家小组(MPEG)有关,该工作小组负责为数字音频和视频的编码表示制定相应的标准。 尽管语音编解码器技术的发展一定程度上处于静止状态,但音频编解码器技术一直在向前演进。2.6 液晶显示器定义:通常,我们在数字式电子表与手提电脑上所看到的显示数字之玻璃薄片即称之为液晶显示器(Liquid Crysplay,简称LCD)。优点:平面型显示,体积小,重量轻,功耗低,驱动电压低,可用大规模集成电路直接驱动,可以在明亮的境下显示,不含有害射线等。种类:按显示方式,可分为透射型、反射型的投影显示三大类。按显示机理,可分为如下五种:TN(Twist Nematic)扭曲向列型HTN(High Twist Nematic)高扭曲向列型STN(Super Twist Nematic)超扭曲向列型FSTN(Film Super Twist Nematic)薄膜超扭曲向弄列型TFT(Thin-film Transistor)薄膜晶体管2.7 电路焊接在焊接模块外引线、接口电路时,应按如下规程进行操作:1)烙铁头温度小于280。2)焊接时间小于34s。3)焊接材料:共晶型、低熔点。4)不要使用酸性助焊剂,一般选择松香。5)重复焊接不要超过3次,且每次重复需间隔3分钟。第三章 系统总体方案设计3.1 设计目标本文采用STM32系列微控制器,结合解码芯片VSl003、SD卡、LCD等外围设备设计并实现了MP3播放器。其主要功能有:播放VSl003支持的所有音频文件,如MP3、WMA、WAV文件,且音质非常好;通过摇杆控制播放上一首下一首、音量增减等;通过LCD显示歌曲名字和播放状态;本系统还实现了读卡器功能,PC机可通过USB接口直接对开发板上的SD卡进行读写操作,以方便拷贝音频文件。3.2 设计原理3.2.1 中央处理器工作原理STM32处理器CortexM3是ARM公司最新推出的基于ARMv7体系架构的处理器核,具有高性能、低成本、低功耗的特点,专门为嵌入式应用领域设计。ARMv7 架构采用了Thumb2技术,它是在ARM的Thumb代码压缩技术的基础上发展起来的,并且保持了对现存ARM解决方案完整的代码兼容性3。 Thumb2技术比纯ARM代码少使用31%的内存,减小了系统开销,同时能够提供比Thumb技术高出38%的性能。在中断处理方面,CortexM3集成了嵌套向量中断控制器NVIC(Nested Vectored Interrupt Controller)。NVIC是CortexM3处理器的一个紧耦合部分,可以配置1240个带有256个优先级、8级抢占优先权的物理中断,为处理器提供出色的异常处理能力。同时,抢占(Preemption)、尾链(Tailchaining)、迟到技术(Latearriving)的使用,大大缩短了异常事件的响应时间。CortexM3异常处理过程中由硬件自动保存和恢复处理器状态,进一步缩短了中断响应时间,降低了软件设计的复杂性。CortexM3体系架构提出了新的单线调试技术,CortexM3处理器的跟踪调试是通过调试访问端口(Debug Access Port,DAP)来实现的。DAP端口可以作为串行线调试端口(SWDP)或串行JTAG调试端口(SWJDP,允许JTAG或SW协议)使用。其中SWDP只需要时钟和数据2个引脚,实现低成本跟踪调试,避免使用多引脚进行JTAG调试,并全面支持RealView编译器和 RealView调试产品。此外CortexM3还具备高度集成化的特点,大大减小了芯片面积,内部集成了许多紧耦合系统外设,合理利用了芯片空间,使系统满足下一代产品的控制需求。STM32系列是基于CortexM3核的微控制器,它在CortexM3内核的基础上扩展了高性能的外围设备。3.2.2 电源部分原理电源设计是一个系统设计中的关键部分,对于整个系统,一个稳定的、具有一定功率的电源和合理的电源管理是必不可少的。本系统有以下几种电源:CPU的内核数字和模拟电源电压+1.8 V,CPU的IO口数字和模拟电源电压+3.3 V、总线的隔离电源、LCD的驱动电源、LCD的背光逆变电源、其他外围设备电源电压+5 V等电源。3.2.3 音频解码器介绍VS1003 是一个单片MP3/WMA/MIDI音频解码器和ADPCM编码器。它包含一个高性能,自主产权的低功耗DSP 处理器核VS_DSP4,工作数据存储器,为用户应用提供5KB 的指令RAM 和0.5KB 的数据RAM。串行的控制和数据接口,4 个常规用途的I/O 口,一个UART,也有一个高品质可变采样率的ADC和立体声DAC,还有一个耳机放大器和地线缓冲器。其具体特性如下:能解码 MPEG 1 和MPEG2 音频层 III(CBR+VBR+ABR);WMA 4.0/4.1/7/8/9 5-384kbps 所有流文件;WAV(PCM+IMAAD-PCM);产生MIDI/SP-MIDI 文件。对话筒输入或线路输入的音频信号进行IMAADPCM编码支持 MP3 和WAV 流高低音控制单时钟操作12.13MHz内部PLL锁相环时钟倍频器低功耗内含高性能片上立体声数模转换器,两声道间无相位差内含能驱动30 欧负载的耳机驱动器模拟,数字,I/O 单独供电为用户代码和数据准备的5.5KB片上RAM串行的控制,数据接口可被用作微处理器的从机特殊应用的SPI Flash引导供调试用途的UART接口新功能可以通过软件和4 GPIO 添加图3.1 VS1003芯片3.2.5 液晶显示原理1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表(1)所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”表3.2 LCD1602字符表3.3模块设计方案对比3.3.1 控制模块方案一:此方案采用 89C51 单片机实现,单片机软件编程自由度大,可用编程实现各种控制算法和逻辑控制。但是 89C51 需外接模数转换器来满足数据采样。如果系统增加语音播放功能,还需外接语音芯片,对外围电路来说,比较复杂,且软件实现也较麻烦。另外,51 单片机需要用仿真器来实现软硬件调试,较为繁琐。方案二:此方案采用 SPCE061A 单片机实现,此单片机内置 8 路 ADC,2 路 DAC,且集成开发环境中,配有很多语音播放函数,用 SPCE061A 实现语音播放相对方便。但5V的工作电压,16位的处理器芯片,较低的闪存,使得功耗比较大,处理速度比较慢,工作效率比较低,存储量受到限制。方案三:此方案采用STM32V100 ARM板实现,它使用高性能的ARM Cortex-M3 32位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强型I/O端口以及包含2个12位的ADC、3个通用16位定时器和一个PWM定时器。使得处理速度大大提高,机器功耗大大降低,整体性能得到很大提高。32位的处理器使得控制更加稳定、迅速,窗口型看门狗,使得程序运行更加高效。另外,比较方便的是该板支持硬件仿真,通过Ulink仿真器可以方便实现在线逐步调试,这大大方便了系统的开发与调试工作。3.3.2 电源模块1)在各种电子设备中,直流稳压电源是必不可少的组成部分,它是电子设备唯一能量来源,它的设计思路可以根据我们以前学过的模电知识来完成,既做一个稳压电源,将交流220V的电压经过变压器、整流电路、滤波电路和稳压电路四个部分,输出我们想要得的+5V电压。2)可以用四节干电池和稳压三极管进行稳压,从而得到我们要用的+5V直流电压,通过外接排针 CN12,从外板供电。3)可以通过主板上USB 端口(CN1)供电,供电电流小于500mA。出于调试的方便和即插即用性,以及本系统的侧重点在MP3播放器上,所以我采用USB为系统供电,如此一来使系统的实现变得更加简便、迅速。3.3.3 音频解码器模块VS1003 特性:VS1003可以作为一个微控制器的从机,通过串行SPI接口来接收输入的比特流,输入的比特流被解码后,可以通过一个数字音量控制器到达一个18 位过采样多位DAC。通过串行总线控制解码器。这样利用一个VS1003芯片与STM32F103x处理器配合,STM32处理器读取SD卡中的MP3文件,将其通过SPI接口送往VS1003芯片播放,然后再利用STM32F10X处理器的一些GPIO口来控制VS1003即可以实现一个MP3 Player的原形设计。3.3.4 显示模块1)常见的基于单片机设计的音乐播放器基本不能显示歌曲。该音乐播放系统设计上增加液晶显示器,LCD显示模块主要完成数据显示、输出数据与显示数据的同步等功能,可为使用者提供曲目信息。由于LED数码管只能显示数字而无法显示其他中英文字符,并对成本及功能考虑,因此从设计的成本及功能的角度考虑,采用LCD1602显示模块,它可以显示每目的英文名字。LCD1602驱动电路简单,可以由CPU输出命令驱动。2)又由于STM32V100开发板中没有液晶控制器的功能模块,如果所选择的液晶屏内部也没有液晶控制器,那么,要使CPU可以对液晶进行控制,就必须加设计一个液晶驱动控制电路。另外,由于液晶用来显示调节播放音量的ADC转换值和歌曲的顺序,所以字符型的LCD1602基本上能够满足显示要求。又由于系统设计时间的限制,因此本系统中选择自带控制器的液晶屏LCD1602液晶显示。其连接电路图如图3.3 所示。图3.3 LCD液晶管脚连接图3.4 最终设计方案通过上述论证,本系统采用STM32作为微控制器,VS1003作为解码芯片,采用SD卡存储MP3/WMA文件,LCD作为显示器件,最终完成MP3的播放设计。同时PC机可以通过USB接口操作开发板上SD卡中的文件,也可以通过串口通信控制音乐播放。具体方案图如图3.4所示图3.4 总体设计方案框图第四章 硬件电路设计本系统在硬件上分为5个模块:微控制器STM32F103、存储模块SD卡、解码模块VSl003、控制摇杆Joystick和显示屏LCD。MP3播放功能模块的工作分为两个部分:第一部分是循环播放MP3歌曲,该功能需要首先做一些初始化工作,MP3解码器一旦开始工作,就会一直向CPU请求数据,直至歌曲结束,只有通过键盘操作才会使该功能提前结束。因为MP3文件的数据量较大,在flash存储器内是以页为单位进行存储的,所以MP3的播放程序初始化就是要把该文件的首地址和页数先读出到CPU中,然后CPU可以根据如上数据进行取数据工作。第二部分则一直在等待中断发生,该程序是与键盘结合起来的,主要用于使用者对播放过程的控制。键盘操作对MP3播放过程的控制还包括后退、跃进、跳到下一首、音量控制等。因为整个播放过程的键盘控制功能比较单一,没有键的复合操作,所以程序都很容易实现。当MP3播放器插入到USB接口时,系统执行USB通讯功能模块,该模块主要用于对flash存储器内的文件数据进行管理。4.1 系统硬件设计平台本系统以STM32V100开发板为平台,进行MP3播放器的设计。4.2 总体架构设计如图4.1 所示,STM32F103x使用SPI2端口与VS1003芯片的SI、SO、SCLK连接;VS1003芯片的控制引脚xCS、xRESET、xDCS分别与STM32F103的PA1、PA0和PA2连接,低电平有效;VS1003的状态引脚DREQ与STM32F103处理器的PA3连接,低电平表示需要送数据,高电平表示正在处理数据。图4.1 MP3 Player硬件设计电路图4.3 模块化电路设计4.3.1 SD卡模块该系统使用STM32内部接口SPIl与SD卡进行通信,下面介绍其引脚连接情况。 PE3:低电平有效,连接到SD卡的片选引脚CDDAT3。SPI在和SD卡进行通信时,需要将PE3拉低才能对SD卡进行操作。 PA7:映射为STM32内部接口SPIl的主输出从输入(MOSI)信号线。这里STM32是主设备,SD卡是从设备。数据流的传输方向是从STM32传输给SD卡。该信号线用于传输一些控制命令来完成SD卡的操作,如读、写等。 PA5:已连接到STM32内部接口SPIl的时钟(SCLK)信号线。可设置SPI的时钟频率来调整读取SD卡数据的快慢。 PA6:已连接到STM32内部接口SPIl的主输入从输出(MISO)信号线。数据的传输方向是从SD卡传输给STM32,主要返回SD卡的一些状态、内部寄存器值等。 PCI2:用于检测SD卡是否完全插入。当SD卡完全插入时,PCl2为低电平,否则为高电平。由于本系统采用STM103V100-II开发板,所以就以其自带的SD卡的结构及读写方法进行介绍,STM103V100-II评估板有SD连接器,其使用SPI总线与STM32处理器连接,如图4.2所示图4.2 SD连接器与STM32处理器SPI连接图4.3.2 音频解码器模块该系统使用STM32内部接口SPl2与VSl003进行通信,下面具体介绍其引脚连接以及使用情况。 PA3:VSl003的中断请求引脚。当VSl003内部数据已处理完毕,需要新的数据时,将DREQ拉高。STM32根据这个信号来给VSl003发送新的数据流。 PBl3:已连接到STM32内部接口SPI2的时钟(SCLK)信号线。 PBl4:已连接到STM32内部接口SPI2的主输入从输出(MISO)信号线。这里STM32是主设备,VSl003是从设备。数据流的传输方向是从VSl003传输给STM32。主要用于读取VSl003的一些状态和内部寄存器值,比如寄存器测试返回的内部寄存器的值。 PBl5:已连接到STM32内部接口SPl2的主输出从输入(MOSI)信号线。这里STM32是主设备,VSl003是从设备。数据流方向是从STM32传输给VSl003,主要传输给VSl003一些控制命令、MP3WMA数据流等。PAl:低电平有效,如果拉低该引脚,那么通过SPI传输的是控制信号。控制信号包括读写VSl003的内部寄存器、对VSl003进行初始化、设置左右声道音量等。PA2:低电平有效,如果拉低该引脚,那么通过SPI传输的是数据信号。比如在向VSl003传输MP3WMA的数据流时需要拉低该引脚。PA0:低电平有效,拉低该引脚则硬件复位VSl003。本系统所设计的音频解码模块的硬件电路图如图4.3所示图4.3 音频解码器驱动电路图4.3.3 液晶显示模块 LCD液晶显示模块主要完成数据显示、输出数据与显示数据的同步等功能,可为使用者提供曲目信息。由3.3.4 显示模块方案可知,前期为了简化电路的设计,以及充分利用开发板资源,此次系统显示模块设计采用STM32V100开发板有自带的LCD液晶屏,如果时间允许,我将对支持汉字液晶屏进行研究以用于显示歌词,音量等。LCD液晶屏硬件电路如图4.3所示图4.4 LCD1602硬件电路图第五章 软件程序设计5.1 系统软件开发平台STM32系列微控制器采用ARM公司最新的CortexM3内核。Cortex-M3是ARM公司推出的最新的针对微控制器应用的内核,提供业界领先的高性能和低成本的解决方案,将成为MCU应用的热点和主流。但是目前能够支持Cortex-M3架构的开发工具很少,包括SDT、ADS1.2等开发工具都不支持。MDK是目前性价比最高的支持Cortex-M3处理器的开发工具。故本次设计的软件平台是建立在软件MDK Vision3之上的。5.2 程序实现思想本系统的工作过程大致为:STM32通过SPIl从SD卡中读取MP3WMA文件,将所读取的数据流通过SPl2发送到VSl003解码中播放;PC机可通过USB总线读写SD卡的内容,传送MP3WMA等文件;LCD显示屏用于显示MP3的文件名、播放状态。五维摇杆左右摇动控制播放上一首下一首,上下摇动控制音量,按下则控制播放暂停。5.3整体软件系统流程图有硬件系统可得软件的系统流程图:图5.1 软件系统流程图5.4 各模块软件系统设计5.4.1 SD卡读写模块设计msd.c 该文件用于提供SD卡的驱动,由ST公司所带例程提供,本系统用到以下一些函数。 SPI_Config:配置与SD卡相连接的SPI1; MSD_Init:初始化SD卡通讯; MSD_WriteByte:向SD卡写一个字节; MSD_WriteByte:从SD卡读一个字节; MSD_GoIdleState:令SD卡处于空闲态; Get_Medium_Characteristics:获取SD卡的容量; MSD_SendCmd:向SD卡发命令; MSD_GetResponse:从SD卡获取响应; MSD_ReadBlock:从SD卡读取一块数据;5.4.2 FAT16文件系统fat16.c该文件提供FAT16文件系统的支持,主要包含以下一些函数: ReadMBR:读取MBR数据结构; ReadBPB:读取BPB数据结构; ReadFAT:读取文件分配表指定项; ReadBlock:读取一个扇区; FAT_Init:获取FAT16文件系统基本信息; DirStartSec:获取根目录的开始扇区号; DataStartSec:获取数据区的开始扇区号; ClusConvLBA:获取一个簇的开始扇区号; LBAConvClus:转换扇区号与簇号之间的关系; LBAConvClus:计算可用空间,返回字节数; GetFileName:获取指定文件的首扇区号; List_DateAndTime:获取文件或目录项的日期时间; SearchFoler:在指定范围内查找子目录; List_AllDir_Long:列出指定范围内的目录及目录信息; FAT_FileOpen:打开指定文件; FAT_FileRead:读取文件数据;5.4.2 MP3播放流程设计通过SPI1从SD卡中读取声波文件,将所读取的部分存放在一个缓冲器中,利用TIMER2通道1定期产生的中断,从缓冲器中读取声音数据,然后根据声音数据通过TIMER4的通道3产生不同频率方波输出。这里使用了两个缓冲器,一个用于存放从SD卡读到的声音数据,另一个用于将声音数据输出到PWM,两个缓冲区的功能不断交替,形成一个由2个缓冲区构成的环形缓冲。播放声波文件由PC机通过超级终端以命令的方式选择,声音的播放状态也显示在PC机超级终端上。具体流程如图 所示图5.2 MP3播放程序设计流程图5.4.3 液晶显示设计液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表(2)是DM-1602的内部显示地址。比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H) 具体流程图如图5.3所示图5.3 液晶显示流程图5.5 程序设计结果由于SPIl读取SD卡文件的速度远超过VSl003播放数据流的速度,因此VSl003在播放来自SPI2的数据流期间,SPIl能从SD卡中读取下次播放所需的数据,不会产生声音不连续的情况。由于使用了2个SPI接口,相互之间无干扰,且提高了文件系统的效率,因此本系统得到了非常高品质的音乐。第六章 测试和调试6.1 运行过程1) 使用MDK uvision3通过ULINK2仿真器连接开发板,或使用2根USB电缆分别将CN1和CN5与PC机USB端口相连(使用板上自带的ULINK Me)。2) 使用串口线将开发板的串口COM0与PC机连接,在PC机上运性windows自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);3) 程序目录下的Simple_Wave_Player.Uv2工程,将其编译连接后烧写到STM32V100的板子中。4)将所要测试声波文件TEST1.wav、TEST2.wav拷贝到SD卡中,并将SD卡插入板子的SD连接器中。5)重启STM32V100开发板,在超级终端上将看到SD卡的信息以及提示符“X:”,键入敌人命令然后回车列出SD卡上的所有文件和目录。6)可以在超级终端中输入“dir”、“cd”、“free”、“read”等命令,(注:read命令后跟文件名;读出并输出文件的文本内容,可以正确显示文本文件,如:以“txt”,“c”,“h”为后缀的文件),观察运行结果。7)在超级终端中输入“play TEST1.wav”,通过开发板的扬声器或者耳机将能听到音乐声。6.3 问题分析6.3.1 硬件方面重启STM32v100开发板的时候,超级终端上不能显示SD卡的相应信息。造成这种现象的原因是由于存储歌曲文件的SD卡格式不正确,SD卡要采用FAT文件格式。6.3.2 软件方面1)显示曲目编号的时候LCD液晶显示屏不能完全显示相应字符串。液晶显示问题,一般是显示位置函数 write_com(0x80+0x40+add) 出错造成的,因为LCD液晶一行可以显示16个字节,而后8个字节是不能显示在屏上的,所以调节要显示的位置值,就可以是完整的显示在LCD液晶屏的两行上。2)VS1003模块能否正常工作的关键在于驱动函数SPIPutChar()和SPIGetChar()函数,它关系到中央处理器对驱动模块的控制与支配。unsigned char SPIPutChar(unsigned char outb) /* Write and Read a byte on SPI interface. */ unsigned char inb; /* Wait if TXE cleared, Tx FIFO is full. */ while (SPI2-SR & TXE) = 0); SPI2-DR = outb; /* Wait if RNE cleared, Rx FIFO is empty. */ while (SPI2-SR & RXNE) = 0); inb = SPI2-DR; return (inb);u8 SPIGetChar(void) u8 Data = 0; /* Wait until the transmit buffer is empty */ while (SPI_GetFlagStatus(SPI2, SPI_FLAG_TXE) = RESET); /* Send the byte */ SPI_SendData(SPI2, 0xFF); /* Wait until a data is received */ while (SPI_GetFlagStatus(SPI2, SPI_FLAG_RXNE) = RESET); /* Get the received data */ Data = SPI_ReceiveData(SPI2); /* Return the shifted data */ return Data;第七章 结论本系统实现了简易MP3 Player的基本原型设计,还可以进一步利用英蓓特STM103V100-II评估板资源来完善和丰富该MP3 Player的功能,例如利用Joystick来选择歌曲、利用LCD来显示歌曲名、利用ADC来调节音量、利用几个LED灯来表示音量大小。如果能完成以上所有相关设计,则可以基本熟悉STM32处理器的各种应用开发。结束语本文提出了一种基于STM32的MP3播放器设计方案,并使用ARM开发工具RealView MDK实现了该方案的原型。尽管该方案无法作为一个通用MP3的方案,但是对于某些音频需要的工业控制、汽车电子、医疗电子等方案具有一定的参考性。本系统也可以尝试采用更有效的中断方式,在内存中设置一个环形的缓冲区,SPI1从SD卡读取的MP3文件数据存放在其中,当VS1003需要数据时其DREQ引脚将产生低电平,利用其产生中断,在中断服务程序中从缓冲区读取数据送VS1003,直至DREQ引脚恢复为高电平时退出中断。限于时间与篇幅的问题,我将不对上述情况予以实现。参考文献1 李宁编著。基于MDK的STM32处理器开发应用。北京航空航天大学出版社,2008年2 马忠梅,李善平,康慨,叶楠编著。ARM&Linux嵌入式系统教程。北京航天航空大学出版社,2004年3 熊茂华,杨震伦编著。ARM9嵌入式系统设计与开发应用。清华大学出版社4 赖晓晨、原旭、孙宁编著。嵌入式系统程序设计。清华大学出版社,2010年5 康华光,陈大钦,张林编著。电子技

温馨提示

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

评论

0/150

提交评论