基于STM32单片机的MP3播放器毕业设计.docx
- 文档编号:14384620
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:35
- 大小:1.72MB
基于STM32单片机的MP3播放器毕业设计.docx
《基于STM32单片机的MP3播放器毕业设计.docx》由会员分享,可在线阅读,更多相关《基于STM32单片机的MP3播放器毕业设计.docx(35页珍藏版)》请在冰点文库上搜索。
基于STM32单片机的MP3播放器毕业设计
讲师
基于STM32的MP3播放器设计
独创性声明
本人郑重声明:
所呈交的毕业论文(设计)是本人在指导老师指导下取得的研究成果。
除了文中特别加以注释和致谢的地方外,论文(设计)中不包含其他人已经发表或撰写的研究成果。
与本研究成果相关的所有人所做出的任何贡献均已在论文(设计)中作了明确的说明并表示了谢意。
签名:
年 月 日
授权声明
本人完全理解贺州学院有关保留、使用本科生毕业论文(设计)的规定,即:
学院有权保留并向国家有关部门或机构送交毕业论文(设计)的复印件和磁盘,允许毕业论文(设计)被查阅和借阅。
本人授权贺州学院可以将毕业论文(设计)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编论文(设计)。
本人论文(设计)中有原创性数据需要保密的部分为:
无。
签名:
年 月 日
指导教师签名:
年 月 日
基于STM32的MP3播放器设计
摘要
随着数字编解码及压缩技术的发展,语音文件也朝着高压缩比、高保真的方向发展,从MP1、MP2到目前的MP3格式。
因此高压缩比、高保真MP3播放器设计研究有很好的应用前景。
本论文详细介绍了基于STM32的MP3播放器的设计的方法,系统实现了把SD卡中存储的MP3格式的文件解码播放,并在TFT触摸屏上显示播放歌曲的名称、歌曲播放剩余时间及显示歌曲对应的歌词,通过TFT触摸屏上的图形交互用户图界,还可以实现歌曲的快进、快退、暂停和更改循环模式等,基本上可以实现一个带有触摸屏功能的MP3播放器。
关键词:
MP3播放器;STM32F103VCT6;VS1003;SD卡
ABSTRACT
Atthedevelopmentofthedigitalcodinganddecodingandcompressiontechnology,Voicefilesarealsomovinginahighcompressionratio,high-fidelitydirection,fromMP1,MP2toMP3formatnow.Therefore,highcompressionratio,high-fidelitydesignofMP3playershaveagoodprospect.
ThispaperintroducesbasedSTM32'sMP3playerdesignmethods,systemimplementstheSDcardstoredinMP3formatdecodingplayer,andTFTtouchscreendisplayplayingasongtitle,songplaybackremainingtimeanddisplaysongsCorrespondingtothelyrics,throughtheTFTtouchscreengraphicinteractivegraphicalusercommunity,Songscanalsofastforward,rewind,pauseandchangetheloopmode,basicallycanfunctionwithatouchscreenMP3player.
Keywords:
MP3player;STM32F103VCT6;VS1003;SDCard
1绪论
1.1选题背景
随着数字编解码及压缩技术的发展,语音文件也朝着高压缩比、高保真的方向发展,从MP1、MP2到目前的MP3格式。
便携式MP3播放器作为一种集音频播放、数据存储为一身的数码产品,其功能结构为电子设计人员所津津乐道。
MP3是MPEG一1音频III(1ayerIII)的简称。
MPEG一1音频(ISO/IECll172—3)是目前普遍应用的音频压缩标准,其中层III的算法最为复杂,但压缩比最大,效果也最好,在低码率的条件下基本能达到CD的音质效果。
MP3标准用尽可能低的码流实现CD音质的声音而不会产生数据损失。
如果对于一段声音不进行压缩的话,那么每存储一秒钟的立体声CD音质音乐必须用1.4Mbit,这是个十分大的开销。
通过运用MPEG音频标准的压缩技术,我们可以把存储空间压缩到原来的1/12而不会降低声音的音质。
即使使用1/24的压缩因子,仍然比单纯降低采样率的音质要好。
低数据量和高播放品质的优点使其成为音乐存储、数字广播、网上音乐传输的主要方式。
人们不仅可以使用计算机软件,还可以通过数字随身听来欣赏音乐。
在这种数字化潮流下,嵌入式系统已成为当前研究和应用的热点之一,嵌入式手持设备的视音频多媒体应用也越来越广泛。
由于嵌入式系统的应用要求及成本因素决定了嵌入式系统在系统资源,包括硬件资源和软件资源方面都是非常精简和高效的
1.2国内外研究现状及意义
MP3全称是MPEGLayer3,狭义的讲就是以MPEGLayer3标准压缩编码的一种音频文件格式。
在INTERNET广泛普及的今天,MP3音乐以其较小数据量和近似完美的播放效果已经成为计算机上和INTERNET最流行的音乐格式了。
将CD格式的音乐数据压缩成MP3格式,音效相差无几(除非你有很好的音响和鉴赏力),文件大小至少可以压缩12倍(每首PCM格式的CD歌曲大约40~50MB数据量)。
自韩国世韩(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播放器的研制与生产变得更加容易,成本也大大降低,市场更加广阔。
2系统硬件设计
2.1设计目标
本论文是基于STM32的MP3播放器的设计,论文中将涉及到:
STM32的学习和嵌入式原理的应用,MP3解码的实现原理及其解码芯片的应用指南,SD卡的数据存储结构及其各种文件系统的区别,TFT触摸屏的操作及简单GUI在TFT上的实现。
预期将能实现在TFT液晶上对MP3播放的实时控制。
2.2设计方案对比
2.2.1控制器方案
方案一:
此方案采用89C51单片机实现,单片机软件编程自由度大,可用编程实现各种控制算法和逻辑控制。
但是89C51需外接模数转换器来满足数据采样。
如果系统增加语音播放功能,还需外接语音芯片,对外围电路来说,比较复杂,且软件实现也较麻烦。
另外,51单片机需要用仿真器来实现软硬件调试,较为繁琐。
方案二:
此方案采用SPCE061A单片机实现,此单片机内置8路ADC,2路DAC,且集成开发环境中,配有很多语音播放函数,用SPCE061A实现语音播放相对方便。
但5V的工作电压,16位的处理器芯片,较低的闪存,使得功耗比较大,处理速度比较慢,工作效率比较低,存储量受到限制。
方案三:
此方案采用STM32F103VCT6实现,它使用高性能的ARMCortex-M332位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强型I/O端口以及包含2个12位的ADC、3个通用16位定时器和一个PWM定时器。
使得处理速度大大提高,机器功耗大大降低,整体性能得到很大提高。
32位的处理器使得控制更加稳定、迅速,窗口型看门狗,使得程序运行更加高效。
另外,比较方便的是该板支持硬件仿真,通过Ulink仿真器可以方便实现在线逐步调试,这大大方便了系统的开发与调试工作。
基于STM32的高性能,低功耗,方便调试等特性,故选择方案三。
2.2.2MP3解码方案
方案一:
此方案采用软解MP3,直接用软件解码。
节约了硬件成本,但代码复杂,编程难度较高,工作量极大,而且对控制器的处理速度和资源要求都比较高。
方案二:
此方案采用硬解MP3,直接用音频解码芯片解码。
它使用高性能的VS1003MP3解码芯片,功能强大而且价格便宜,VS1003支持MP3、WAV、WMA、MIDI等诸多音频格式,音质可与市场上中档MP3播放器相媲美。
基于上述比较,故选择方案二;
2.2.3显示模块方案
方案一:
此方案采用LCD1602,完成数据显示。
LCD1602驱动电路简单,它可以显示简单的中英文字符,功能和设计的成本都比较低!
方案二:
此方案采用LCD12864,它既可以显示中英文字符,也可以显示图片。
但其图案分辨率较低,而且只能显示单色字符。
方案三:
此方案采用TFT液晶模块,它既可以显示彩色数字、中英文字符和图案,还可以加上触摸屏模块,实现GUI用户图形交互实时控制!
基于TFT液晶的强大功能,故选择方案三。
2.2.4MP3储存介质方案
方案一:
此方案采用直接将MP3文件存放在控制器的内部ROM储存器中,读取速度快,操作简单方便。
但是,相比于51,AVR,SPCE061A等单片机,虽然STM32有着很大的内部ROM容量,但还是不能完整的保存一首MP3歌曲。
方案二:
此方案采用U盘来储存MP3文件,极大的提高了储存容量。
方案三:
此方案采用SD卡来储存MP3文件。
采用SPI通讯方式的SD卡不仅读取数据的速度快,而且具有小体积,大容量等特点。
根据本人的实际情况,故采用了方案三。
2.3系统设计原理
本设计由STM32最小系统,SD卡的读取模块,TFT控制模块,外扩FLASH模块,触摸屏模块,串口通信模块组成。
将要解决SD卡的读取及使用FATFS系统对SD卡的操作、TFT液晶的控制及触摸屏原理、还有图形用户界面GUI的实现等问题。
硬件系统方框图如图2-1所示。
基本设计流程是使用STM32系列微控制器,采用FATFS文件系统方式读取SD卡中的MP3文件,并控制MP3解码芯片对MP3文件进行解码播放,并在TFT液晶上显示实时播放情况。
图2-1硬件系统方框图
2.3.1中央处理器工作原理
STM32系列是基于CortexM3核的微控制器,它在CortexM3内核的基础上扩展了高性能的外围设备。
CortexM3是ARM公司最新推出的基于ARMv7体系架构的处理器核,具有高性能、低成本、低功耗的特点,专门为嵌入式应用领域设计。
ARMv7架构采用了Thumb2技术,它是在ARM的Thumb代码压缩技术的基础上发展起来的,并且保持了对现存ARM解决方案完整的代码兼容性。
Thumb2技术比纯ARM代码少使用31%的内存,减小了系统开销,同时能够提供比Thumb技术高出38%的性能。
在中断处理方面,CortexM3集成了嵌套向量中断控制器NVIC(NestedVectoredInterruptController)。
NVIC是CortexM3处理器的一个紧耦合部分,可以配置1~240个带有256个优先级、8级抢占优先权的物理中断,为处理器提供出色的异常处理能力。
同时,抢占(Preemption)、尾链(Tailchaining)、迟到技术(Latearriving)的使用,大大缩短了异常事件的响应时间。
CortexM3异常处理过程中由硬件自动保存和恢复处理器状态,进一步缩短了中断响应时间,降低了软件设计的复杂性。
CortexM3体系架构提出了新的单线调试技术,CortexM3处理器的跟踪调试是通过调试访问端口(DebugAccessPort,DAP)来实现的。
DAP端口可以作为串行线调试端口(SWDP)或串行JTAG调试端口(SWJDP,允许JTAG或SW协议)使用。
其中SWDP只需要时钟和数据2个引脚,实现低成本跟踪调试,避免使用多引脚进行JTAG调试,并全面支持RealView编译器和RealView调试产品。
此外CortexM3还具备高度集成化的特点,大大减小了芯片面积,内部集成了许多紧耦合系统外设,合理利用了芯片空间,使系统满足下一代产品的控制需求。
其引脚分布如图2-2所示:
图2-2STM32F103VCT6微控制器引脚分布图
2.3.2音频解码芯片
VS1003是一个单片MP3/WMA/MIDI音频解码器和ADPCM编码器。
它包含一个高性能,自主产权的低功耗DSP处理器核VS_DSP4,工作数据存储器,为用户应用提供5KB的指令RAM和0.5KB的数据RAM。
串行的控制和数据接口,4个常规用途的I/O口,一个UART,也有一个高品质可变采样率的ADC和立体声DAC,还有一个耳机放大器和地线缓冲器,芯片原理图如图2-3所示。
其具体特性如下:
(1)能解码MPEG1和MPEG2音频层III(CBR+VBR+ABR);WMA4.0/4.1/7/8/95-384kbps所有流文件;WAV(PCM+IMAAD-PCM);产生MIDI/SP-MIDI文件。
(2)对话筒输入或线路输入的音频信号进行IMAADPCM编码。
支持MP3和WAV流。
(3)高低音控制,低功耗,单时钟操作12~13MHz,内部PLL锁相环时钟倍频器。
(4)内含高性能片上立体声数模转换器,两声道间无相位差。
内含能驱动30欧负载的耳机驱动器,模拟,数字,I/O单独供电。
(5)为用户代码和数据准备的5.5KB片上RAM,串行的控制,数据接口,可被用作微处理器的从机。
(6)特殊应用的SPIFlash引导,供调试用途的UART接口,新功能可以通过软件和4GPIO添加。
图2-3VS1003芯片原理图
2.3.3TFT电阻式触摸屏
TFT电阻式触摸屏由TFT显示屏、驱动IC(ILI9320控制TFT)、触摸屏、触摸屏控制器(ads7843控制触摸屏电压的转换)等组成。
本设计采用的TFT显示屏是3.2寸TFT[240*320]26万色彩屏模块,支持SD卡,支持DATAFLASH,支持16位/8位模式,模块可以180度任意旋转使用。
ILI9320是一款包括一个720通道的源极驱动器,一个320通道门驱动器,172,800字节数据RAM,能驱动240RGBx320TFT液晶显示器的驱动芯片。
电阻式触摸屏工作原理如下:
电阻式触摸屏利用压力感应进行控制,它的主要部分是一块与显示器表面配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面图有一层透明氧化金属导电层,上面盖有另外一层氧化金属导电层,在他们之间有许多细小的(小于1/1000英寸)透明隔离点把两层导电层隔开绝缘。
当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,控制器侦测到这一接触并计算出(X,Y)的位置,再根据模拟鼠标的方式运作。
图2-4电阻式触摸屏的原理图
触摸屏控制芯片为ADS7843,ADS7843是一个内置12位模数转换、低导通电阻模拟开关的串行接口芯片。
供电电压2.7~5V,参考电压VREF为1V~+VCC,转换电压的输入范围为0~VREF,最高转换速率为125kHz,其引脚功能如表2-5所示。
ADS7843典型应用电路如图图2-6所示。
表2-5ADS7843的引脚功能表
图2-6ADS7843典型应用电路
2.3.4SD卡
SD卡(SecureDigitalMemoryCard)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。
本小节仅简要介绍在SPI模式下,STM32处理器如何读写SD卡。
SD卡如果采用FAT16文件格式,按照其不同的特点和作用大致可分为5部分:
MBR区、DBR区、FAT区、FDT区和DATA区。
由于SD卡一般不做引导盘,一般也不分区,因此通常无MBR区,直接从DBR区开始。
下面对后面四个区分别作简介:
(1)DBR区
内容为系统引导记录,它包括一个引导程序和一个被称为BPB(BiosParameterBlock)的本分区参数记录表。
引导程序的主要任务是当MBR将系统控制权交给它时,判断本分区根目录是否有操作系统引导文件,如果有则将其读入内存,并把控制权交给该文件。
BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、根目录大小、FAT个数,分配单元大小等重要参数。
(2)FAT区
该区内容为文件分配表,FAT16文件系统进行空间分配的最基本单位是簇。
文件分配表反映了SD卡所有簇的使用情况,通过查文件分配表可以得知任一簇的使用情况。
对于FAT16来说,FAT表每项占用两个字节。
FAT表的第一项通常为FFF8H。
对于其它项,若其值为0000H表示可用;FFF7H表示为坏簇;FFF8H-FFFFH之间表示该簇为某文件或目录的最后一个簇,FFF0H-FFF6H之间为保留值;其它值则指示下一个簇的簇号。
(3)FDT区
该区的内容为文件目录表,FAT文件系统的一个重要思想是把目录(文件夹)当作一个特殊的文件来处理,FAT32甚至将根目录当作文件处理。
FAT分区中所有目录文件,实际上可以看作是一个存放其它文件(文件夹)入口参数的数据表。
因此,目录占用空间的大小并不等同于其下所有数据的大小,但也不等于0,通常是占很小的空间。
其具体的存储原理是:
不管目录文件所占空间为多少簇,一簇为多少扇区、多少字节;系统都会以32个字节为单位,进行目录文件所占簇的分配。
(4)DATA区
该数据区存放文件的内容,SD卡所占用的空间绝大部分为此部分。
如果文件长度大于一个簇的大小,需要多个簇存放该文件,这些放通过FAT链表串连起来。
SD卡内部结构及引脚如图2-7所示
图2-7SD卡内部结构及引脚
SD卡主要引脚和功能为:
CLK:
时钟信号,每个时钟周期传输一个命令或数据位,频率可在0~25MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生0~25MHz的频率。
CMD:
双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡;
DAT0~3:
数据线,数据可以从卡传向主机也可以从主机传向卡。
SD卡以命令形式来控制SD卡的读写等操作。
可根据命令对多块或单块进行读写操作。
在SPI模式下其命令由6个字节构成,其中高位在前。
SD卡共支持三种传输模式:
SPI模式(独立序列输入和序列输出),1位SD模式(独立指令和数据通道,独有的传输格式),4位SD模式(使用额外的针脚以及某些重新设置的针脚。
支持四位宽的并行传输)低速卡通常支持0~400千比特/秒数据传输率,采用SPI和1位SD传输模式。
高速卡支持0~100兆比特/秒数据传输率,采用4位SD传输模式;支持0–25兆比特/秒,采用SPI和1位SD模式。
3系统软件设计
3.1系统软件开发平台
STM32系列微控制器采用ARM公司最新的CortexM3内核。
Cortex-M3是ARM公司推出的最新的针对微控制器应用的内核,提供业界领先的高性能和低成本的解决方案,将成为MCU应用的热点和主流。
但是目前能够支持Cortex-M3架构的开发工具很少,包括SDT、ADS1.2等开发工具都不支持。
MDK是目前性价比最高的支持Cortex-M3处理器的开发工具。
故本次设计的软件平台是建立在软件MDKµVision4.11之上的。
3.1.1程序设计流程图
图3-1程序设计流程图
本系统的程序设计流程图如图3-1所示,工作过程大致为:
STM32通过从SD卡中读取MP3文件,将所读取的数据流发送到VSl003解码器中解码播放;TFT触摸屏则用于显示歌曲的实时播放状态、歌词的显示、功能按扭和控制歌曲的快进,快退,停止等。
3.2各模块软件系统设计
3.2.1VS1003驱动程序
1、VS1003初始化的一般流程如下:
(1)硬复位,xReset=0;
(2)延时,xDCS、xCS、xReset置1;
(3)等待DREQ为高;
(4)软件复位:
SPI_MODE=0x0804;
(5)等待DREQ为高(软件复位结束);
(6)设置VS1003的采样率:
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读写函数如下:
u16Vs1003_REG_Read(u8address);//读寄存器
voidVs1003_DATA_Write(unsignedchar*buf);//写数据
voidVs1003_CMD_Write(u8address,u16data);//写命令
voidVs1003_Init(void);//初始化VS1003
voidMp3Reset(void);//硬复位
voidVs1003SoftReset(void);//软复位
voidset1003(void);//设置VS1003的音量,播放模式等
voidVsRamTest(void);//RAM测试
voidVsSineTest(void);//正弦测试
u16GetDecodeTime(void);//得到解码时间
u16GetHeadInfo(void);//得到比特率
voidResetDecodeTime(void);//重设解码时间
voidLoadPatch(void);//加载频谱分析代码
voidGetSpec(u8*p);//得到分析数据
3.2.2TFT显示屏驱动程序
驱动TFT显示屏实际上就是对ILI9320驱动IC的操作。
对ILI9320的初始化操作如下:
(1)向ILI9320控制器写入0x00.
(2)如果返回的数据为不是0x9320,则驱动IC不是ILI9320,停止初始化。
(3)如果返回的数据为0x9320,则向相应的寄存器写入默认的数据,启动驱动IC。
(4)拉低片选信号CS,再写R22h寄存器,接着写入要写的数据。
(5)写结束后再将CS拉高。
TFT显示屏的读写函数如下:
externvoidTFT_Write_Start(void);//写开始
externvoidTFT_Write_End(void);//写结束
externvoidTFT_SetGRAMHVA(u16x0,u16y0);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STM32 单片机 MP3 播放 毕业设计