版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 闽江学院本科毕业论文(设计)题 目 基于STM32F的MP3播放器设计 学生姓名 学 号 系 别 物理学与电子信息工程系 年 级 专 业 电子信息工程 指导教师 职 称 完成日期 2011-05-10 闽江学院毕业论文(设计)诚信声明书本人郑重声明:兹提交的毕业论文(设计)基于STM32F的MP3播放器设计 ,是本人在指导老师 薛小铃 的指导下独立研究、撰写的成果;论文(设计)未剽窃、抄袭他人的学术观点、思想和成果,未篡改研究数据,论文(设计)中所引用的文字、研究成果均已在论文(设计)中以明确的方式标明;在毕业论文(设计)工作过程中,本人恪守学术规范,遵守学校有关规定,依法享有和承担由此论文
2、(设计)产生的权利和责任。声明人(签名):年 月 日摘 要随着生活水平的提高,人们对消费电子的需求也越来越高。多功能的MP3播放器也受到越来越多人的青睐。电子技术快的速发展和消费者的爱好需求,MP3的功能也越来越多,它与PDA、 一样,都向多功能方面发展,尽可能吸收其它产品的功能,以便增加产品卖点。系统采用ARM Cortex-M3内核的STM32F103RBT6作为微控制器,结合VS1003B音频解码芯片,SD卡存储器,TFT液晶显示屏等外围设备,以及FAT文件操作,设计并实现了集音乐播放电子书阅读游戏触摸画板闹铃时钟USB读卡器等为一体的多功能MP3播放器。关键词:STM32F103RBT
3、6;VS1003B;SD卡;TFT液晶;MP3播放器;FATAbstractAlong with living standard enhancement, the people to expend electronic the demand to be also getting higher and higher. The multi-purpose MP3 players also receive more and more persons favors. With the fast developments electronic technology and consumers hobby
4、 demand, the MP3 has more features , it just like PDA or Mobile phone .In case to increasing the products selling point , its developing to the multi-purpose aspects and absorbing other products functions as far as possible. So this article is precisely focuses on the market demand, designs a multi-
5、purpose MP3 player with Music , e-book , reader, games, touch alarm ,clock, drawing board ,USB card reader and other functions. This system uses the STM32F103RBT6 of Cortex-M3 as microcontroller core and combining the VS1003B decoder chip, SD card, TFT LCD and the FAT file operations to achieve mult
6、i-functional MP3 player. Key words:STM32F103RBT6; VS1003B; SD card; TFT LCD; MP3 player;FAT目 录 TOC o 1-3 h z u HYPERLINK l _Toc292737913 1 前言 PAGEREF _Toc292737913 h 1 HYPERLINK l _Toc292737914 1.1 选题背景与现状 PAGEREF _Toc292737914 h 1 HYPERLINK l _Toc292737915 1.2 设计思路与结构 PAGEREF _Toc292737915 h 1 HYPE
7、RLINK l _Toc292737916 2 系统概述与硬件电路设计 PAGEREF _Toc292737916 h 3 HYPERLINK l _Toc292737917 2.1 系统的总体构架 PAGEREF _Toc292737917 h 3 HYPERLINK l _Toc292737918 2.2 电源模块 PAGEREF _Toc292737918 h 3 HYPERLINK l _Toc292737919 2.3 微控制器模块 PAGEREF _Toc292737919 h 4 HYPERLINK l _Toc292737920 2.4 带触摸功能的TFT液晶显示模块 PAGE
8、REF _Toc292737920 h 7 HYPERLINK l _Toc292737921 2.5 VS1003音频模块 PAGEREF _Toc292737921 h 9 HYPERLINK l _Toc292737922 3 FAT文件系统 PAGEREF _Toc292737922 h 12 HYPERLINK l _Toc292737923 3.1 FAT文件系统简介 PAGEREF _Toc292737923 h 12 HYPERLINK l _Toc292737924 3.2 FAT文件系统的读取操作 PAGEREF _Toc292737924 h 13 HYPERLINK l
9、 _Toc292737925 4 系统软件设计 PAGEREF _Toc292737925 h 18 HYPERLINK l _Toc292737926 4.1 软件设计总流程 PAGEREF _Toc292737926 h 18 HYPERLINK l _Toc292737927 4.2 底层驱动程序设计 PAGEREF _Toc292737927 h 18 HYPERLINK l _Toc292737928 4.2.1 TFT显示驱动程序设计 PAGEREF _Toc292737928 h 18 HYPERLINK l _Toc292737929 4.2.2 ADS7846触摸驱动设计 P
10、AGEREF _Toc292737929 h 21 HYPERLINK l _Toc292737930 4.2.3 VS1003驱动设计 PAGEREF _Toc292737930 h 23 HYPERLINK l _Toc292737931 4.2.4 SD卡读取驱动 PAGEREF _Toc292737931 h 24 HYPERLINK l _Toc292737932 4.2.5 RTC时钟驱动 PAGEREF _Toc292737932 h 26 HYPERLINK l _Toc292737933 4.3 功能模块的设计 PAGEREF _Toc292737933 h 27 HYPER
11、LINK l _Toc292737934 4.3.1 音乐播放功能的设计 PAGEREF _Toc292737934 h 27 HYPERLINK l _Toc292737935 4.3.2 电子书阅读与图片浏览功能设计 PAGEREF _Toc292737935 h 28 HYPERLINK l _Toc292737936 4.3.3 USB读卡器 PAGEREF _Toc292737936 h 29 HYPERLINK l _Toc292737937 4.3.4 触摸画板 PAGEREF _Toc292737937 h 29 HYPERLINK l _Toc292737938 4.3.5
12、时钟与闹铃功能 PAGEREF _Toc292737938 h 30 HYPERLINK l _Toc292737939 4.3.6 拼图游戏 PAGEREF _Toc292737939 h 31 HYPERLINK l _Toc292737940 5 系统调试与分析 PAGEREF _Toc292737940 h 32 HYPERLINK l _Toc292737941 5.1 硬件调试 PAGEREF _Toc292737941 h 32 HYPERLINK l _Toc292737942 5.2 软件调试 PAGEREF _Toc292737942 h 32 HYPERLINK l _T
13、oc292737943 6 结束语 PAGEREF _Toc292737943 h 33 HYPERLINK l _Toc292737944 参考文献 PAGEREF _Toc292737944 h 33 HYPERLINK l _Toc292737945 附 录 PAGEREF _Toc292737945 h 34 HYPERLINK l _Toc292737946 致 谢 PAGEREF _Toc292737946 h 34基于STM32F的MP3播放器设计1 前言1.1 选题背景与现状二十一世纪的第一个十年过去了,随着电子技术的高速发展和嵌入式系统的应用,越来越多的电子产品进入人们的视野
14、。面对多形式、多渠道的信息,人们对信息的整合运用与随时调整的要求越来越高,消费电子无疑将潜移默化地改变人们的生活。目前,消费电子产业每年都持续增长,所涉及的产品领域和行业也越来越多。丰富的电子产品正从各个角度向消费者展示着“数字生活”的新概念,给人们带来了耳目一新的全面享受。 自从1998年世界上第一台MP3播放器1推出以来。 HYPERLINK :/ ocn /reports/2008469mp3bofangqi.htm t _blank MP3播放器市场以极快的速度发展,MP3的功能也越来越多。国产品牌的MP3播放器也进入市场当中,以纽曼、蓝魔、魅族等企业为代表的MP3播放器企业占据了国内
15、MP3播放器市场主要份额。现阶段的播放器在保障高品质的前提下,尽可能吸收其它产品的功能,以便增加产品卖点。1.2 设计思路与结构现阶段MP3播放器技术已经很成熟,但对于缺少实践经验的我们还是有许多吸引力。抱着学习的态度,同时结合大学四年所学的专业知识,设计并制作了一款多功能的MP3播放器。本设计采用STM32F103RBT6作为微控制器、VS1003B音频作为解码模块、SD卡作为文件存储模块、触摸TFT作为控制终端。以下为主要实现的功能:MP3/WMA/MIDI文件播放功能图片浏览功能电子书阅读USB读卡器触摸画板温度/时间显示闹铃功能游戏功能本文主要分为三个模块介绍说明了设计的理论与实现:硬
16、件电路模块分析各个模块的原理以及电路的设计。文件系统模块详细说明了本设计中使用的FAT文件系统的原理及相关操作方法。系统软件模块相关的驱动设计及各个功能实现的软件分析。2 系统概述与硬件电路设计2.1 系统的总体构架MP3播放器其实就是一个功能特定的小型电脑。在MP3播放器小小的机身里,拥有MP3播放器存储器( HYPERLINK :/baike.baidu /view/1254338.htm t _blank 存储卡)、MP3播放器显示器( HYPERLINK :/baike.baidu /view/18558.htm t _blank LCD显示屏)、MP3播放器中央处理器 HYPERLI
17、NK :/baike.baidu /view/100928.htm t _blank MCU(微控制器)或MP3播放器解码DSP(数字信号处理器)等。本设计采用STM32F103RBT6读取SD卡中的MP3音乐文件,并将数据送入VS1003B进行音频解码,得到模拟的音乐流,从而实现MP3的音乐播放功能。同时结合TFT触摸屏、DS18B20温度传感器、24C02存储器、STM32F等外围接口设备2,内嵌了游戏、电子书、闹铃时钟、图片浏览、USB读卡器等功能。其系统框图如图2-1所示。STM32F103RBT6 STM32F103RBT6 微处理器DS18B20温度传感器24C02VS1003B音
18、频解码耳机接口TFT触摸液晶电源模块USB接口SD卡图2-1 MP3播放器系统框图硬件模块主要包括电源模块微处理器模块VS1003B音频解码模块TFT触摸液晶模块。电源模块提供3.3V和2.5V的直流稳压电源。STM32F微处理器模块主要提供SD卡接口,TFT触摸液晶接口,DS18B20接口,24C02接口以及VS1003B接口。VS1003B音频解码模块主要获取STM32F103RBT6传入的音频文件信息与控制信息,同时输出音频信号。TFT触摸液晶模块实现TFT的显示和触摸屏的控制。2.2 电源模块电源是电子设备中必不可少的一部分,它为设备提供了能量。电源模块电路如图2-2所示。USB或5V
19、电源适配器经过AMS1117-3.3和AMS1117-2.5产生3.3V和2.5V的直流电源供系统使用。C2可以防止电感效应而产生的自激,C6用来减小由于负载电流瞬时变化而引起的高频干扰,C5用来进一步减小输出脉动和低频干扰,使电源输出更加稳定。D1为电源指示灯。图2-2 电源模块电路2.3 微控制器模块1. STM32F103RBT6微控制器本设计中的微控制器采用意法半导体公司出产的STM32F103RBT64芯片,STM32F103RBT6基于ARM Cortex-M3内核设计5,片上集成有丰富的数字和模拟资源,允许最高72 MHz的工作频率,是一款性价比很高的32位ARM处理器,是低成本
20、ARM嵌入式应用的极佳选择。其引脚分布如图2-3所示。图2-3 STM32F103RBT6引脚图STM32F103RBT6模块接口电路如图2-4所示。图中,J3为插针,用于选择系统的启动模式:当BOOT0=1时用户闪存存储器被选为启动区域,此时可以通过串口下载程序;当BOOT0=0时,系统存储器被选为启动区域。电容C17至C22为STM32F103RBT6电源引脚的旁路电容,能够起到稳定电源的作用,在PCB布板时应尽量靠近MCU。Y2为8MHz晶振,为STM32F103RBT6提供工作时钟,在设计时也要靠近MCU,避免干扰。为了PCB布线的方便,本设计中的 PC10PC12引脚模拟VS1003
21、的SPI接口。STM32F103RBT6微控制器各引脚的接口描述如表2-1所列。图2-4 STM33F103RBT6模块接口电路表2-1 STM32F103RBT6引脚接口分布表STM引脚编号连接器件备注3,4RTC时钟晶振5,68MHz晶振Y2系统时钟PA0PA7 ,PC0PC7触摸液晶模块接口JP1液晶16位数据口PB12PB15SD卡 U2STM32的SPI接口PC10PC12VS1003的SPI接口 U3采用STM32模拟SPI接口PA14,PA15,PD2,PB3VS1033控制接口 U3PB5PB9触摸液晶模块接口JP1液晶控制接口PB0PB2,PB10,PB11触摸液晶模块接口J
22、P1触摸控制接口PA11,PA12USB接口PA1318B20数据口 J4PC8,PC924C02接口 U52. DS10B20温度传感器STM32F103RBT6内置了温度传感器,但其所测温度为CPU的温度,不能很好的反映空气温度,因而本系统另外使用 HYPERLINK :/baike.baidu /view/2398.htm t _blank 美国DALLAS公司生产的 DS18B206。DS18B20的外形及管脚排列如图2-5所示。 I/O为数字信号输入/输出端; GND为电源地; VDD为外接供电电源输入端(在寄生电源接线方式时接地)。DS18B20的电路图设计很简单,如图2-6所示,
23、只需要将它的数据引脚与STM32F103RBT6的P_DATA引脚相接即可。 图2-5 DS10B20引脚图 图2-6 18B20接口电路3. EEPROM 存储器24C02系统掉电时需要保存一些系统配置信息,用于恢复关机前的状态。STM32F103RBT6提供了备份数据寄存器BKP_DRx,但BKP_DRx只能保存10个16位数据,这对于本设计而言不能满足需求。系统中需要保存的数据不是很大,采用24C027即可满足要求。24C02串行E2PROM是基于I2C总线的存储器件,遵循二线制协议,它具有接口方便,体积小,数据掉电不丢失等特点。其引脚图如图2-7所示,各引脚的功能如表2-2所列。图2-
24、7 24C02引脚图表2-2 24C02引脚功能说明管脚名称功能A0A1A2器件地址选择SDA串行数据/地址SCL串行时钟WP写保护VCC电源VSS地24C02接口电路设计如图2-8所示。由于只用一个24C02,因而A0、A1和A2可直接接地。WP接地,关闭写保护功能。图2-8 24C02电路设计2.4 带触摸功能的TFT液晶显示模块STM32F103RBT6有丰富的I/O接口,在选择显示器件时有充足的余地。以往的电路设计一般都采用LCD1602或LCD12864,不过它们都是黑白屏,不能提供彩色图片显示的功能。随着TFT屏的广泛使用,它的价格也越来越低,并且更符合本设计的要求,因而本系统便采
25、用2.4寸TFT-LCD(型号WXCAT24-TSI#001),它的显示驱动采用ILI93208,其特征如下:320240分辨率。3.3V。16位数据接口。高的对比、高亮度、低功耗。4-wires模拟电阻式触摸屏。当触摸屏被按下时会得到模拟的电压值,因此要将该值转换成坐标就需要一个A/D控制器。这种触摸屏的A/D控制芯片有很多,本系统触摸控制芯片采用TI公司的ADS78469低压I/O触摸屏控制器。其芯片引脚图见图2-9所示,各个引脚的功能如表2-3所列。图2-9 ADS7846引脚图表2-3 ADS7846芯片引脚说明引脚号引脚名称引脚说明1+VCC5.25V)2X+X+位置输入3Y+Y+位
26、置输入4X-X-位置输入5Y-Y-位置输入6GND地7VBAT电池监控器输入8AUXADC辅助输入9VREF基准电压输入输出(2.5V)10+VCC5.25V)11笔断控制脚12DOUT连续数据输出,数据在DCLK下降沿转换,为高电平时输出高阻抗13BUSYBUSY 输出,为高电平时输出高阻抗14DIN连续数据输入,数据在DCLK上升沿保持15芯片选择输入,控制转换时间,控制连续数据输入输出寄存器。为高电平时等同于掉电模式,仅仅对ADC有效16DCLK外部时钟输入端。时钟驱动SAR转换器,并与连续输入输出同步带触摸功能的TFT液晶显示模块电路如图2-10所示。图中,三极管Q1用来控制TFT背光
27、,DB0DB15是显示驱动ILI9320的数据线,JP1为引脚插针,便于和微控制器模块连接。图2-10 带触摸功能的TFT液晶显示模块电路2.5 VS1003音频模块虽然STM32F103RBT6具有最高72MHz的频率,但它没有独立的DSP音效处理能力,如果直接用它来进行音频数据处理,很难实现优质的音频输出,同时考虑到自己的能力和精力有限,因而本系统的音频解码部分则另采用一款简单实用的音效处理芯片VS100310来完成。本模块涉及到模拟信号与数字信号,在设计时要考虑信号的隔离措施,模拟信号与数字信号的连接处需串联磁珠或0欧电阻以避免信号干扰。1. VS1003概述VS1003是一个单片MP3
28、/WMA/MIDI音频解码器和 ADPCM编码器。它包含一个高性能、自主产权的低功耗DSP处理器核VS_DSP4;一个工作数据存储器,为用户应用提供5KB的指令RAM和0.5KB的数据RAM。串行的控制和数据接口,4个常规用途的I/O口,一个UART,也有一个高品质可变采样率的ADC和立体声DAC,还有一个耳机放大器和地线缓冲器。VS1003通过一个串行接口来接收输入的比特流,它可以作为一个系统的从机。输入的比特流被解码,然后通过一个数字音量控制器到达一个18位过采样多位 DAC。通过串行总线控制解码器。除了基本的解码,在用户RAM中它还可以作其他特殊应用,例如DSP音效处理。VS1003的内
29、部结构及引脚如图2-11所示。本设计采用的这款芯片为LQFP-48封装,所有的数字口输入电压不能大于3.6V,其引脚功能说明如表2-4所列。图2-11 VS1003内部结构及引脚图表2-4 VS1003引脚功能表引脚号管脚名称管脚功能4,20,21,22DGND处理器核与I/O地6,14,19IOVDDI/O电源(典型值:2.8V 最大值:3.6V)38,43,45,47APWR模拟电源(典型值:2.5V最大值:2.8V)5,7,24,31CVDD处理器内核电源(典型值:2.8V 最大值:3.6V)37,40,41,47AGND模拟地1和2MICP和MICN同相和反相差分话筒输入,自偏压3XR
30、ESET低电平有效,异步复位端8DREQ数据请求,输入总线9GPIO2/DCLK通用I/O2,串行数据总线时钟10GPIO3/SDATA通用I/O3,串行数据总线数据13XDCS/BSYNC数据片选端/字节同步15VCO时钟压控振荡器VCO输出17和18XTALO和XTALI晶振输出和晶振输入23XCS片选输入,低电平有效26RXUART接收口,不用时接IOVDD27TXUART发送口28SCLK串行总线的时钟29和30SI和SO串行输入和串行输出32TEST保留做测试,连接至IOVDD33GPIO0/SPIBOOT通用IO/0,/SPIBOOT,使用100K下拉电阻34GPIO1通用I/O1
31、39和46RIGHT和LEFT右声道输出和左声道输出42GBUF公共地缓冲器44RCAP基准滤波电容48LINE IN线路输入2. VS1003解码电路设计在设计VS1003解码电路时,数字地与模拟地必须相互连接并尽量靠近VS1003以避免锁存上拉,为了能播放48KHz采样率的音频文件,输入时钟使用12.288MHz。具体设计电路如图2-12所示。VS1003通过MISOMOSISCK(SPI接口)来接收输入的MP3数据,经过VS1003内置的采样DAC转换为音频模拟量,最后通过LeftRight和Gbuf输出。图2-12 VS1003解码模块电路3 FAT文件系统3.1 FAT文件系统简介M
32、P3文件BMPTXT等文件在SD卡中是以FAT11的文件格式存储的,FAT即文件配置表,本系统采用FAT16/32。以FAT32为例,其数据信息常分为5个部分:MBR区、DBR区、FAT区、FDT区和DATA区。由于SD卡一般不做引导盘,一般也不分区,因此通常无MBR区,直接从DBR区开始。各分区的含义如下。MBR区: 主引导记录区,该区存储了分区表等信息,位于SD卡的扇区0(物理扇区),在其分区信息里面记录了DBR所在的位置。DBR区: 内容为系统引导记录,它包括一个引导程序和一个被称为BPB(Bios Parameter Block)的本分区参数记录表。BPB参数块记录着本分区的起始扇区、
33、结束扇区、文件存储格式、根目录大小、FAT个数,分配单元大小等重要参数。FAT区:称为文件分配表(FAT 表),一般一个卡上会存在2个FAT表,一个用作备份,一个用作使用。FAT表一般紧随DBR,另一个FAT表则紧随第一个FAT表。FAT表记录了每个文件的位置和区域,是一种链式结构,FAT以“F8 FF FF 0F FF FF FF FF”这样的8个字节为表头,用以表示FAT表的开始,后面的数据每四个字节为一个簇项(从第2簇开始),用来标记下一个簇所在的位置,这样每个位置都存储了下一个簇,只要按着这个表走,就可以找到文件的所有内容。如果找到下一个簇位置,里面记录的是“FF FF FF 0F”,
34、代表这个文件到此就结束了,没有后续簇了,这样一个文件的读取就结束了。FTD区:该区的内容为文件目录表,FAT文件系统的一个重要思想是把目录(文件夹)当作一个特殊的文件来处理,FAT32甚至将根目录当作文件处理。FAT分区中所有目录文件,实际上可以看作是一个存放其它文件(文件夹)入口参数的数据表。因此,目录占用空间的大小并不等同于其下所有数据的大小,但也不等于0,通常占很小的空间。其具体的存储原理是:不管目录文件所占空间为多少簇,一簇为多少扇区、多少字节,系统都会以32个字节为单位,进行目录文件所占簇的分配,各个字段定义如表3-1所列。DATA区:该数据区存放文件的内容,SD卡所占用的空间绝大部
35、分为此部分。如果文件长度大于一个簇的大小,需要多个簇存放该文件,这些簇通过FAT链表串连起来。表3-1 文件目录表各字段定义FAT32文件目录项32个字节的定义字节偏移量字数量定义078文件名8103扩展名111属性字节0 x00 (读写)0 x01 (只读)0 x02 (隐藏)0 x04 (系统)0 x08 (卷标)0 x10 (子目录)0 x20 (归档)121系统保留131创建时间的10毫秒位14152文件创建时间16172文件创建日期18192文件最后访问时间20212文件起始簇号的高16位22232文件的最近修改时间24252文件的最近修改日期26272文件起始簇号的低16位2831
36、4表示文件的长度3.2 FAT文件系统的读取操作一般硬盘的数据结构是按图3-1而建立的。图3-1 FAT文件系统结构图启动区的内容,也就是第一个扇区,使用WinHex软件查看,如图3-2所示。其中,带下划线或点线部分为有用内容,具体含义依次如下。图3-2 FAT启动区EB 59 90:跳转指令。4D 53 44 4F 53 35 2E 30:厂商标志和dos版本号,这里是MSDOS5.0。00 20(偏移地址0BH,长度2):注意这里数据的布局,高地址放高字节,低地址放低字节(数据为小端格式组织),所以数据应该是0200,就是512。表示的意思是,该磁盘每个扇区有512个字节。有的可能是102
37、4、2048、4096。08(偏移地址0DH,长度1):表示每个簇有8个扇区。这个值不能为0,而且必须是2的整数次方,比如1、2、4、8、16、32、64、128。但是这个值不能使每个簇超过32KB。24 00(偏移地址0EH,长度2):转换一下,就是0024,意思是保留区域中的保留扇区数为36个。那么就可以知道下面的FAT1区的开始的地址就是:0 x24*200(每个扇区的字节数)=0 x4800。02(偏移地址10H,长度1):此卷中的FAT结构的份数为2,另外一个是备份的。C6 03(偏移地址24H,长度2):每个FAT占用的扇区数,转换一下,为03C6。那么每个扇区占用的字节数就是0
38、x03C6*200=78C00。根据启动区、FAT1、FAT2、根目录、数据区的次序,可以依次计算出它们的地址。通过以上分析我们知道了启动区地址是0 x00。FAT1表的起始地址的为0 x4800,如图3-3所示。FAT2表的起始地址为0 x4800+0 x78C00=0 x7D400,如图3-4所示。根目录区的起始地址为0 x7D400+0 x78C00=0 xF6000,如图3-5所示。图3-3 FAT1的起始地址图3-4 FAT2的起始地址图3-5 根目录的起始地址从SD卡中读取数据需要给出数据的地址,而且每次读取都是一个整扇区,512个字节。找出这些地址后,可以很方便的找到数据。由此可
39、见读取0扇区的内容,我们就知道FAT文件系统的重要参数了,现在分析下根目录区的内容。根据前面得到的根目录地址0 xF6000,通过软件查看它的内容如图3-6所示。这里使用的是FAT32短文件目录项,每32个字节表示一个文件(文件夹也是)。具体含义分别如下。图3-6 根目录中的数据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(读写
40、);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个簇,这三
41、个簇的开始的地址就可以计算出来了。通过起始簇号计算得到起始簇的地址:0 xF6000(根目录区地址)+(03-2)*08*0 x200=0 xF7000(第一个簇开始地址)这里03减去的02的意思是因为簇号都是从2开始的。第二个簇号存放在0 x4800+03*04(因为四个字节存一个簇号)=0 x480C中,通过图3-7可知0 x480C里面的内容是:04 00 00 00,即第二簇号为04。此时第二个簇的地址:0 xF6000+(04-2)*08*0 x200=0 xF8000。依次查看FAT1表可知第三个簇号为05,地址:0 xF6000+(05-2)*08*0 x200=0 xF9000
42、。继续看看下一个簇号:内容为0 x0FFFFFFF,说明文件放置结束。图3-7 FAT1表中的内容通过以上分析可以得到该文件数据存放的起始地址了:0 xF7000(第一个簇开始地址)0 xF8000(第二个簇开始地址)0 xF9000(第三个簇开始地址),他们在文件系统中存储的数据分别如图图3-8图3-9图3-10所示。由此就可以获得该文件的数据了。图3-8 簇中的数据1图3-9 簇中的数据2图3-10 簇中的数据34 系统软件设计4.1 软件设计总流程本系统在软件设计上主要包括2部分:底层驱动的设计和各功能模块的设计。软件设计平台使用RealView MDK13。各个功能的选择菜单仿照 九空
43、格的操作界面,实现多各个功能之间的选择与切换,系统软件设计的总体流程图4-1所示。 图4-1 系统软件总流程4.2 底层驱动程序设计 TFT显示驱动程序设计本设计所使用的TFT使用ILI9320作为显示驱动芯片,数据的读写方式由模块硬件设置为16位数据模式。要完成TFT的显示功能主要依靠2个操作:写显示缓存GRAM(显示的颜色数值)和写寄存器操作(TFT所有的设置操作)。1. 写显示缓存写显示缓存GRAM的操作比较简单,只需要写入颜色的数值即可,它的操作时序如图4-2所示。16位数据线采用565模式读写数据,其数据的映射关系如图4-3所示。最低5位代表蓝色,中间6位为绿色,高5位是红色,数值越
44、大表示颜色越深。图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用来
45、控制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初始化,具体步骤如
46、图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)B
47、it6Bit5Bit4Bit3Bit2Bit1Bit0SA2A1A0MODESER/DFRPD1PD0ADS7846与STM32F之间通过SPI接口(STM32F引脚模拟SPI)相连,由STM32F启动3次SPI传送来完成转换,如图4-7所示。第一次SPI传送由STM32F向ADS7846发送控制字,包括起始位、通道选择、8/12位模式、差分/单端选择和掉电模式选择,接下来的两次SPI传送的则是STM32F读取ADS7846 A/D转换的结果数据(12位时最后四位自动补0),到此完成触摸屏控制器和微控制器之间的一次通信。ADS7846还设置有触摸识别电路,当检测到触摸信号时,该电路输出一个低电
48、平信号,称为PENIRQ#(笔中断),ADS7846通过这个信号向微控制器提出测量触点坐标的中断请求。图4-7 ADS7846与STM32F间的SPI转换时序图2. 坐标定位与坐标变换触摸屏的坐标原点、标度和LCD的坐标原点、标度不一样,且电阻式触摸屏的坐标原点通常不在有效点触区内。因此必须进行坐标变换。本设计采用四点定位法,其方法如下。假设ABCD分别为触摸屏对应LCD四个顶点的坐标点,分别触击这四点,得到四组坐标值:、。根据式(4-1)计算出触摸屏中心点坐标。 (4-1)设 ,则可得触点坐标公式: (4-2)式(4-2)中,x和y分别为触点在x工作面和y工作面上产生的电压数字量的测量值,可
49、通过采样得到;(x,y)反映了触点在触摸屏上的坐标。W和H分别是LCD显示屏X轴和Y轴上的象素点总数;(xlcd,ylcd)为触点映射到LCD显示屏上的像素点坐标。3. 程序实现流程以及注意事项触摸屏和微控制器之间的互动通过外部中断实现。在程序设计中重要功能块包括以下几个部分:ADS7846的初始化,包括初始化SPI寄存器、可编程定时器中断和笔中断;MCU外部中断的配置;LCD控制器的初始化配置:LCD驱动IC的一些初始化配置,一般由LCD的厂家提供;坐标定位子程序;以及LCD逐点显示子程序。程序设计中,需要注意触摸抖动和连击问题。可以采用延迟测量法来解决,测量完后再次延迟一段时间(连击延时3
50、00ms)后打开笔中断,可避免连击现象出现。ADS7846触摸驱动实现的流程如图4-8所示。图4-8 ADS7846触摸驱动流程 VS1003驱动设计要让VS1003实现音乐播放功能,首先要实现写命令功能,然后通过写命令操作初始化VS1003。完成以上步骤之后,就可以送入音频数据,播放音乐了。1. VS1003写命令要控制 VS1003 首先要实现的就是写命令,这是控制是否成功的前提。VS1003通信方式是一种同步串行接口方式(SPI从机模式 ),它要求SCLK信号必须由外部电路产生,数据(SDATA)在 SCLK 的上升沿或下降沿时被写入。写命令的过程如下:(1) 等待 DREQ 为高(当
51、DREQ 为低时,说明芯片还没有就绪);(2) 将 XCS (命令片选)拉低;(3) 写入 0 x02;(4) 写入寄存器地址;(5) 分别写入数据的高字节与低字节;(6) 将 XCS 置高。2. VS1003初始化如其它芯片一样,初始化对于 VS1003 来说同样是极其重要的。初始化的过程大致是这样的:(1) 硬件复位:接 XRESET拉低;(2) 延时,将XDCS、XCS、XRESET 置高;(3) 向MODE中写入0X0804;(4) 等待DREQ为高;(5) 设置VS1003的时钟:SCI_CLOCKF=0 x9800,3倍频;(6) 设置VS1003的采样率:SPI_AUDATA=0
52、 xbb81,采样率48kHz,立体声;(7) 设置重音:SPI_BASS=0 x0055;(8) 设置音量:SCI_VOL=0 x2020;(9) 向VS1003发送4个字节的无效数据,用以启动SPI发送。3. VS1003对音频文件的处理在完成VS1003初始化之后就可以对其写入MP3文件数据了。主要就是看DREQ 信号,在VS1003的FIFO能够接受数据的时候输出高电平。每次可以写入32个字节的数据。而DREQ变低时,单片机就要停止数据的发送。写数据的具体的方法如下:(1) 将XDCS拉低;(2) 等待DREQ为高;(3) 通过SPI写入数据;(4) 在文件没有结束前不断重复2与3操作
53、;(5) 在所有的数据都发送完后,再发送2048无效字节以清除VS1003的数据缓冲区;(6) 将XDCS置高。 SD卡读取驱动SD卡12(Secure Digital Memory Card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。SD卡内部结构及引脚如图4-9 所示。SD卡引脚功能如表4-3所列,各引脚的具体含义如下。CLK:时钟信号,每个时钟周期传输一个命令或数据位,频率可在025MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生025MHz的频率。图4-9 SD卡
54、引脚及内部结构表4-3 SD卡引脚功能表针脚123456789SPI模式CSMOSIVSSVCCCLKVSSMISONCNCCMD:双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡。DAT03:数据线,数据可以从卡传向主机也可以从主机传向卡。VCC和VSS:电源和地。SPI模式下,SD卡的几个重要操作命令如表4-4所列。其中,R1回应的数据格式如表4-5所列。表4-4 SPI模式下SD卡部分操作指令命令参数回应描述CMD0(0X00)NONER1复位SD卡CMD9(0X09)NONER1读取卡特定数
55、据寄存器CMD10(0X0A)NONER1读取卡标志数据寄存器CMD16(0X10)块大小R1设置块大小(字节数)CMD17(0X11)地址R1读取一个块的数据CMD24(0X18)地址R1写入一个块的数据CMD41(0X29)NONER1引用命令的前命令CMD55(0X37)NONER1开始卡的初始化CMD59(0X3B)仅最后以为有效R1设置CRC开启(1)或关闭(0)表4-5 SD卡R1回应格式SD卡R1回应格式BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT00参数错误地址错误连续擦除错误命令CRC错误非法命令擦除复位IDLE状态SD卡典型的初始化过程如下:(1) 初始化
56、与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) 接
57、收数据起始令牌0XFE; (4) 接收数据; (5) 接收2个字节的CRC,如果没有开启CRC,这两个字节在读取后可以丢掉;(6) 8CLK之后禁止片选;SD卡写数据通过CMD24完成,具体步骤如下:(1) 发送CMD24;(2) 接收卡响应R1; (3) 发送写数据起始令牌0XFE;(4) 发送数据; (5) 发送2字节的伪CRC;(6) 8CLK之后禁止片选。 RTC时钟驱动STM32F103RBT6内带RTC模块,它拥有一组连续运行的计数器,可以通过适当的软件设置提供日历时钟功能和闹铃功能。RTC的驱动时钟可以是一个使用外部晶体的32.768kHz的振荡器,RTC具有一个32位的可编程计
58、数器,使用比较寄存器可以进行长时间的测量。有一个20位的预分频器用于时基时钟,默认情况下时钟为32.768kHz时,它将产生一个1秒长的时间基准。通过设置RTC的相关寄存器,就可以实现时钟和闹铃功能了。RTC工作的一般步骤如下:使能电源时钟和备份区域时钟,RCC-APB1ENR|=3CR|=1BDCR|=1BDCR|=1BDCR|=1PRLH与RTC-PRLL。更新配置,设置 RTC中断,RTC-CRH|=0X01。进入中断服务程序。4.3 功能模块的设计 音乐播放功能的设计要实现音乐播放功能,需要获得相应的音乐文件数据,根据FAT文件的存储格式并结合SD卡读取驱动,得到相应的文件数据,每次读
59、取512个字节。当VS1003已经初始化完成并等待接收数据(DREQ引脚为高电平)时,将读到的数据以每次32字节的速度送入VS1003的RAM中,VS1003会自动去处理这些数据并得到模拟音频信号。在每次读取新的音频文件时,采用文件名比较(只比较前3个字节)的方法查找存在SD卡中的歌词文件,如果存在歌词文件,就将文件数据全部复制到RAM中(超过6144个字节的部分将丢弃),同时初始化30ms中断的定时器用于歌词显示的刷新操作。 音乐播放功能实现的具体流程如图4-10所示。图4-10 音乐播放功能的实现流程 电子书阅读与图片浏览功能设计电子书阅读和图片浏览功能在文件数据的读取上与音乐播放功能一样
60、,只是所读取的文件属性不一样而已。电子书阅读支持txt、lrc为属性的文件,图片浏览则支持BMP属性的文件。和音乐播放不一样的是电子书阅读与图片浏览功能的实现不需要做额外的数据处理,可以直接把读取的txt、lrc、BMP属性的文件数据直接送给TFT显示驱动即可实现相应的功能。其软件设计流程如图4-11所示。图4-11 电子书阅读或图片浏览软件设计流程 USB读卡器STM32F103RBT6内置1个全速接口,可以实现USB读卡器的功能。该功能的实现需要2个部分:USB传输部分和SD卡读写部分。根据ST官网提供的例程,USB读卡器用到2个函数:一个是MSD_WriteBuffer函数,用于向 SD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024餐厅桌椅采购合同范本
- Unit 1 Good morning(同步练习)-2021-2022学年二年级英语上册-沪教牛津版(深圳用)(含答案)
- 2024葵花出售合同范本
- 2024版预算单位公务卡代理运营协议3篇
- 2024年三季度报北京地区A股应交税费排名前十大上市公司
- 2024旅游业务合作与股权转让合同
- 2024饲料运输安全责任保险合同3篇
- 2024物流标准化、质量认证合同
- 2024版细化第三方交易协议样式版B版
- 2024版食堂服务采购合同书
- 小学道德与法治学科高级(一级)教师职称考试试题(有答案)
- 考研考博-英语-山东师范大学押题密卷附带答案详解篇
- 实用性阅读与交流任务群设计思路与教学建议
- 应急柜检查表
- 中医诊疗器具清洗消毒(医院感染防控专家课堂培训课件)
- 通风设施标准
- 宠物智能用品项目计划书【模板范文】
- 药厂生产车间现场管理-PPT课件
- 轴与孔标准公差表
- 防火门施工方案
- 人教PEP版2022-2023六年级英语上册期末试卷及答案(含听力材料)
评论
0/150
提交评论