




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
昆明理工大学津桥学院ARM实作课程报告实作设计题目: MP3音乐播放器 专业: 电子信息科学与技术 年级: 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 -1.1 选题背景与现状- 5 -1.2 设计思路与结构- 5 -二、系统概述与硬件电路设计- 5 -2.1 系统的总体构架- 5 -2.2 电源模块- 6 -2.3 微控制器模块- 7 - 2.3.1 STM32F103ZET6微控制器- 7 - 2.3.2 RDA5820 简介- 9 - 2.3.3.硬件设计- 10 -2.4 带触摸功能的TFT液晶显示模块- 11 -2.5 VS1053音频模块- 12 - 2.5.1 VS1053概述- 13 - 2.5.2 VS1053B解码电路设计- 16 -三、FAT文件系统- 17 -3.1 FAT文件系统简介- 17 -3.2 FAT文件系统的读取操作- 18 -四、 系统软件设计- 21 -4.1 软件设计总流程- 21 -4.2 底层驱动程序设计- 21 - 4.2.1 TFT显示驱动程序设计- 21 - 4.2.2 ADS7846触摸驱动设计- 23 - 4.2.3 VS1053驱动设计- 24 - 4.2.4 SD卡读取驱动- 25 -4.3 功能模块的设计- 27 - 4.3.1 音乐播放功能的设计- 27 - 4.3.2 USB读卡器- 27 - 4.3.3 触摸画板- 27 -五、系统调试与分析- 29 -5.1 硬件调试- 29 -5.2 软件调试- 30 - 5.2.1 软件设计- 30 - 5.2.2 下载验证- 31 -六、 结束语- 32 -参考文献- 32 -ABSTRACT Is 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 VS1053, SD card, LCD and other peripherals design and implementation of MP3 players. Its main functions are: Play VS1053 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; STM32F103RBT6; VS1053;FAT摘 要随着生活水平的提高,人们对消费电子的需求也越来越高。多功能的MP3播放器也受到越来越多人的青睐。电子技术快的速发展和消费者的爱好需求,MP3的功能也越来越多,它与PDA、手机一样,都向多功能方面发展,尽可能吸收其它产品的功能,以便增加产品卖点。系统采用ARM Cortex-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所示。STM32F103ZET6微处理器 74HC4052 音频选择RDA5820VS1053音频解码耳机接口TFT触摸液晶电源模块USB接口SD卡图2-1 MP3播放器系统框图硬件模块主要包括电源模块微处理器模块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.1 STM32F103ZET6微控制器本设计中的微控制器采用意法半导体公司出产的STM32F103ZET6芯片,STM32F103ZET6基于ARM Cortex-M3 CPU内核设计5,片上集成有丰富的数字和模拟资源,允许最高72 MHz的工作频率,是一款性价比很高的32位ARM处理器,是低成本ARM嵌入式应用的极佳选择。其引脚分布如图2-3所示。图2-3 STM32F103ZET6引脚图STM32F103ZET6模块接口电路如图2-4所示。图中,P7为插针,用于选择系统的启动模式:当BOOT0=1时用户闪存存储器被选为启动区域,此时可以通过串口下载程序;当BOOT0=0时,系统存储器被选为启动区域。电容C52至C622为STM32F103ZET6电源引脚的旁路电容,能够起到稳定电源的作用,在PCB布板时应尽量靠近MCU。Y4为8MHz晶振,为STM32F103ZET6提供工作时钟,在设计时也要靠近MCU,避免干扰。为了PCB布线的方便,本设计中的 PC52PC62引脚模拟VS1053的SPI接口。STM32F103ZET6微控制器各引脚的接口描述如表2-1所列。图2-4 STM32F103ZET6 模块电路表2-1 STM32F103ZET6引脚接口分布表STM引脚编号连接器件备注3,432.678kHz晶振Y1RTC时钟晶振5,68MHz晶振Y2系统时钟PA0PA7 ,PC0PC7触摸液晶模块接口JP1液晶16位数据口PB12PB15SD卡 U2STM32的SPI接口PC10PC12VS1003的SPI接口 U3采用STM32模拟SPI接口PA14,PA15,PD2,PB3VS1033控制接口 U3PB5PB9触摸液晶模块接口JP1液晶控制接口PB0PB2,PB10,PB11触摸液晶模块接口JP1触摸控制接口PA11,PA12USB接口PA1318B20数据口 J4PC8,PC924C02接口 U52.3.2 RDA5820 简介 RDA5820 是北京锐迪科推出的一款集成度非常高的立体声 FM 收发芯片。该芯片具有以下特点:l1)FM 发射和接收一体2)支持 65Mhz115Mhz 的全球 FM 接收频段,收发天线共用。3)支持 IIC/SPI 接口4)支持 32.768K 晶振5)数字音量及自动 AGC 控制6)支持立体声/单声道切换,带软件静音功能7)支持 I2S 接口(输入/输出)8)内置 LDO,使用电压范围宽(2.75.5V)9)高功率 32 欧负载音频输出、可直接驱动耳机l10)集成度高、功耗低、尺寸小(4mm*4mm QFN 封装)、应用简单 RDA5820 应用范围很宽,在很多手机、MP3、MP4 甚至平板电脑上都有应用。RDA5820的引脚图如图2-5所示:图 2-5 RDA5820 引脚图 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_FUNC3:0位来设置,RDA5820 可以工作在 RX 模式、TX 模式、PA 模式和 DAC 模式等,本章我们只介绍 RX 模式和 TX 模式。 通过设置 CHIP_FUNC3:0=0 即可定义当前工作模式为 FM 接收模式。在该模式下,我们即可实现 FM 收音机功能。 通过设置 CHIP_FUNC3:0=1 即可定义当前工作模式为 FM 发送模式。在该模式下,我们即可实现 FM 电台的功能。 频点设置 软件可以通过配置 03H(寄存器地址 0X30)寄存器来选择 FM 频道。搜台(Seek)的步进长度(100KHz、200KHz 或 50KHz)由 SPACE1:0 来选择,频道由 CHAN9:0来选择,频率范围(76MHz91MHz、87MHz108MHz 或 76MHz108MHz 或用户自定义 65MHz115MHz 范围内频段)由 BAND1:0来选择。自定义的频段由寄存器 53H(chan_bottom)和 54H(chan_top)来设置,单位为 100KHz,即定义 65MHz76MHz,可设置 BAND1: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),它的显示驱动采用ILI93208,其特征如下: 320240分辨率。 供电电压2.53.3V。 16位数据接口。 高的对比、高亮度、低功耗。 4-wires模拟电阻式触摸屏。当触摸屏被按下时会得到模拟的电压值,因此要将该值转换成坐标就需要一个A/D控制器。这种触摸屏的A/D控制芯片有很多,本系统触摸控制芯片采用TI公司的ADS78469低压I/O触摸屏控制器。其芯片引脚图见图2-7所示,各个引脚的功能如表2-2所列。图2-7 ADS7846引脚图表2-2 ADS7846芯片引脚说明引脚号引脚名称引脚说明1+VCC电源 (2.2V5.25V)2X+X+位置输入3Y+Y+位置输入4X-X-位置输入5Y-Y-位置输入6GND地7VBAT电池监控器输入8AUXADC辅助输入9VREF基准电压输入输出(2.5V)10+VCC数字 I/O 电源 (2.2V5.25V)11笔断控制脚12DOUT连续数据输出,数据在DCLK下降沿转换,为高电平时输出高阻抗13BUSYBUSY 输出,为高电平时输出高阻抗14DIN连续数据输入,数据在DCLK上升沿保持15芯片选择输入,控制转换时间,控制连续数据输入输出寄存器。为高电平时等同于掉电模式,仅仅对ADC有效16DCLK外部时钟输入端。时钟驱动SAR转换器,并与连续输入输出同步带触摸功能的TFT液晶显示模块电路如图2-8所示。图中,三极管Q1用来控制TFT背光,DB0DB15是显示驱动ILI9320的数据线,JP1为引脚插针,便于和微控制器模块连接。图2-8 带触摸功能的TFT液晶显示模块电路2.5 VS1053音频模块虽然STM32F103ZET6具有最高72MHz的频率,但它没有独立的DSP音效处理能力,如果直接用它来进行音频数据处理,很难实现优质的音频输出,同时考虑到自己的能力和精力有限,因而本系统的音频解码部分则另采用一款简单实用的音效处理芯片VS1053来完成。本模块涉及到模拟信号与数字信号,在设计时要考虑信号的隔离措施,模拟信号与数字信号的连接处需串联磁珠或0欧电阻以避免信号干扰。2.5.1 VS1053概述 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)/IMA ADPCM编码高低音控制带有EarSpeaer空间效果(用耳机虚拟现场空间效果)单时钟操作12.13MHz内部PLL锁相环时钟倍频器低功耗内含高性能片上立体声DAC,两声道间无相位差过零交差侦测和平滑的音量调整内含能驱动30 欧负载的耳机驱动器模拟,数字,I/O 单独供电为用户代码和数据准备的16KB片上RAM可扩展外部DAC的I2S接口用于控制和数据的串行接口(SPI)可被用作微处理器的从机特殊应用的SPI Flash引导供调试用途的UART接口新功能可以通过软件和8 GPIO 添加 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-9 ALIENTEK 音频解码模块原理图 VS1053通过7根线同STM32连接,他们是:VS_MISO、VS_MOSI、VS_SCK、VS_XCS、VS_XDCS、VS_DREQ和VS_RST。这7根线同STM32的连接关系如表2-3所示:表2-3 VS1053各信号线与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-4 VS1053新模式下SPI口信号线功能 VS1053的SPI数据传送,分为SDI和SCI,分别用来传输数据/命令。SDI和前面介绍的SPI协议一样的,不过VS1053的数据传输是通过DREQ控制的,主机在判断DREQ有效(高电平)之后,直接发送即可(一次可以发送32个字节)。 这里我们重点介绍一下SCI。SCI串行总线命令接口包含了一个指令字节、一个地址字节和一个16位的数据字。读写操作可以读写单个寄存器,在SCK的上升沿读出数据位,所以主机必须在下降沿刷新数据。SCI的字节数据总是高位在前低位在后的。第一个字节指令字节,只有2个指令,也就是读和写,读为0X03,写为0X02。一个典型的SCI读时序如图2-10所示:图2-10 SCI读时序 从图49.1.2可以看出,向VS1053读取数据,通过先拉低XCS(VS_XCS),然后发送读指令(0X03),再发送一个地址,最后,我们在SO线(VS_MISO)上就可以读到输出的数据了。而同时SI(VS_MOSI)上的数据将被忽略。看完了SCI的读,我们再来看看SCI的写时序,如图2-11所示:图2-11 SCI写时序 图2-11中,其时序和图2-10基本类似,都是先发指令,再发地址。不过写时序中,我们的指令是写指令(0X02),并且数据是通过SI写入VS1053的, SO则一直维持低电平。细心的读者可能发现了,在这两个图中,DREQ信号上都产生了一个短暂的低脉冲,也就是执行时间。这个不难理解,我们在写入和读出VS1053的数据之后,它需要一些时间来处理内部的事情,这段时间,是不允许外部打断的,所以,我们在SCI操作之前,最好判断一下DREQ是否为高电平,如果不是,则等待DREQ变为高。 VS1053总共有16个SCI寄存器,这里我们不介绍全部的寄存器,仅仅介绍几个我们在本章需要用到的寄存器。 首先是MODE寄存器,该寄存器用于控制VS1053的操作,是最关键的寄存器之一,该寄存器的复位值为0x0800,其实就是默认设置为新模式。表2-5是MODE寄存器的各位描述: 表2-5 MODE寄存器各位描述2.5.2 VS1053B解码电路设计在设计VS1053解码电路时,数字地与模拟地必须相互连接并尽量靠近VS1053以避免锁存上拉,为了能播放48KHz采样率的音频文件,输入时钟使用12.288MHz。具体设计电路如图2-12所示。VS1053通过MISOMOSISCK(SPI接口)来接收输入的MP3数据,经过VS1053内置的采样DAC转换为音频模拟量,最后通过LeftRight和Gbuf输出。图2-12 VS1053解码模块电路三、FAT文件系统3.1 FAT文件系统简介 FATFS 是一个完全免费开源的FAT 文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C 语言编写,所以具有良好的硬件平台独立性,可以移植到8051、PIC、AVR、SH、Z80、H8、ARM 等系列单片机上而只需做简单的修改。它支持FATl2、FATl6 和FAT32,支持多个存储媒介;有独立的缓冲区,可以对多个文件进行读写,并特别对8 位单片机和16 位单片机做了优化。 FATFS 的特点有:l Windows 兼容的FAT 文件系统(支持FAT12/FAT16/FAT32)l 与平台无关,移植简单l 代码量少、效率高l 多种配置选项 支持多卷(物理驱动器或分区,最多10 个卷) 多个 ANSI/OEM 代码页包括DBCS 支持长文件名、ANSI/OEM 或Unicode 支持 RTOS 支持多种扇区大小 只读、最小化的API 和I/O 缓冲区等 FATFS 的这些特点,加上免费、开源的原则,使得FATFS 应用非常广泛。FATFS 模块的层次结构如图3-1 所示:图 3-1 FATFS 层次结构图 最顶层是应用层,使用者无需理会FATFS 的内部结构和复杂的FAT 协议,只需要调用FATFS 模块提供给用户的一系列应用接口函数,如f_open,f_read,f_write 和f_close 等,就可以像在PC 上读写文件那样简单。 中间层FATFS 模块,实现了FAT 文件读写协议。FATFS 模块提供的是ff.c 和ff.h。除非有必要,使用者一般不用修改,使用时将头文件直接包含进去即可。 需要我们编写移植代码的是FATFS 模块提供的底层接口,它包括存储媒介读写接口(diskI/O)和供给文件创建修改时间的实时时钟。 FATFS 的源码,大家可以在:/fsw/ff/00index_e.html 这个网站下载到,目前最新版本为R0.09a。本章我们就使用最新版本的的FATFS 作为介绍,下载最新版本的FATFS软件包,解压后可以得到两个文件夹:doc 和src。doc 里面主要是对FATFS 的介绍,而src 里面才是我们需要的源码。 3.2 FAT文件系统的读取操作一般硬盘的数据结构是按图3-2而建立的。图3-2 FAT文件系统结构图启动区的内容,也就是第一个扇区,使用WinHex软件查看,如图3-3所示。其中,带下划线或点线部分为有用内容,具体含义依次如下。图3-3 FAT启动区EB 59 90:跳转指令。4D 53 44 4F 53 35 2E 30:厂商标志和dos版本号,这里是MSDOS5.0。00 20(偏移地址0BH,长度2):注意这里数据的布局,高地址放高字节,低地址放低字节(数据为小端格式组织),所以数据应该是0200,就是512。表示的意思是,该磁盘每个扇区有512个字节。有的可能是1024、2048、4096。08(偏移地址0DH,长度1):表示每个簇有8个扇区。这个值不能为0,而且必须是2的整数次方,比如1、2、4、8、16、32、64、128。但是这个值不能使每个簇超过32KB。24 00(偏移地址0EH,长度2):转换一下,就是0024,意思是保留区域中的保留扇区数为36个。那么就可以知道下面的FAT1区的开始的地址就是:0x24*200(每个扇区的字节数)=0x4800。02(偏移地址10H,长度1):此卷中的FAT结构的份数为2,另外一个是备份的。C6 03(偏移地址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-4 FAT1的起始地址图3-5 FAT2的起始地址图3-6 根目录的起始地址从SD卡中读取数据需要给出数据的地址,而且每次读取都是一个整扇区,512个字节。找出这些地址后,可以很方便的找到数据。由此可见读取0扇区的内容,我们就知道FAT文件系统的重要参数了,现在分析下根目录区的内容。根据前面得到的根目录地址0xF6000,通过软件查看它的内容如图3-7所示。这里使用的是FAT32短文件目录项,每32个字节表示一个文件(文件夹也是)。具体含义分别如下。图3-7 根目录中的数据5A 53 44 4C 20 20 20 20:驱动器的名称,8个字节。54 45 53 54 20 20 20 20(偏移地址20H,长度8):文件名TEST(空缺部分是空格)。54 58 54(偏移地址28H,长度3):文件类型,为ASCII字符表示。20(偏移地址2BH,长度1):文件属性,00000000(读写);00000001(只读);00000010(隐藏);00000100(系统);00001000(卷标);00010000(子目录);00100000(归档)。58 39 (偏移地址30H,长度2):文件创建时间。58 39 (偏移地址32H,长度2):文件最后访问日期。03 00 (偏移地址3AH,长度2):起始簇的簇号为03。77 2D 00 00(偏移地址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里面的内容是:04 00 00 00,即第二簇号为04。此时第二个簇的地址:0xF6000+(04-2)*08*0x200=0xF8000。依次查看FAT1表可知第三个簇号为05,地址:0xF6000+(05-2)*08*0x200=0xF9000。继续看看下一个簇号:内容为0x0FFFFFFF,说明文件放置结束。图3-8 FAT1表中的内容通过以上分析可以得到该文件数据存放的起始地址了:0xF7000(第一个簇开始地址)0xF8000(第二个簇开始地址)0xF9000(第三个簇开始地址),他们在文件系统中存储的数据分别如图图3-9图3-10图3-11所示。由此就可以获得该文件的数据了。图3-9 簇中的数据1图3-10 簇中的数据2图3-11 簇中的数据3四、 系统软件设计4.1 软件设计总流程本系统在软件设计上主要包括2部分:底层驱动的设计和各功能模块的设计。软件设计平台使用RealView MDK13。系统上电各个功能的选择菜单仿照手机九空格的操作界面,实现多各个功能之间的选择与切换,系统软件设计的总体流程图4-1所示。 检测系统硬件及文件加载功能选择菜单USB读卡器音乐播放触摸画板图4-1 系统软件总流程4.2 底层驱动程序设计4.2.1 TFT显示驱动程序设计本设计所使用的TFT使用ILI9320作为显示驱动芯片,数据的读写方式由模块硬件设置为16位数据模式。要完成TFT的显示功能主要依靠2个操作:写显示缓存GRAM(显示的颜色数值)和写寄存器操作(TFT所有的设置操作)。1. 写显示缓存写显示缓存GRAM的操作比较简单,只需要写入颜色的数值即可,它的操作时序如图4-2所示。16位数据线采用565模式读写数据,其数据的映射关系如图4-3所示。最低5位代表蓝色,中间6位为绿色,高5位是红色,数值越大表示颜色越深。图4-2 写显示缓存操作时序图4-3 16位数据映射图2. 写寄存器写寄存器操作是实现TFT显示功能的核心,它的操作时序如图4-4所示。先写入寄存器号码,再写入对应的操作数据,即完成了一次相关命令操作,本设计驱动所示用的命令如表4-1所列。各编号的具体含义如下。图4-4 写寄存器操作时序表4-1 ILI9320常用命令表R0:这个命令有两个功能,当对其写时,最低位为OSC,用于开启或关闭振荡器,当对其读时,则返回控制器型号。R3:入口模式命令,其中I/D0I/D1AM这三位控制屏幕显示方向。当更新了一个数据之后,根据I/D1:0这两位的设置来控制地址计数器自动加/减1。AM用来控制GRAM的更新方向:当AM=0时,地址以行方向更新;当AM=1,地址以列方向更新,其关系如图4-5所示。图4-5 GRAM显示方向设置图R7:显示控制命令。CL=1时,为8位色;CL=0时,为26万色。D0D1BASEE控制显示器开关“当全设为1时,显示器开启;全为0时,显示器关闭。R32、R33:分别设置GRAM的行地址和列地址。当写入一个颜色时,先通过这两个命令设置位置,然后写入颜色数据。R34:写数据到GRAM命令,当写入这个命令后,地址计数器才会增加或减少。R80R83:GRAM地址行列大小设置。3. ILI9320初始化TFT要实现显示功能需要先对ILI9320初始化,具体步骤如图4-6所示。完成初始化之后,就可以通过写显示缓存和写寄存器实现TFT的显示。图 4-6 TFT显示初始化4.2.2 ADS7846触摸驱动设计1. ADS7846控制字及数据传送方式ADS7846的控制字由表4-2所列,其中S为数据传输起始标志位,该位必为“1”,A2A0进行通道选择。MODE用来选择A/D转换的精度,“1”选择8位,“0”选择12位。SER/DFR选择参考电压的输入模式。PD1、PD0选择省电模式:“00”省电模式允许,在两次A/D转换之间掉电,且中断允许;“01”同“00”但不允许中断;“10”保留;“11”禁止省电模式。表4-2 ADS7846控制字Bit7(MSB)Bit6Bit5Bit4Bit3Bit2Bit1Bit0SA2A1A0MODESER/DFRPD1PD0ADS7846与STM32F之间通过SPI接口(STM32F引脚模拟SPI)相连,由STM32F启动3次SPI传送来完成转换,如图4-7所示。第一次SPI传送由STM32F向ADS7846发送控制字,包括起始位、通道选择、8/12位模式、差分/单端选择和掉电模式选择,接下来的两次SPI传送的则是STM32F读取ADS7846 A/D转换的结果数据(12位时最后四位自动补0),到此完成触摸屏控制器和微控制器之间的一次通信。ADS7846还设置有触摸识别电路,当检测到触摸信号时,该电路输出一个低电平信号,称为PENIRQ#(笔中断),ADS7846通过这个信号向微控制器提出测量触点坐标的中断请求。图4-7 ADS7846与STM32F间的SPI转换时序图2. 程序实现流程以及注意事项触摸屏和微控制器之间的互动通过外部中断实现。在程序设计中重要功能块包括以下几个部分:ADS7846的初始化,包括初始化SPI寄存器、可编程定时器中断和笔中断;MCU外部中断的配置;LCD控制器的初始化配置:LCD驱动IC的一些初始化配置,一般由LCD的厂家提供;坐标定位子程序;以及LCD逐点显示子程序。程序设计中,需要注意触摸抖动和连击问题。可以采用延迟测量法来解决,测量完后再次延迟一段时间(连击延时300ms)后打开笔中断,可避免连击现象出现。ADS7846触摸驱动实现的流程如图4-8所示。图4-8 ADS7846触摸驱动流程4.2.3 VS1053驱动设计要让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.4 SD卡读取驱动SD卡12(Secure Digital Memory Card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。SD卡内部结构及引脚如图4-9 所示。SD卡引脚功能如表4-3所列,各引脚的具体含义如下。CLK:时钟信号,每个时钟周期传输一个命令或数据位,频率可在025MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生025MHz的频率。图4-9 SD卡引脚及内部结构表4-3 SD卡引
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冬小麦氮素分配与茎秆维管束结构的相互关系研究
- 利用改进YOLOv8算法进行蜗杆表面缺陷检测的研究与实践
- 城市经济现象:微观视角下的宏观经济规律研究
- 消费品市场增长动力-洞察阐释
- 指南小学体育说课 课件
- 【年产1万吨橙汁浓缩汁的工厂布局及经济效益计算案例2000字】
- 有关心理健康国旗下讲话稿5
- 厦门初三数学考试题及答案
- 三管监测考试题库及答案
- 园艺保洁班长岗位说明书
- 完整市政工程分部分项划分
- 《市场调查》考试题库及答案(复习用)
- 比亚迪宋PLUS EV说明书
- 2020长沙市一中新高一入学分班考试试卷
- 2022年大连市庄河市社区工作者招聘考试试题
- 洗浴中心的物业管理方案
- 人教版七年级(初一)数学上册全册标准课讲义终稿(教师版)
- 盐酸安罗替尼三线治疗非小细胞肺癌(NSCLC)的疗效和安全性的III期临床试验
- 苏教版必修1《离子反应》优秀课件
- 复合树脂粘接修复术的基本操作步骤
- 二手车买卖合同电子版下载
评论
0/150
提交评论