首页 基于STM32的MP3播放器设计论文

基于STM32的MP3播放器设计论文

举报
开通vip

基于STM32的MP3播放器设计论文昆明理工大学津桥学院ARM实作课程报告实作设计题目:MP3音乐播放器专业:电子信息科学与技术年级:2011级姓名:彭喜学号:201116022124指导教师:王剑平日期:2013年11月27日基于STM的音乐播放器 指导教师 王剑平 职称 副教授 学生年级 11级 学生专业 电信 开发题目 Mp3播放器设计开发 选题的依据、目的、要求、工作量的大小:Mp3播放器在日常生活中有广泛应用,本题目旨在帮助学生掌握Mp3播放器的开发和应用。 选题的只要内容和意义:设计Mp3播放器,任务:(1)了解Mp3播放器的基本工作原理...

基于STM32的MP3播放器设计论文
昆明理工大学津桥学院ARM实作课程报告实作设计 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目:MP3音乐播放器专业:电子信息科学与技术 年级 六年级体育公开课教案九年级家长会课件PPT下载六年级家长会PPT课件一年级上册汉语拼音练习题六年级上册道德与法治课件 :2011级姓名:彭喜学号:201116022124指导教师:王剑平日期:2013年11月27日基于STM的音乐播放器 指导教师 王剑平 职称 副教授 学生年级 11级 学生专业 电信 开发题目 Mp3播放器设计开发 选题的依据、目的、要求、工作量的大小:Mp3播放器在日常生活中有广泛应用,本题目旨在帮助学生掌握Mp3播放器的开发和应用。 选题的只要内容和意义:设计Mp3播放器,任务:(1)了解Mp3播放器的基本工作原理。进行芯片选型、电路设计。(2)实现Mp3播放器文件浏览和播放。要求:(1)实现Mp3播放。(2)支持常用码率。(3)实时显示播放文件信息。 课程所需材料清单及材料费用预算:(1)STM32开发板700元(2)Mp3解码模块80元(3)液晶显示模块100元(4)其他辅料200元共计1080元 拟采用方法及预期成果:采用STM32主控制芯片实现功能,液晶显示结果。 教师意见:同意选题目录-5-一、前言-5-1.1选题背景与现状-5-1.2设计思路与结构-5-二、系统概述与硬件电路设计-5-2.1系统的总体构架-6-2.2电源模块-7-2.3微控制器模块-7-2.3.1STM32F103ZET6微控制器-9-2.3.2RDA5820简介-10-2.3.3.硬件设计-11-2.4带触摸功能的TFT液晶显示模块-12-2.5VS1053音频模块-13-2.5.1VS1053概述-16-2.5.2VS1053B解码电路设计-17-三、FAT文件系统-17-3.1FAT文件系统简介-18-3.2FAT文件系统的读取操作-21-四、系统软件设计-21-4.1软件设计总流程-21-4.2底层驱动程序设计-21-4.2.1TFT显示驱动程序设计-23-4.2.2ADS7846触摸驱动设计-24-4.2.3VS1053驱动设计-25-4.2.4SD卡读取驱动-27-4.3功能模块的设计-27-4.3.1音乐播放功能的设计-27-4.3.2USB读卡器-27-4.3.3触摸画板-29-五、系统调试与分析-29-5.1硬件调试-30-5.2软件调试-30-5.2.1软件设计-31-5.2.2下载验证-32-六、结束语-32-参考文献ABSTRACTIsahighqualityMP3musiccompressionstandard,withMP3compresseddatacanbereducedto1/12,butthereislittlelossofsoundquality.MP3musicasthesmalleramountofdataandhigh-qualityplayback,itwillsoonbecomeasetofaudioplayback,thedataisstoredasadigitalproduct,andverypopular.Inthispaper,STM32familyofmicrocontrollers,combinedwithdecoderchipVS1053,SDcard,LCDandotherperipheralsdesignandimplementationofMP3players.Itsmainfunctionsare:PlayVS1053supportsallaudiofiles,suchasMP3,WMA,WAVfiles,andthesoundqualityisverygood;throughthejoystickcontrolplaybackona/tothenext,throughapotentiometertocontrolvolumechange,throughtheLCDshowthevolumeiconandplaystatus,etc.;Thesystemalsoplanstoachievereaderfunction,PCmachineinterfacesviaUSBdirectlytothedevelopmentboardoftheSDcardreadandwriteoperationstofacilitatethecopyingaudiofiles.Keywords:MP3Players;CortexM3;STM32F103RBT6;VS1053;FAT摘要随着生活水平的提高,人们对消费电子的需求也越来越高。多功能的MP3播放器也受到越来越多人的青睐。电子技术快的速发展和消费者的爱好需求,MP3的功能也越来越多,它与PDA、手机一样,都向多功能方面发展,尽可能吸收其它产品的功能,以便增加产品卖点。系统采用ARMCortex™-M3内核的STM32F103RBT6作为微控制器,结合VS1053音频解码芯片,SD卡存储器,TFT液晶显示屏等外围设备,以及FAT文件操作,设计实现了集音乐播放﹑触摸画板﹑USB读卡器等为一体的多功能MP3播放器。关键词:STM32F103RBT6;VS1053;SD卡;TFT液晶;MP3播放器;FAT小组成员:张春玲、杨昌彪、彭琴、王哲、谢树斌、彭喜软件设计:杨昌彪硬件设计:张春玲、彭琴程序调试:彭喜、杨昌彪SD卡程序:王哲、谢树斌基于STM32F的MP3播放器设计一、前言1.1选题背景与现状二十一世纪的第一个十年过去了,随着电子技术的高速发展和嵌入式系统的应用,越来越多的电子产品进入人们的视野。面对多形式、多渠道的信息,人们对信息的整合运用与随时调整的要求越来越高,消费电子无疑将潜移默化地改变人们的生活。目前,消费电子产业每年都持续增长,所涉及的产品领域和行业也越来越多。丰富的电子产品正从各个角度向消费者展示着“数字生活”的新概念,给人们带来了耳目一新的全面享受。自从1998年世界上第一台MP3播放器[1]推出以来。MP3播放器市场以极快的速度发展,MP3的功能也越来越多。国产品牌的MP3播放器也进入市场当中,以纽曼、蓝魔、魅族等企业为代表的MP3播放器企业占据了国内MP3播放器市场主要份额。现阶段的播放器在保障高品质的前提下,尽可能吸收其它产品的功能,以便增加产品卖点。1.2设计思路与结构现阶段MP3播放器技术已经很成熟,但对于缺少实践经验的我们还是有许多吸引力。抱着学习的态度,同时结合大学四年所学的专业知识,设计并制作了一款多功能的MP3播放器。本设计采用STM32F103ZET6作为微控制器、VS1053音频作为解码模块、SD卡作为文件存储模块、触摸TFT作为控制终端。以下为主要实现的功能:·MP3文件播放功能·USB读卡器·触摸画板·时间显示本文主要分为三个模块介绍说明了设计的理论与实现:1)硬件电路模块——分析各个模块的原理以及电路的设计。2)文件系统模块——详细说明了本设计中使用的FAT文件系统的原理及相关操作方法。3)系统软件模块——相关的驱动设计及各个功能实现的软件分析。二、系统概述与硬件电路设计2.1系统的总体构架MP3播放器其实就是一个功能特定的小型电脑。在MP3播放器小小的机身里,拥有MP3播放器存储器(存储卡)、MP3播放器显示器(LCD显示屏)、MP3播放器中央处理器MCU(微控制器)或MP3播放器解码DSP(数字信号处理器)等。本设计采用STM32F103ZET6读取SD卡中的MP3音乐文件,并将数据送入VS1053进行音频解码,得到模拟的音乐流,从而实现MP3的音乐播放功能。同时结合TFT触摸屏、74HC4052音频选择存储器、STM32F等外围接口设备[2],内嵌USB读卡器等功能。其系统框图如图2-1所示。SHAPE\*MERGEFORMAT图2-1MP3播放器系统框图硬件模块主要包括电源模块﹑微处理器模块﹑VS1053音频解码模块﹑TFT触摸液晶模块。电源模块提供3.3V直流稳压电源。STM32F微处理器模块主要提供SD卡接口,TFT触摸液晶接口,DS18B20接口,74HC4052接口以及VS1053接口。VS1053音频解码模块主要获取STM32F103ZET6传入的音频文件信息与控制信息,同时输出音频信号。TFT触摸液晶模块实现TFT的显示和触摸屏的控制。2.2电源模块电源是电子设备中必不可少的一部分,它为设备提供了能量。电源模块电路如图2-2所示。USB或5V电源适配器经过AMS1117-3.3产生3.3V直流电源供系统使用。C82可以防止电感效应而产生的自激,C86用来减小由于负载电流瞬时变化而引起的高频干扰,C85用来进一步减小输出脉动和低频干扰,使电源输出更加稳定。图2-2电源模块电路2.3微控制器模块2.3.1STM32F103ZET6微控制器本设计中的微控制器采用意法半导体公司出产的STM32F103ZET6芯片,STM32F103ZET6基于ARMCortex™-M3CPU内核设计[5],片上集成有丰富的数字和模拟资源,允许最高72MHz的工作频率,是一款性价比很高的32位ARM处理器,是低成本ARM嵌入式应用的极佳选择。其引脚分布如图2-3所示。图2-3STM32F103ZET6引脚图STM32F103ZET6模块接口电路如图2-4所示。图中,P7为插针,用于选择系统的启动模式:当BOOT0=1时用户闪存存储器被选为启动区域,此时可以通过串口下载程序;当BOOT0=0时,系统存储器被选为启动区域。电容C52至C622为STM32F103ZET6电源引脚的旁路电容,能够起到稳定电源的作用,在PCB布板时应尽量靠近MCU。Y4为8MHz晶振,为STM32F103ZET6提供工作时钟,在设计时也要靠近MCU,避免干扰。为了PCB布线的方便,本设计中的PC52~PC62引脚模拟VS1053的SPI接口。STM32F103ZET6微控制器各引脚的接口描述如表2-1所列。图2-4STM32F103ZET6模块电路表2-1STM32F103ZET6引脚接口分布表 STM引脚编号 连接器件 备注 3,4 32.678kHz晶振Y1 RTC时钟晶振 5,6 8MHz晶振Y2 系统时钟 PA0~PA7,PC0~PC7 触摸液晶模块接口JP1 液晶16位数据口 PB12~PB15 SD卡U2 STM32的SPI接口 PC10~PC12 VS1003的SPI接口U3 采用STM32模拟SPI接口 PA14,PA15,PD2,PB3 VS1033控制接口U3 PB5~PB9 触摸液晶模块接口JP1 液晶控制接口 PB0~PB2,PB10,PB11 触摸液晶模块接口JP1 触摸控制接口 PA11,PA12 USB接口 PA13 18B20数据口J4 PC8,PC9 24C02接口U5 2.3.2RDA5820简介RDA5820是北京锐迪科推出的一款集成度非常高的立体声FM收发芯片。该芯片具有以下特点:1)FM发射和接收一体2)支持65Mhz~115Mhz的全球FM接收频段,收发天线共用。3)支持IIC/SPI接口4)支持32.768K晶振5)数字音量及自动AGC控制6)支持立体声/单声道切换,带软件静音功能7)支持I2S接口(输入/输出)8)内置LDO,使用电压范围宽(2.7~5.5V)9)高功率32欧负载音频输出、可直接驱动耳机10)集成度高、功耗低、尺寸小(4mm*4mmQFN封装)、应用简单RDA5820应用范围很宽,在很多手机、MP3、MP4甚至平板电脑上都有应用。RDA5820的引脚图如图2-5所示:图2-5RDA5820引脚图RDA5820支持2种通信模式,SPI和IIC,在战舰STM32开发板上面,使用的是RDA5820的IIC模式。通过将图2-5的MODE脚接GND,RDA5820即进入IIC模式,此时SCLK充当IIC的SCL,SDIO充当IIC的SDA。RDA5820的IIC地址为0X11(不包含最低位),对应读为0X23,写为0X20。模式设置RDA5820的模式设置通过40H(寄存器地址0X40)寄存器的CHIP_FUNC[3:0]位来设置,RDA5820可以工作在RX模式、TX模式、PA模式和DAC模式等,本章我们只介绍RX模式和TX模式。通过设置CHIP_FUNC[3:0]=0即可定义当前工作模式为FM接收模式。在该模式下,我们即可实现FM收音机功能。通过设置CHIP_FUNC[3:0]=1即可定义当前工作模式为FM发送模式。在该模式下,我们即可实现FM电台的功能。频点设置软件可以通过配置03H(寄存器地址0X30)寄存器来选择FM频道。搜台(Seek)的步进长度(100KHz、200KHz或50KHz)由SPACE[1:0]来选择,频道由CHAN[9:0]来选择,频率范围(76MHz~91MHz、87MHz~108MHz或76MHz~108MHz或用户自定义65MHz~115MHz范围内频段)由BAND[1:0]来选择。自定义的频段由寄存器53H(chan_bottom)和54H(chan_top)来设置,单位为100KHz,即定义65MHz~76MHz,可设置BAND[1:0]=3(用户自定义频段),并且设置chan_bottom=0x028A,chan_top=0x02f8。频点计算方法如下(该公式也适用于FM频点的读取):FMfreq=SPACE*CHAN+FMBTM其中FMfreq即我们需要的FM频率(Mhz),SPACE为我们设置的步进长度(Khz),CHAN是我们设置的频点值,FMBTM则是我们在BAND里面所选频段的最低频率,当BAND=0的实惠,FMBTM=87Mhz;BAND=1的时候,FMBTM=76Mhz;BAND=2的时候,FMBTM=CHAN_BOTTOM*0.1Mhz。例如,我们要设置FM频率为93.0Mhz,假设BAND=0,SPACE=100Khz。那么我们只需要设置CHAN=60即可。频点设置部分,FM接收和FM发送是共用的,对两者都适用。关于RDA5820,我们就介绍到这,详细的使用说明,请大家参考《RDA5820编程指南》和RDA5820的数据手册。2.3.3.硬件设计音频选择器(74HC4052)和耳机驱动(TDA1308)的连接电路如图2-6所示:图2-6音频选择器与耳机驱动连接电路图2.4带触摸功能的TFT液晶显示模块STM32F103ZET6有丰富的I/O接口,在选择显示器件时有充足的余地。以往的电路设计一般都采用LCD1602或LCD12864,不过它们都是黑白屏,不能提供彩色图片显示的功能。随着TFT屏的广泛使用,它的价格也越来越低,并且更符合本设计的要求,因而本系统便采用2.4寸TFT-LCD(型号WXCAT24-TSI#001),它的显示驱动采用ILI9320[8],其特征如下:·320×240分辨率。·供电电压2.5~3.3V。·16位数据接口。·高的对比、高亮度、低功耗。·4-wires模拟电阻式触摸屏。当触摸屏被按下时会得到模拟的电压值,因此要将该值转换成坐标就需要一个A/D控制器。这种触摸屏的A/D控制芯片有很多,本系统触摸控制芯片采用TI公司的ADS7846[9]低压I/O触摸屏控制器。其芯片引脚图见图2-7所示,各个引脚的功能如表2-2所列。图2-7ADS7846引脚图表2-2ADS7846芯片引脚说明 引脚号 引脚名称 引脚说明 1 +VCC 电源(2.2V~5.25V) 2 X+ X+位置输入 3 Y+ Y+位置输入 4 X- X-位置输入 5 Y- Y-位置输入 6 GND 地 7 VBAT 电池监控器输入 8 AUX ADC辅助输入 9 VREF 基准电压输入输出(2.5V) 10 +VCC 数字I/O电源(2.2V~5.25V) 11 笔断控制脚 12 DOUT 连续数据输出,数据在DCLK下降沿转换,为高电平时输出高阻抗 13 BUSY BUSY输出,为高电平时输出高阻抗 14 DIN 连续数据输入,数据在DCLK上升沿保持 15 芯片选择输入,控制转换时间,控制连续数据输入输出寄存器。为高电平时等同于掉电模式,仅仅对ADC有效 16 DCLK 外部时钟输入端。时钟驱动SAR转换器,并与连续输入输出同步带触摸功能的TFT液晶显示模块电路如图2-8所示。图中,三极管Q1用来控制TFT背光,DB0~DB15是显示驱动ILI9320的数据线,JP1为引脚插针,便于和微控制器模块连接。图2-8带触摸功能的TFT液晶显示模块电路2.5VS1053音频模块虽然STM32F103ZET6具有最高72MHz的频率,但它没有独立的DSP音效处理能力,如果直接用它来进行音频数据处理,很难实现优质的音频输出,同时考虑到自己的能力和精力有限,因而本系统的音频解码部分则另采用一款简单实用的音效处理芯片VS1053来完成。本模块涉及到模拟信号与数字信号,在设计时要考虑信号的隔离措施,模拟信号与数字信号的连接处需串联磁珠或0欧电阻以避免信号干扰。2.5.1VS1053概述VS1053是继VS1003后荷兰VLSI公司出品的又一款高性能解码芯片。该芯片可以实现对MP3/OGG/WMA/FLAC/WAV/AAC/MIDI等音频格式的解码,同时还可以支持ADPCM/OGG等格式的编码,性能相对以往的VS1003提升不少。VS1053拥有一个高性能的DSP处理器核VS_DSP,16K的指令RAM,0.5K的数据RAM,通过SPI控制,具有8个可用的通用IO口和一个串口,芯片内部还带了一个可变采样率的立体声ADC(支持咪头/咪头+线路/2线路)、一个高性能立体声DAC及音频耳机放大器。VS1053的特性如下:●支持众多音频格式解码,包括OGG/MP3/WMA/WAV/FLAC(需要加载patch)/MIDI/AAC等。●对话筒输入或线路输入的音频信号进行OGG(需要加载patch)/IMAADPCM编码●高低音控制●带有EarSpeaer空间效果(用耳机虚拟现场空间效果)●单时钟操作12..13MHz●内部PLL锁相环时钟倍频器●低功耗●内含高性能片上立体声DAC,两声道间无相位差●过零交差侦测和平滑的音量调整●内含能驱动30欧负载的耳机驱动器●模拟,数字,I/O单独供电●为用户代码和数据准备的16KB片上RAM●可扩展外部DAC的I2S接口●用于控制和数据的串行接口(SPI)●可被用作微处理器的从机●特殊应用的SPIFlash引导●供调试用途的UART接口●新功能可以通过软件和8GPIO添加VS1053相对于它的前辈VS1003,增加了编解码格式的支持(比如支持OGG/FLAC,还支持OGG编码,VS1003不支持)、增加了GPIO数量到8个(VS1003只有4个)、增加了内部指令RAM容量到16KiB(VS1003只有5.5KiB)、增加了I2S接口(VS1003没有)、支持EarSpeaer空间效果(VS1003不支持)等。同时VS1053的DAC相对于VS1003有不少提高,同样的歌曲,用VS1053播放,听起来比VS1003效果好很多。VS1053的封装引脚和VS1003完全兼容,所以如果你以前用的是VS1003,则只需要把VS1003换成VS1053,就可以实现硬件更新,电路板完全不用修改。不过需要注意的是VS1003的CVDD是2.5V,而VS1053的CVDD是2.8V,所以你还需要把稳压芯片也变一下,其他都可以照旧了。VS1053通过SPI接口来接受输入的音频数据流,它可以是一个系统的从机,也可以作为独立的主机。这里我们只把它当成从机使用。我们通过SPI口向VS1053不停的输入音频数据,它就会自动帮我们解码了,然后从输出通道输出音乐,这时我们接上耳机就能听到所播放的歌曲了。ALIENTEK战舰STM32开发板,自带了一颗VS1053音频编解码芯片,所以,我们直接可以通过开发板来播放各种音频格式,实现一个音乐播放器。战舰STM32开发板自带的VS1053解码芯片电路原理图,如图2-9所示:。图2-9ALIENTEK音频解码模块原理图VS1053通过7根线同STM32连接,他们是:VS_MISO、VS_MOSI、VS_SCK、VS_XCS、VS_XDCS、VS_DREQ和VS_RST。这7根线同STM32的连接关系如表2-3所示:表2-3VS1053各信号线与STM32连接关系其中VS_RST是VS1053的复位信号线,低电平有效。VS_DREQ是一个数据请求信号,用来通知主机,VS1053可以接收数据与否。VS_MISO、VS_MOSI和VS_SCK则是VS1053的SPI接口他们在VS_XCS和VS_XDCS下面来执行不同的操作。从上表可以看出,VS1053的SPI是接在STM32的SPI1上面的。VS1053的SPI支持两种模式:1,VS1002有效模式(即新模式)。2,VS1001兼容模式。这里我们仅介绍VS1002有效模式(此模式也是VS1053的默认模式)。表2-4是在新模式下VS1053的SPI信号线功能描述:表2-4VS1053新模式下SPI口信号线功能VS1053的SPI数据传送,分为SDI和SCI,分别用来传输数据/命令。SDI和前面介绍的SPI 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 一样的,不过VS1053的数据传输是通过DREQ控制的,主机在判断DREQ有效(高电平)之后,直接发送即可(一次可以发送32个字节)。这里我们重点介绍一下SCI。SCI串行总线命令接口包含了一个指令字节、一个地址字节和一个16位的数据字。读写操作可以读写单个寄存器,在SCK的上升沿读出数据位,所以主机必须在下降沿刷新数据。SCI的字节数据总是高位在前低位在后的。第一个字节指令字节,只有2个指令,也就是读和写,读为0X03,写为0X02。一个典型的SCI读时序如图2-10所示:图2-10SCI读时序从图49.1.2可以看出,向VS1053读取数据,通过先拉低XCS(VS_XCS),然后发送读指令(0X03),再发送一个地址,最后,我们在SO线(VS_MISO)上就可以读到输出的数据了。而同时SI(VS_MOSI)上的数据将被忽略。看完了SCI的读,我们再来看看SCI的写时序,如图2-11所示:图2-11SCI写时序图2-11中,其时序和图2-10基本类似,都是先发指令,再发地址。不过写时序中,我们的指令是写指令(0X02),并且数据是通过SI写入VS1053的,SO则一直维持低电平。细心的读者可能发现了,在这两个图中,DREQ信号上都产生了一个短暂的低脉冲,也就是执行时间。这个不难理解,我们在写入和读出VS1053的数据之后,它需要一些时间来处理内部的事情,这段时间,是不允许外部打断的,所以,我们在SCI操作之前,最好判断一下DREQ是否为高电平,如果不是,则等待DREQ变为高。VS1053总共有16个SCI寄存器,这里我们不介绍全部的寄存器,仅仅介绍几个我们在本章需要用到的寄存器。首先是MODE寄存器,该寄存器用于控制VS1053的操作,是最关键的寄存器之一,该寄存器的复位值为0x0800,其实就是默认设置为新模式。表2-5是MODE寄存器的各位描述:表2-5MODE寄存器各位描述2.5.2VS1053B解码电路设计在设计VS1053解码电路时,数字地与模拟地必须相互连接并尽量靠近VS1053以避免锁存上拉,为了能播放48KHz采样率的音频文件,输入时钟使用12.288MHz。具体设计电路如图2-12所示。VS1053通过MISO﹑MOSI﹑SCK(SPI接口)来接收输入的MP3数据,经过VS1053内置的采样DAC转换为音频模拟量,最后通过Left﹑Right和Gbuf输出。图2-12VS1053解码模块电路三、FAT文件系统3.1FAT文件系统简介FATFS是一个完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C语言编写,所以具有良好的硬件平台独立性,可以移植到8051、PIC、AVR、SH、Z80、H8、ARM等系列单片机上而只需做简单的修改。它支持FATl2、FATl6和FAT32,支持多个存储媒介;有独立的缓冲区,可以对多个文件进行读/写,并特别对8位单片机和16位单片机做了优化。FATFS的特点有:Windows兼容的FAT文件系统(支持FAT12/FAT16/FAT32)与平台无关,移植简单代码量少、效率高多种配置选项支持多卷(物理驱动器或分区,最多10个卷)多个ANSI/OEM代码页包括DBCS支持长文件名、ANSI/OEM或Unicode支持RTOS支持多种扇区大小只读、最小化的API和I/O缓冲区等FATFS的这些特点,加上免费、开源的原则,使得FATFS应用非常广泛。FATFS模块的层次结构如图3-1所示:图3-1FATFS层次结构图最顶层是应用层,使用者无需理会FATFS的内部结构和复杂的FAT协议,只需要调用FATFS模块提供给用户的一系列应用接口函数,如f_open,f_read,f_write和f_close等,就可以像在PC上读/写文件那样简单。中间层FATFS模块,实现了FAT文件读/写协议。FATFS模块提供的是ff.c和ff.h。除非有必要,使用者一般不用修改,使用时将头文件直接包含进去即可。需要我们编写移植代码的是FATFS模块提供的底层接口,它包括存储媒介读/写接口(diskI/O)和供给文件创建修改时间的实时时钟。FATFS的源码,大家可以在:http://elm-chan.org/fsw/ff/00index_e.html这个网站下载到,目前最新版本为R0.09a。本章我们就使用最新版本的的FATFS作为介绍,下载最新版本的FATFS软件包,解压后可以得到两个文件夹:doc和src。doc里面主要是对FATFS的介绍,而src里面才是我们需要的源码。3.2FAT文件系统的读取操作一般硬盘的数据结构是按图3-2而建立的。图3-2FAT文件系统结构图启动区的内容,也就是第一个扇区,使用WinHex软件查看,如图3-3所示。其中,带下划线或点线部分为有用内容,具体含义依次如下。图3-3FAT启动区EB5990:跳转指令。4D53444F53352E30:厂商标志和dos版本号,这里是MSDOS5.0。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区的开始的地址就是:0x24*200(每个扇区的字节数)=0x4800。02(偏移地址10H,长度1):此卷中的FAT结构的份数为2,另外一个是备份的。C603(偏移地址24H,长度2):每个FAT占用的扇区数,转换一下,为03C6。那么每个扇区占用的字节数就是0x03C6*200=78C00。根据启动区、FAT1、FAT2、根目录、数据区的次序,可以依次计算出它们的地址。通过以上分析我们知道了启动区地址是0x00。FAT1表的起始地址的为0x4800,如图3-4所示。FAT2表的起始地址为0x4800+0x78C00=0x7D400,如图3-5所示。根目录区的起始地址为0x7D400+0x78C00=0xF6000,如图3-6所示。图3-4FAT1的起始地址图3-5FAT2的起始地址图3-6根目录的起始地址从SD卡中读取数据需要给出数据的地址,而且每次读取都是一个整扇区,512个字节。找出这些地址后,可以很方便的找到数据。由此可见读取0扇区的内容,我们就知道FAT文件系统的重要参数了,现在分析下根目录区的内容。根据前面得到的根目录地址0xF6000,通过软件查看它的内容如图3-7所示。这里使用的是FAT32短文件目录项,每32个字节表示一个文件(文件夹也是)。具体含义分别如下。图3-7根目录中的数据5A53444C20202020:驱动器的名称,8个字节。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(根目录区地址)+(03-2)*08*0x200=0xF7000(第一个簇开始地址)这里03减去的02的意思是因为簇号都是从2开始的。第二个簇号存放在0x4800+03*04(因为四个字节存一个簇号)=0x480C中,通过图3-8可知0x480C里面的内容是:04000000,即第二簇号为04。此时第二个簇的地址:0xF6000+(04-2)*08*0x200=0xF8000。依次查看FAT1表可知第三个簇号为05,地址:0xF6000+(05-2)*08*0x200=0xF9000。继续看看下一个簇号:内容为0x0FFFFFFF,说明文件放置结束。图3-8FAT1表中的内容通过以上分析可以得到该文件数据存放的起始地址了:0xF7000(第一个簇开始地址)﹑0xF8000(第二个簇开始地址)﹑0xF9000(第三个簇开始地址),他们在文件系统中存储的数据分别如图图3-9﹑图3-10﹑图3-11所示。由此就可以获得该文件的数据了。图3-9簇中的数据1图3-10簇中的数据2图3-11簇中的数据3四、系统软件设计4.1软件设计总流程本系统在软件设计上主要包括2部分:底层驱动的设计和各功能模块的设计。软件设计平台使用RealViewMDK[13]。各个功能的选择菜单仿照手机九空格的操作界面,实现多各个功能之间的选择与切换,系统软件设计的总体流程图4-1所示。图4-1系统软件总流程4.2底层驱动程序设计4.2.1TFT显示驱动程序设计本设计所使用的TFT使用ILI9320作为显示驱动芯片,数据的读写方式由模块硬件设置为16位数据模式。要完成TFT的显示功能主要依靠2个操作:写显示缓存GRAM(显示的颜色数值)和写寄存器操作(TFT所有的设置操作)。1.写显示缓存写显示缓存GRAM的操作比较简单,只需要写入颜色的数值即可,它的操作时序如图4-2所示。16位数据线采用565模式读写数据,其数据的映射关系如图4-3所示。最低5位代表蓝色,中间6位为绿色,高5位是红色,数值越大表示颜色越深。图4-2写显示缓存操作时序图4-316位数据映射图2.写寄存器写寄存器操作是实现TFT显示功能的核心,它的操作时序如图4-4所示。先写入寄存器号码,再写入对应的操作数据,即完成了一次相关命令操作,本设计驱动所示用的命令如表4-1所列。各编号的具体含义如下。图4-4写寄存器操作时序表4-1ILI9320常用命令表R0:这个命令有两个功能,当对其写时,最低位为OSC,用于开启或关闭振荡器,当对其读时,则返回控制器型号。R3:入口模式命令,其中I/D0﹑I/D1﹑AM这三位控制屏幕显示方向。当更新了一个数据之后,根据I/D[1:0]这两位的设置来控制地址计数器自动加/减1。AM用来控制GRAM的更新方向:当AM=0时,地址以行方向更新;当AM=1,地址以列方向更新,其关系如图4-5所示。图4-5GRAM显示方向设置图R7:显示控制命令。CL=1时,为8位色;CL=0时,为26万色。D0﹑D1﹑BASEE控制显示器开关“当全设为1时,显示器开启;全为0时,显示器关闭。R32、R33:分别设置GRAM的行地址和列地址。当写入一个颜色时,先通过这两个命令设置位置,然后写入颜色数据。R34:写数据到GRAM命令,当写入这个命令后,地址计数器才会增加或减少。R80~R83:GRAM地址行列大小设置。3.ILI9320初始化TFT要实现显示功能需要先对ILI9320初始化,具体步骤如图4-6所示。完成初始化之后,就可以通过写显示缓存和写寄存器实现TFT的显示。图4-6TFT显示初始化4.2.2ADS7846触摸驱动设计1.ADS7846控制字及数据传送方式ADS7846的控制字由表4-2所列,其中S为数据传输起始标志位,该位必为“1”,A2~A0进行通道选择。MODE用来选择A/D转换的精度,“1”选择8位,“0”选择12位。SER/DFR选择参考电压的输入模式。PD1、PD0选择省电模式:“00”省电模式允许,在两次A/D转换之间掉电,且中断允许;“01”同“00”但不允许中断;“10”保留;“11”禁止省电模式。表4-2ADS7846控制字 Bit7(MSB) Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 S A2 A1 A0 MODE SER/DFR PD1 PD0ADS7846与STM32F之间通过SPI接口(STM32F引脚模拟SPI)相连,由STM32F启动3次SPI传送来完成转换,如图4-7所示。第一次SPI传送由STM32F向ADS7846发送控制字,包括起始位、通道选择、8/12位模式、差分/单端选择和掉电模式选择,接下来的两次SPI传送的则是STM32F读取ADS7846A/D转换的结果数据(12位时最后四位自动补0),到此完成触摸屏控制器和微控制器之间的一次通信。ADS7846还设置有触摸识别电路,当检测到触摸信号时,该电路输出一个低电平信号,称为PENIRQ#(笔中断),ADS7846通过这个信号向微控制器提出测量触点坐标的中断请求。图4-7ADS7846与STM32F间的SPI转换时序图2.程序实现流程以及注意事项触摸屏和微控制器之间的互动通过外部中断实现。在程序设计中重要功能块包括以下几个部分:ADS7846的初始化,包括初始化SPI寄存器、可编程定时器中断和笔中断;MCU外部中断的配置;LCD控制器的初始化配置:LCD驱动IC的一些初始化配置,一般由LCD的厂家提供;坐标定位子程序;以及LCD逐点显示子程序。程序设计中,需要注意触摸抖动和连击问题。可以采用延迟测量法来解决,测量完后再次延迟一段时间(连击延时300ms)后打开笔中断,可避免连击现象出现。ADS7846触摸驱动实现的流程如图4-8所示。图4-8ADS7846触摸驱动流程4.2.3VS1053驱动设计要让VS1053实现音乐播放功能,首先要实现写命令功能,然后通过写命令操作初始化VS1053。完成以上步骤之后,就可以送入音频数据,播放音乐了。1.VS1053写命令要控制VS1053首先要实现的就是写命令,这是控制是否成功的前提。VS1003B通信方式是一种同步串行接口方式(SPI从机模式),它要求SCLK信号必须由外部电路产生,数据(SDATA)在SCLK的上升沿或下降沿时被写入。写命令的过程如下:(1)等待DREQ为高(当DREQ为低时,说明芯片还没有就绪);(2)将XCS(命令片选)拉低;(3)写入0x02;(4)写入寄存器地址;(5)分别写入数据的高字节与低字节;(6)将XCS置高。2.VS1053初始化如其它芯片一样,初始化对于VS1053来说同样是极其重要的。初始化的过程大致是这样的:(1)硬件复位:接XRESET拉低;(2)延时,将XDCS、XCS、XRESET置高;(3)向MODE中写入0X0804;(4)等待DREQ为高;(5)设置VS1053的时钟:SCI_CLOCKF=0x9800,3倍频;(6)设置VS1053的采样率:SPI_AUDATA=0xbb81,采样率48kHz,立体声;(7)设置重音:SPI_BASS=0x0055;(8)设置音量:SCI_VOL=0x2020;(9)向VS1053发送4个字节的无效数据,用以启动SPI发送。3.VS1053对音频文件的处理在完成VS1053初始化之后就可以对其写入MP3文件数据了。主要就是看DREQ信号,在VS1053的FIFO能够接受数据的时候输出高电平。每次可以写入32个字节的数据。而DREQ变低时,单片机就要停止数据的发送。写数据的具体的方法如下:(1)将XDCS拉低;(2)等待DREQ为高;(3)通过SPI写入数据;(4)在文件没有结束前不断重复2与3操作;(5)在所有的数据都发送完后,再发送2048无效字节以清除VS1003B的数据缓冲区;(6)将XDCS置高。4.2.4SD卡读取驱动SD卡[12](SecureDigitalMemoryCard)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。SD卡内部结构及引脚如图4-9所示。SD卡引脚功能如表4-3所列,各引脚的具体含义如下。CLK:时钟信号,每个时钟周期传输一个命令或数据位,频率可在0~25MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生0~25MHz的频率。图4-9SD卡引脚及内部结构表4-3SD卡引脚功能表 针脚 1 2 3 4 5 6 7 8 9 SPI模式 CS MOSI VSS VCC CLK VSS MISO NC NCCMD:双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡。DAT0~3:数据线,数据可以从卡传向主机也可以从主机传向卡。VCC和VSS:电源和地。SPI模式下,SD卡的几个重要操作命令如表4-4所列。其中,R1回应的数据格式如表4-5所列。表4-4SPI模式下SD卡部分操作指令 命令 参数 回应 描述 CMD0(0X00) NONE R1 复位SD卡 CMD9(0X09) NONE R1 读取卡特定数据寄存器 CMD10(0X0A) NONE R1 读取卡标志数据寄存器 CMD16(0X10) 块大小 R1 设置块大小(字节数) CMD17(0X11) 地址 R1 读取一个块的数据 CMD24(0X18) 地址 R1 写入一个块的数据 CMD41(0X29) NONE R1 引用命令的前命令 CMD55(0X37) NONE R1 开始卡的初始化 CMD59(0X3B) 仅最后以为有效 R1 设置CRC开启(1)或关闭(0)表4-5SD卡R1回应格式 SD卡R1回应格式 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 0 参数错误 地址错误 连续擦除错误 命令CRC错误 非法命令 擦除复位 IDLE状态SD卡典型的初始化过程如下:(1)初始化与SD卡连接的硬件条件(MCU的SPI配置,IO口配置);(2)上电延时(>74个CLK);(3)复位卡(CMD0);(4)激活卡,内部初始化并获取卡类型(CMD1(用于MMC卡)、CMD55、CMD41);(5)查询OCR,获取供电状况(CMD58);(6)是否使用CRC(CMD59);(7)设置读写块数据长度(CMD16);(8)读取CSD,获取存储卡的其他信息(CMD9);(9)发送8CLK后,禁止片选.在SD卡初始化完成后,就可以读SD卡读写数据。SD卡读取数据通过CMD17完成,具体步骤如下:(1)发送CMD17;(2)接收卡响应R1;(3)接收数据起始令牌0XFE;(4)接收数据;(5)接收2个字节的CRC,如果没有开启CRC,这两个字节在读取后可以丢掉;(6)8CLK之后禁止片选;SD卡写数据通过CMD24完成,具体步骤如下:(1)发送CMD24;(2)接收卡响应R1;(3)发送写数据起始令牌0XFE;(4)发送数据;(5)发送2字节的伪CRC;(6)8CLK之后禁止片选。4.3功能模块的设计4.3.1音乐播放功能的设计要实现音乐播放功能,需要获得相应的音乐文件数据,根据FAT文件的存储格式并结合SD卡读取驱动,得到相应的文件数据,每次读取512个字节。当VS1053已经初始化完成并等待接收数据(DREQ引脚为高电平)时,将读到的数据以每次32字节的速度送入VS1053的RAM中,VS1053会自动去处理这些数据并得到模拟音频信号。在每次读取新的音频文件时,采用文件名比较(只比较前3个字节)的方法查找存在SD卡中的歌词文件,如果存在歌词文件,就将文件数据全部复制到RAM中(超过6144个字节的部分将丢弃),同时初始化30ms中断的定时器用于歌词显示的刷新操作。音乐播放功能实现的具体流程如图4-10所示。4.3.2USB读卡器STM32F103ZET6内置1个USB2.0全速接口,可以实现USB读卡器的功能。该功能的实现需要2个部分:USB传输部分和SD卡读写部分。根据ST官网提供的例程,USB读卡器用到2个函数:一个是MSD_WriteBuffer函数,用于向SD卡写入数据,当你要COPY文件到SD卡的时候,就是由这个函数完成的;另一个是MSD_ReadBuffer函数,该函数用于读取SD卡上面的数据。下载ST官网的例程,移植到本设计中即可实现USB读卡器功能。4.3.3触摸画板触摸画板功能的实现完全依靠TFT显示与触摸驱动的支持。其基本原理是利用ADS7846获取触摸坐标,并根据坐标在TFT上完成画点工作。触摸画板的设计流程如图4-11所示。图4-10音乐播放功能的实现流程图4-11触摸画板程序设计流程五、系统调试与分析5.1硬件调试在硬件调试过程中碰到2个问题:1.TFT在实现过程中出现花屏现象。经过检查发现TFT电源端的储能电容离电源引脚较远,不能够稳定TFT电压。在靠近TFT电源引脚与地之间加上10μf的钽电容即可正常工作。2.VS1053在播放音乐时会出现忽快忽慢的现象,不能稳定的工作。经检查发现这种问题是由于芯片的工作时钟不稳定造成的。为了减少输入晶振2端的阻抗,在其引脚2端并上1M电阻,最终VS1053得以正常工作。如图5-1所示。图5-1音乐播放功能界面图片5.2软件调试在软件调试时,采用分步渐进的测试方法。首先完成TFT显示﹑串口﹑ADS7846触摸﹑SPI﹑I2C﹑RTC时钟等驱动程序的调试,然后调试文件系统的读写﹑VS1053的读写,最后根据系统所需移植游戏、USB等功能。系统用到了多个中断,在设计过程中遇到过中断嵌套而无法退出的问题,因而需要设定中断优先级,其中触摸屏引脚中断优先级最高。5.2.1软件设计打开MP3播放器工程,可以看到我们在工程中新建了一个组APP,下面加入了mp3解码文件mp3player.c以及头文件mp3player.h。同时我们还在HARDWARE组中加入了文件VS10XX.c,以及头文件VS10XX.h和flac.h。首先打开VS10XX.c,里面的代码我们不一一贴出了,这里挑几个重要的函数其代码如下:5.2.2下载验证在代码编译成功之后,我们下载代码到ALIENTEK战舰STM32开发板上,程序先执行字库监测,然后对VS1053进行RAM测试和正弦测试。当检测到SD卡根目录的MUSIC文件夹有有效音频文件(VS1053所支持的格式)的时候,就开始自动播放歌曲了,如图5-2所示:图5-2MP3播放中从上图可以看出,当前正在播放第4首歌曲,总共4首歌曲,歌曲名、播放时间、总时长、码率、音量等信息等也都有显示。此时DS0会随着音乐的播放而闪烁,2秒闪烁一次。只要我们在开发板的PHONE端子插入耳机,就能听到歌曲的声音了。同时,我们可以通过按KEY0和KEY2来切换下一曲和上一曲,通过WK_UP按键来控制音量增加,通过KEY1控制音量减小。本实验,我们还可以通过USMART来测试VS1053的其他功能,通过将VS10XX.c里面的部分函数加入USMART管理,我们可以很方便的设置/获取VS1053各种参数,达到验证测试的目的。有兴趣的朋友,可以实验测试一下。至此,我们就完成了一个简单的MP3播放器了,在此基础上进一步完善,就可以做出一个比较实用的MP3了。大家可以自己发挥想象,做出一个你心仪的MP3。六、结束语本设计采用STM32F103ZET6与VS1053结合的 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ,在实现了基本的MP3播放器的基础上,又增加了游戏﹑万年历﹑USB读卡器﹑图片浏览﹑电子书等功能。STM32F103ZET6丰富的外设让硬件电路的设计更加的简单,同时节约了设计成本。VS1053提供优秀的音乐流处理能力,能够保障高品质的音质。在显示控制方面,本设计采用当前流行的TFT触摸彩屏,让MP3播放器在控制上更加智能,在显示上更加多彩﹑立体。当然,每款设计都有它的不足之处,本设计在硬件设计上不够小巧美观,没有增加移动电池,在便携式功能上有所欠缺。在软件方面没有加入操作系统,各个功能模块的处理上不够流畅。参考文献[1]AMS1117技术手册[EB/OL].http://www.dzsc.com/ic/pdf.html?keyword=AMS1117,2010-7-21.[2]STM32F103增强型系列数据手册[EB/OL].http://www.mcudata.com/Webmaster/STMdanpianji/2009/0513/1405.html,2009-05-13/2011-03-01.[3]王永红,徐炜,郝立平.STM32系列ARMCortex™-M3微控制器原理与实践[M].北京:北京航天航空大学出版社,2008.[4]ILI9320手册[EB/OL].http://www.docin.com/p-48395099.html,2011-2-15.[5]VS1053-MP3/WMA音频解码器[EB/OL].http://space.ednchina.com/upload/2008/8/4/06b05c74-854c-43f2-aa19-3fbd8de56797.pdf,2008-08-04.[6]张涛,左谨平,马华玲.FatFs在32位微控制器STM32上的移植[J].电子技术,2010,(03).[7]SD卡 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 [EB/OL]http://wenku.baidu.com/view/580d7bec102de2bd9605883d.html,2010-05-05.STM32F103ZET6微处理器74HC4052音频选择RDA5820VS1053音频解码耳机接口TFT触摸液晶电源模块USB接口SD卡系统上电检测系统硬件及文件加载功能选择菜单USB读卡器音乐播放触摸画板加载SD卡中当前目录下的音频文件和目录选择加载进入歌词显示函数bt30MS选择文件YY加载MP3播放器界面初始化定时器清标志位bt30MS初始化VS1053读取存放在RAM中的歌词数据读取音频文件送入VS1053解码时间同步否存在歌词则显示下一个足数据是文件是否读取完文件编号加1显示读取的歌词触摸中断,键值选择返回退出返回系统选择菜单音量调节、设置VS1053音效寄存器上/下一首文件编号加/减//软复位VS10XXvoidVS_Soft_Reset(void){u8retry=0;while(VS_DQ==0);//等待软件复位结束VS_SPI_ReadWriteByte(0Xff);//启动传输retry=0;while(VS_RD_Reg(SPI_MODE)!=0x0800)//软件复位,新模式{VS_WR_Cmd(SPI_MODE,0x0804);//软件复位,新模式delay_ms(2);//等待至少1.35msif(retry++>100)break;}while(VS_DQ==0);//等待软件复位结束retry=0;while(VS_RD_Reg(SPI_CLOCKF)!=0X9800)//设置VS10XX的时钟,3倍频,1.5xADD{VS_WR_Cmd(SPI_CLOCKF,0X9800);//设置VS10XX的时钟,3倍频,1.5xADDif(retry++>100)break;}delay_ms(20);}最新范本,供参考!最新范本,供参考!最新范本,供参考!_1234567890.unknown_1234567891.unknown_1234567892.unknown_1234567893.unknown_1234567894.unknown_1234567895.vsd�系统上电延时10ms相关寄存器设置1设置背光相关寄存器设置2显示设置开始显示_1234567896.vsd��MCU外部中断配置ADS7846及TFT显示驱动初始化MC�循环,等待触摸中断取得触摸点(X,Y)取得TFT坐标MCU关中断在TFT上的对应位置显示是延时去抖坐标转换_1234567897.vsd��进入触摸画板某快加载画板界面触摸获取键值退出清屏画点加载颜色框按键按下获取键值获取坐标对应的颜色色框内色框外
本文档为【基于STM32的MP3播放器设计论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
爱赢
公司经营范围:网络软件设计、制作、图文设计、影视制作(编辑)
格式:doc
大小:10MB
软件:Word
页数:0
分类:工学
上传时间:2020-05-21
浏览量:13