




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于STM32的便携式音乐播放器设计毕业设计说明书 编号 毕业设计说明书 论文 课 题 便携式音乐播放器设计 学 院 电子工程与自动化学院 专 业 电子信息科学与技术 学生姓名 学 号 指导教师 职 称 高级研究员 题目类型 理论研究 实验研究 工程设计 工程技术研究 软件开发7>2013 年 4 月 20 日摘 要随着电子行业的迅猛发展人们对消费类电子产品的需求越来越高多功能便携式MP3也越来越受大众的青睐根据消费者的爱好需求各种多功能的MP3层出不穷其尽可能的吸收照相机手机等电子产品的其它功能本次系统设计采用ARM Cortex-M3内核的STM32F103VET6作为微控制器SD卡
2、作为存储介质VS1003作为音频解码芯片以及TFT彩晶屏作为人际交互设备设计一款可播放mp3wav文件格式的便携式音乐播放器并实现相关功能本次设计的重点是了解FAT文件系统的构造SD卡的读取VS1003芯片的解码过程人机交互设备的控制操作以及各主从机之间的通讯方式其中STM32F103系列集成了低功耗IO资源多通信接口多体积小价格适中等多项优点随着日本松下东芝及美国SanDisk公司于1999年8月共同研制SD卡被广泛应用与闪存介质并易于读取VS1003是一个多功能的mp3wav解码芯片自带DAC具有无相位差的立体声输出TFT显示屏集成了触控特点使得人机交互更为简便程序编写更为简洁关键字STM
3、32F103VET6SD卡VS1003解码芯片TFT彩晶屏便携式音乐播放器AbstractWith the rapid development of the electronics industry he consumer electronic products have been used more often by people because of their growing demand Its popular to have a Multi-function portable MP3 for people with the increasingly favored by the pu
4、blic A variety of multi-function MP3 after another according to the demand of consumer They were produced with absorb the other features of the cameras cell phones and other electronic products as much as possible The system used the ARM Cortex-M3 core STM32F103VET6 as microcontroller SD card as the
5、 storage medium VS1003 as human interaction as the audio decoder chip and TFT display screen equipment to make a Portable Music Player with the function that could play wav and mp3 files in this design and some related functions The difficulty lie in design is focused on understanding the structure
6、of the FAT file system how to read SD card the process of decoding in VS103 chip the control of human-computer interaction and the communication by master and slave Among of these devices STM32F103 series integrates a low-power IO resources communication interface small size affordable and many othe
7、r advantages Panasonic Toshiba SanDisk Corporation and the United States develop together in August 1999 SD cards are widely application and flash media and easy to read VS1003 is a mp3 wav decoder chip with many function built-in DAC and stereo output with no phase difference TFT as a display make
8、the human-computer interaction easier and programming more concise by integrating touch featuresKey words STM32F103VET6 SD card VS1003 decoder chip TFT display screen Portable Music Player目 录引言11 设计任务与思路211 设计任务212 设计思路22 器件选择和系统框图221 器件选择222 系统框图与概述23 硬件电路设计431 电源模块432 微控制器模块533 SD卡模块634 音频解码模块735
9、音频放大模块836 彩晶显示模块937 复位模块104 FAT文件系统1041 FAT文件系统简介1042 FAT文件系统的读取操作125 系统软件设计1551 STM32程序调试15511 STM32启动简析15512 STM32程序测试17513 STM32时钟系统1952 TFT显示驱动2153 SD卡读取驱动23531 SD卡总线拓扑23532 寄存器与协议23533 驱动流程图2654 VS1003驱动设计26541 VS1003总线拓扑26542 VS1003主要寄存器28543 VS1003相关协议29544 读写时序29545 驱动流程与框图3055 系统软件流程图316 实物
10、与功能3161实物总图3262 利用电池供电3363 支持wav和mp3格式3364 支持SD卡存储3465 可选择播放3466 可快进快退357 自我总结36谢 辞38参考文献39附 录 一40附 录 二46引言在INTERNET广泛普及的今天MP3音乐一起较小数据流量和近乎完美的播放效果已经成为计算机和INTERNET上最流行的音乐格式了将CD格式的音乐数据压缩成MP3格式音效相差无几文件大小却至少可以压缩12倍每首PCM格式的CD歌曲大约40MB至50MB数据流量自韩国世韩公司1998年推出世界上第一台MP3随身听以来MP3播放器以其小巧外形近乎于CD的音质前卫的功能越来越受到消费者的青
11、睐也就成为业界甚至大众媒体关注的一个热门话题它的记录媒介是芯片或卡无需转动部件彻底摆脱磁盘和光碟的束缚因而抗震性和节点性能更好在市场消费的刺激下各大公司纷纷推出了自己的mp3播放器产品除了Micronas方案ST方案TI软解压单芯片方案还有台湾创品方案美国Sigmatel方案等进入2004年当MP3在容量外观音质上的发展无法再吸引更多眼球的时候开始转向多功能发展正如在手机身上所发生的一切人们对于MP3的要求不再是单一的欣赏音乐而是向手机一样身兼多职作为全球第一款闪存式彩屏MP3信利MP301的推出引起了MP3市场的巨大关注除了彩屏的加入MP301还支持图书图片浏览及游戏功能多功能融合是消费类电
12、子产品的发展趋势MP3播放器的诞生为传统随身听带来了致命打击曾几何时MP3和MD之间的斗争成为业界最热门的话题当时甚至多数人都认为MP3由于音质上的原因将白给MD但事实上MP3的发展远远超出了MD支持者们的预想直至今日MP3已成为随身听市场的主流产品并成为了继手机之后最为广泛使用的个人随身电子产品抱着学习的态度秉着严谨的精神完成此次音乐播放器的设计1 设计任务与思路11 设计任务本设计课题是一个软硬件相结合的设计类题目要求设计一个具有如下要求的便携式音乐播放器利用电池供电支持wav和mp3格式支持U盘CF卡或者SD卡可选择播放可快进快退12 设计思路整个系统主要由微控制器音频解码部分音效处理部
13、分SD卡部分人机交互部分按键复位部分电源部分程序口下载部分组成整个系统由MCU控制各个部分协调运作2 器件选择和系统框图21 器件选择该系统要求能够对mp3wav格式的音频文件进行解码处理起来速度是有要求的尤其是对320Kbps的MP3格式数据流的处理必须非常快才能实现MP3的流畅播放可供选择的八位机有AVRPIC可供选择的32位处理器有SAMSUNGSTM32ATMEL等选择MCU优先考虑于拥有丰富的RAM八位机RAM主要靠扩展内部RAM一般在4Kbyte以内32位机里面SAMSUNG一般不内带RAM也要外扩出于成本的考虑外扩RAMFLASH芯片必然会增加成本所以控制芯片最好选择自带RAMF
14、LASH本次课题设计选择使用STM32F103VET6作为微控制器本次课题设计要求的储存媒介是U盘CF卡或者SD卡SD卡以其价格低体积小扩存容易等优势迅速占据市场使用也越来越广泛以此同时各种MCU同时也在内部集成了SD控制器出于成本和使用方便等因素的考虑本次课题设计选择使用SD卡作为储存媒介由于使用了ARM7处理器MP3解码可以有两种方法一是通过ARM处理器软解码通过对MP3数据格式的解析实现MP3播放二是通过外部解码芯片直接解码第一种方法在解码高码率的MP3时ARM7处理能力吃紧而且STM32还需要外部DAC来做音频输出所以采用第二种方法进行解码MP3常见的解码芯片有VS100X系列和STA
15、01系列STA01需要外接DAC做音频输出而VS1003自带DAC且解码的文件格式包含mp3和wav另外它还可以实现录音功能方便以后进行功能的拓展应用人机交互设备包括输入设备和输出设备选择硬件考虑到程序的调试控制这里选择一款3寸的TFT液晶屏其分辨率位240400工作模式为16位数据模式通讯速度较快22 系统框图与概述本次课题设计采用STM32F103VET6作为为控制器读取SD卡内的音乐文件并将数据送入VS1003进行音频解码得到模拟的音乐流再进过音频放大送入耳机同时结合TFT液晶屏进行人机交互控制其系统框图如图2-1图2-1 系统框图3 硬件电路设计31 电源模块电源模块是电子设备中必不可
16、少的一部分它位设备提供了能量如图3-1所示为该系统的电源模块电路5V电压经过AMS1117-25AMS1117-28和AMS1117-33产生25V28V和33V直流电压供系统使用C31可以防止电感效应而产生自激C33用来减小由于负载电流瞬时变化而引起的高频干扰C32是进一步减小输出脉动和低频干扰使电源输出更加稳定sp位电源开关D1和D2位电源指示灯图3-1 电源模块电路32 微控制器模块微控制器STM32F103VET6控制着整个系统协调运作STM32F103VET6基于ARM Cortex-M3内核设计片上集成了丰富的数字和模拟资源允许最高72MHz的工作频率是一款性价比很高的32位ARM
17、处理器其管脚封装图如图3-2自带128KB闪存和20KB的RAM具有2个SPI接口2个IIC接口3个USART接口一个USB接口和一个CAN总线接口高达80个IO口资源采用外部8MHz时钟经过倍频因子PLLMUL可倍频至72MHz通过一些列的AHB分频器可设置各种外设所需的频率以达到低功耗的目的图3-2 STM32F103VET6管脚图微控制器电路模块如图3-3图中BOOT0为插针用于选择启动模式当BOOT 1时用户闪存存储器被选为启动区域此时可以通过串口下载程序当BOOT 0时系统存储区被选为启动区域电容C11C12C13和C15为谐振电容有助于系统时钟和RTC时钟的启振在设计时晶振要尽可能
18、靠近芯片电容C14C16C17C20位芯片电源引脚的旁路电容能够起到稳定电源的作用微控制器各引脚接口描述如表3-1所示图3-3 微控制器模块电路表3-1 STM32F103VET6主要引脚接口描述STM32F103VET6引脚序号接口类型接口作用89RTC时钟晶振接口32768KHz晶振Y11213系统时钟接口8MHz晶振Y283SD卡控制器接口SD卡命令控制SDIO_CMD80SD卡时钟控制SDIO_CLK65667879SD卡数据通讯SDIO_DATA97VS1003控制接口异步复位端低电平有效XREST51片选输入端低电平有效XCS63数据片选端字节同步XDCSBSYNC52串行总线时钟
19、SCLK54串行输入SI53串行输出SO98TFT液晶屏接口复位88片选30时钟SCK31MISO32MOSI38-4655-576162818216位数据接口DATA33 SD卡模块SD卡Secure Digital Memory Card中文翻译为安全数码卡是一种基于半导体快闪记忆器的新一代记忆设备SD卡的物理规格管脚功能和数据传输协议时MMCMultimedia Card前向兼容的它被广泛用于便携式装置上使用例如数码相机个人数码助理 PDA 和多媒体播放器SD卡由日本松下东芝及美国SanDisk公司于1998年共同开发研制大小犹如一张邮票的SD记忆卡重量只有2克但却拥有高记忆容量快速数据
20、传输率极大的移动性以及很好的安全性SD卡标准是SD卡协会针对可移动存储设备设计专利并授权的一种标准主要用于制定卡的外形尺寸电气接口和通讯协议其中SD卡外形尺寸如图3-4引脚功能如表3-2图3-4 SD卡外形尺寸表3-2 SD卡引脚图PinSD modeSPI modeNameTypeDiscriptionNameTypeDiscription0DATA2IOPPDATA LineRSVIReserved1DATA3IOPPDATA LineCSIChipSelect2CMDPPCommandDataInIHost to card3VSSISGroundVSSISGround4VDDSVolta
21、geVDDSSupply Voltage5CLKIClockCLKIClock6VSS2SVoltageVSS2SVoltage 7DATA0IOPPDATA LineDataOutOCard to Host8DATA1IOPPDATA LineRSVUReserved由于SD卡的广泛引用各种常用MCU内部都集成了SD控制器而恰好本次设计选取的STM32F103VET6内部也含有SD控制器接口为了获得更大的数据传输速度本次设计采用SD模式进行主从机之间的通讯该模式下具有6根通讯线Data0-3CMDCLK和三根电源线VSS1VSS2VDD电路模块如图3-5其中RVA0-RVA4为增强驱动能力图
22、3-5 SD卡电路模块34 音频解码模块本次课题设计采用的解码芯片是VS1003VS1003是芬兰VLSI公司生产的单芯片MP3WMA音频解码芯片其拥有一个高性能低功耗的DSP处理器核VSDSP5KB的指令RAM05KB的数据RAM串行的控制和数据输入接口4个通用的IO口1个UART口1个可变采样率的DAC1个立体声DAC以及音频耳机放大器其内部结构如图3-6所示图3-6 VS1003内部结构VS1003通过一个串行接口来接收输入的比特流它可以作为一个系统的从机输入的比特流被解码然后通过一个数字音量控制器到达一个18位过采样多位 DAC通过串行总线控制解码器除了基本的解码在用户RAM中它还可以
23、作其他特殊应用例如DSP音效处理其内部部分引脚功能如表3-3表3-3 VS1003部分引脚功能表引脚号管脚名称管脚功能61419IOVDDIO电源典型值28V 最大值36V38434547APWR模拟电源典型值25V最大值28V572431CVDD处理器内核电源典型值28V36V37404147AGND模拟地3XRESET低电平有效异步复位端8DREQ数据请求输入总线9GPIO2DCLK通用IO2串行数据总线时钟10GPIO3SDATA通用IO3串行数据总线数据13XDCSBSYNC数据片选端字节同步17和18XTALO XTALI晶振输出和晶振输入23XCS片选输入低电平有效28SCLK串行
24、总线的时钟29和30SI和SO串行输入和串行输出39和46RIGHT和LEFT右声道输出和左声道输出在设计VS1003解码电路时数字地与模拟地必须相互连接并尽量靠近VS1003以避免锁存上拉为了能播放48KHz采样率的音频文件输入时钟使用12288MHz具体设计电路如图3-7所示VS1003通过MISO、MOSI、SCK SPI接口 来接收输入的MP3数据经过VS1003内置的采样DAC转换为音频模拟量最后通过Left、Right和Gbuf输出表3-7 VS1003接口电路35 音频放大模块本次课题设计采用的音频功放芯片是TDA1308TDA1308是AB类的数字音频 CD 专用耳机功放芯片低
25、电压低失真高速率强输出等优异的性能是以往的TDA2822TDA7050LM386等经典功放望尘莫及的芯片内采用MOS管输出可直接推动低阻抗耳机因为封装和功能引脚位与一般的双运放相同在特定条件下也能当双运放使用在低供电电压条件下性能比一般的运放要好因其封装体积小低电压低功耗等特点主要应用在便携式数字音频电路中如discman光驱的耳放电路等其引脚配置与功能方框图如图3-8图3-8 TDA1308引脚配置和功能方框图在设计音频放大电路模块时采用了同相放大电路的接法设计电路如图3-9输入信号电压A5V加到运放的同相输入端和地之间输出电压通过RV1和RV2的分压作用可得电压增益Av 1RV2RV1本次
26、设计采用RV1 RV2使得电压放大为原来的两倍输出至耳机接口图3-9 音频放大电路36 彩晶显示模块显示器采用奋斗STM32开发板30TFT240400本次设计的LCD触摸屏所采用的控制器为XPT2046 XPT2046是一种典型的逐次逼近型模数转换器SAR ADC包含了采样保持模数装换串口数据输出等功能芯片内部集成有一个25V的内部参考电压也可以从外部直接输入参考电压其中接口采用MCU的FSMC功能LCD片选CS采用FSMC_NE1 P88 FSMC_A16 P58 作为LCD的RS选择FSMC_nWE1 P86 作为LCD的WRFSMC_nOE P85 作为LCD的RDLCD的RESET脚
27、用CPU的PE1P98 LCD-RST FSMC_D0- FSMC_D15和LCD的D1-D8 D10-D17相互连接触摸屏接口采用SPI1接口片选位PB7-SPI1-CS3由于LCD背光采用恒流源芯片PT4101控制采用PWM控制信号控制背光的明暗PWM信号由PD13-LIGHT-PWM来控制触摸电路的中断申请有PB6-INT来接收其设计电路如图3-10所示图3-10 彩晶显示电路37 复位模块复位电路如图3-11所示当接通电源时电容C10进行充电使得nRST为高电平按下复位按键后电容C10放电为低电平实现复位功能图3-11 复位电路4 FAT文件系统41 FAT文件系统简介MP3文件、BM
28、P、TXT等文件在SD卡中是以FAT11的文件格式存储的FAT即文件配置表本系统采用FAT1632以FAT32为例其数据信息常分为5个部分MBR区DBR区FAT区FDT区和DATA区由于SD卡一般不做引导盘一般也不分区因此通常无MBR区直接从DBR区开始各分区的含义如下MBR区 主引导记录区该区存储了分区表等信息位于SD卡的扇区0物理扇区在其分区信息里面记录了DBR所在的位置DBR区 内容为系统引导记录它包括一个引导程序和一个被称为BPBBios Parameter Block的本分区参数记录表BPB参数块记录着本分区的起始扇区结束扇区文件存储格式根目录大小FAT个数分配单元大小等重要参数FA
29、T区称为文件分配表FAT 表一般一个卡上会存在2个FAT表一个用作备份一个用作使用FAT表一般紧随DBR另一个FAT表则紧随第一个FAT表FAT表记录了每个文件的位置和区域是一种链式结构FAT以F8 FF FF 0F FF FF FF FF这样的8个字节为表头用以表示FAT表的开始后面的数据每四个字节为一个簇项从第2簇开始用来标记下一个簇所在的位置这样每个位置都存储了下一个簇只要按着这个表走就可以找到文件的所有内容如果找到下一个簇的位置里面记录的是FF FF FF 0F代表这个文件到此就结束了没有后续簇了这样一个文件的读取就结束了FTD区该区的内容为文件目录表FAT文件系统的一个重要思想是把目
30、录文件夹当作一个特殊的文件来处理FAT32甚至将根目录当作文件处理FAT分区中所有目录文件实际上可以看作是一个存放其它文件文件夹入口参数的数据表因此目录占用空间的大小并不等同于其下所有数据的大小但也不等于0通常占很小的空间其具体的存储原理是不管目录文件所占空间为多少簇一簇为多少扇区多少字节系统都会以32个字节为单位进行目录文件所占簇的分配各个字段定义如表4-1所列DATA区该数据区存放文件的内容SD卡所占用的空间绝大部分为此部分如果文件长度大于一个簇的大小需要多个簇来存放该文件这些簇通过FAT链表串连起来表4-1 文件目录表各字段定义FAT32文件目录项32个字节的定义字节偏移量字数量定义07
31、8文件名8103扩展名111属性字节0x00 读写 0x01 只读 0x02 隐藏 0x04 系统 0x08 卷标 0x10 子目录 0x20 归档 121系统保留131创建时间的10毫秒位14152文件创建时间16172文件创建日期18192文件最后访问时间20212文件起始簇号的高16位22232文件的最近修改时间24252文件的最近修改日期26272文件起始簇号的低16位28314表示文件的长度42 FAT文件系统的读取操作一般硬盘的数据结构是按图4-1而建立的图4-1 FAT文件系统结构图启动区的内容也就是第一个扇区使用WinHex软件查看如图4-2所示其中带下划线或点线部分为有用内容
32、具体含义依次如下图4-2 FAT启动区EB 59 90跳转指令4D 53 44 4F 53 35 2E 30厂商标志和dos版本号这里是MSDOS5000 20 偏移地址0BH长度2 注意这里数据的布局高地址放高字节低地址放低字节数据为小端格式组织所以数据应该是0200就是512表示的意思是该磁盘每个扇区有512个字节有的可能是10242048409608 偏移地址0DH长度1 表示每个簇有8个扇区这个值不能为0而且必须是2的整数次方比如1248163264128但是这个值不能使每个簇超过32KB24 00 偏移地址0EH长度2 转换一下就是0024意思是保留区域中的保留扇区数为36个那么就可
33、以知道下面的FAT1区的开始的地址就是0x24200每个扇区的字节数 0x480002 偏移地址10H长度1 此卷中的FAT结构的份数为2另外一个是备份的C6 03 偏移地址24H长度2 每个FAT占用的扇区数转换一下为03C6那么每个扇区占用的字节数就是0x03C6200 78C00根据启动区FAT1FAT2根目录数据区的次序可以依次计算出它们的地址通过以上分析我们知道了启动区地址是0x00FAT1表的起始地址的为0x4800如图4-3所示FAT2表的起始地址为0x48000x78C00 0x7D400如图4-4所示根目录区的起始地址为0x7D4000x78C00 0xF6000如图4-5所
34、示图4-3 FAT1的起始地址图4-4 FAT2的起始地址图4-5 根目录的起始地址从SD卡中读取数据需要给出数据的地址而且每次读取都是一个整扇区512个字节找出这些地址后可以很方便的找到数据由此可见读取0扇区的内容我们就知道FAT文件系统的重要参数了现在分析下根目录区的内容根据前面得到的根目录地址0xF6000通过软件查看它的内容如图4-6所示这里使用的是FAT32短文件目录项每32个字节表示一个文件文件夹也是具体含义分别如下5A 53 44 4C 20 20 20 20驱动器的名称8个字节图4-6 根目录中的数据54 45 53 54 20 20 20 20 偏移地址20H长度8 文件名T
35、EST 空缺部分是空格 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 起始簇的簇号为0377 2D 00 00 偏移地址3CH长度4 文件长度2D77就是11639字节 从文件的大小可以计算出需要占用多少个簇根据前面的数据每个簇放8个扇区每个
36、扇区512个字节那么一个簇的空间就是4096字节了即4KB那么11639字节需要3个簇这三个簇的开始的地址就可以计算出来了通过起始簇号计算得到起始簇的地址0xF6000根目录区地址03-2080x200 0xF7000第一个簇开始地址这里03减去的02的意思是因为簇号都是从2开始的第二个簇号存放在0x48000304因为四个字节存一个簇号 0x480C中通过图4-7可知0x480C里面的内容是04 00 00 00即第二簇号为04此时第二个簇的地址0xF600004-2080x200 0xF8000依次查看FAT1表可知第三个簇号为05地址0xF600005-2080x200 0xF9000继
37、续看看下一个簇号内容为0x0FFFFFFF说明文件放置结束图4-7 FAT1表中的内容通过以上分析可以得到该文件数据存放的起始地址了0xF7000第一个簇开始地址、0xF8000第二个簇开始地址、0xF9000第三个簇开始地址他们在文件系统中存储的数据分别如图图4-8、图4-9、图4-10所示由此就可以获得该文件的数据了图4-8 簇中的数据1图4-9 簇中的数据2图4-10 簇中的数据35 系统软件设计51 STM32程序调试511 STM32启动简析要想较清楚的了解STM32的启动则必然得对STM32库有初步的认知STM32库是有ST公司针对STM32提供的函数接口即APIApplicati
38、on Program Interface开发者可调用这些函数接口来配置STM32的寄存器使使用者得于脱离最底层的寄存器操作有开发快速易于阅读维护成本低等优点实际上库是架设在寄存器与用户驱动层之间的代码向下处理与寄存器直接相关的配置向上为用户提供配置寄存器的接口库开发配置与直接配置寄存器方式区别如图5-1所示对于STM32因为外设资源丰富带来的必然是寄存器的数量和复杂度的增加这是如果直接配置则开发速度慢程序可读性差这两个缺陷直接影响了用户使用效率而库开发方式则正好弥补了这两个缺陷相对于库开发的方式直接配置方式产生的代码会相对减少但因为STM32有充足的资源权衡库开发的优势与不足本次设计采用库开发
39、方式实现寄存器的配置图5-1 驱动方式STM32采用的是Cortex-M3内核内核是整个微控制器的CPU该内核是ARM公司设计的一个处理器体系结构但ARM公司不生产芯片只做技术授权使之产生不同商家的外围硬件差异性为了解决不同芯片厂商生产的Cortex微控制器软件的兼容性问题ARM与芯片厂商建立了CMSIS标准CMSIS标准中主要的为CMSIS核心层它包括内核函数层其中包括用于访问内核寄存器的名称地址定义主要有ARM公司提供设备外设访问层提供了片上的核外外设的地址和中断定义主要由芯片生产商提供课件CMSIS层位于硬件层和操作系统或用户之间可以为接口外设实时操作系统提供简单的处理器软件接口屏蔽了硬
40、件差异对软件的移植产生极大地好处STM32的库就是按照CMSIS的标准建立STM32的30版本库可以从官网获得解压后找到6>HTML文件和Library文件HLML文件时告诉我们ST公司已经为你写好了每个外设的驱动Library文件下是驱动库的源代码和启动文件使用时将Library文件下的库函数文件添加到工程中这样就基本完成了寄存器的配置相关函数文件功能如下core_cm3c文件该文件可用于屏蔽不同编译器的差异但最重要的时该文件中包含了stdinh这个头文件它是独立于处理器之外的主要作用是提供一些新类型的定义system_stm32f10xc文件该文件是ST公司提供的遵守CMSIS标准功
41、能是设置系统时钟和总线时钟通过M3核的核内寄存器来对8MHz的时钟进行倍频 分频或者使用芯片内部的时钟所有的外设都是与时钟的频率有关所以这个文件的时钟配置是很关键的System_stm32f10xc文件在实现系统时钟时要用到PLL这就需要操作寄存器寄存器都是通过存储器映射的方式来访问的因此该文件包含stm32f10xh这个头文件stm32f10xh文件这个文件非常重要是一个非常底层的文件所有处理器厂商都会对内存的操作封装成一个宏即我们通常说的寄存器并且把这些实现封装成一个系统文件包含在相应的开发环境中这样在应用程序时只需将这个头文件包含进来stm32f10x_pppc和stm32f10x_pp
42、ph文件这是ST公司针对每个STM32外设而编写的库函数文件属于CMSIS的设备外设函数其中ppp表示外设名称startup_stm32f10x_hds上电后微控制器无法从硬件上定位main函数的入口地址需要一个启动文件来处理Library文件夹下几种不同的启动文件本次使用的STM32F103VET6有64KRAM512KROM属于高密度产品所以选择该文件启动文件的作用便是负责执行微控制器从复位到开始执行main函数中间这段时间称为启动过程所必须进行的工作总的来说启动文件的作用是初始化堆栈指针SP初始化程序计数器指针PC设置堆栈的大小设置异常向量表的入口地址配置外部SRAM作为数据寄存器设置C
43、库的分支入口_main在库目录ProjectSTM32F10x_Stdperiph_Template目录下存放了官方的一个库工程模板我们在库建立一个完整的工程时还需要添加这个目录下的stm32f10x_itcstm32f10x_ithstm32f10x_confh这三个文件stm32f10x_itc文件是专门用来编写中断服务函数的在修改前这个文件已经定义了一些系统异常的接口其它普通中断服务函数有我们自己添加而这些中断服务函数的接口可以在启动文件中找到stm32f10x_confh文件这个文件包含了stm32f10xh是用来配置使用了什么外设的头文件用这个头文件可以很方便的增加或删减上面driv
44、e目录下的外设驱动函数库如gpiorccspiusart的外设库函数512 STM32程序测试当建立好工程并添加了上述函数后接下来的便是测试芯片引脚功能本次设计通过配置GPIO寄存器来控制LED灯的亮灭以验证STM32芯片驱动程序的正确与否想要控制LED灯当然是通过控制STM32芯片的IO引脚电平的高低来实现在STM32芯片上IO引脚可以被软件设置成各种不同的功能如输入或输出所以被称为GPIO而GPIO引脚又分被为GPIOAGPIOBGPIOE五组每组端口分为0至15共16个不同引脚因此控制LED的步骤如下GPIO端口引脚多 选定需要控制的特定引脚 GPIO功能如此丰富 配置需要特定的功能控制
45、LED的亮和灭 设置GPIO输出电压的高低要控制GPIO口就要涉及到控制相关的寄存器通过查找STM32手册得GPIO相关配置器描述如图5-2图中的7个寄存器可分为以下四类配置寄存器选定GPIO的特定功能最基本的如选择作为输入或者输出接口数据寄存器保存GPIO的输入电平或将要输出电平为控制寄存器设置某引脚的数据位1或0控制输出电平锁定寄存器设置某锁定引脚后就不能修改其配置图5-2 GPIO寄存器描述关于寄存器名称上标号x的意义如GPIOx_CRLGPIOx_CRH这个x的取值可以是A到E表示这些寄存器也是跟GPIO一样也是分组的即对于GPIOA和GPIOB他们有一组互不相干的寄存器如控制GPIO
46、A的寄存器名为GPIOA_CRLGPIOA_CRH而控制GPIOB则是不同的被命名为GPIOB_CRLGPIOB_CRH实现控制LED灯亮灭的思路框图如图5-3所示图5-3 控制LED灯框图对于GPIO端口没个端口有16个引脚每个引脚的模式有寄存器的四个位控制每四位又分为两位控制引脚配置CNFy10两位控制引脚的模式及最高速度MODEy10其中y表示第y个引脚配置GPIO引脚模式的一共有两个寄存器CRH是高寄存器用来配置高8位引脚pin8-pin15如果要配置pin0-pin7引脚则要在CRL中进行配置513 STM32时钟系统STM32芯片为了实现低功耗设计了一个功能完善但却非常复杂的时钟系
47、统普通的MCU一般只要配置好GPIO的寄存器就可以使用了但STM32还有一个步骤就是开启外设时钟STM32整体时间系统如图5-4所示图5-4 STM32时钟树时钟源这个图说明了STM32时钟走向从图的左边开始从时钟源一步步分配到外设时钟从时钟频率来说分为高速时钟和低速时钟高速时钟是提供给芯片主体的主时钟而低速时钟只是提供给芯片中的RTC实时时钟及独立看门狗使用从芯片角度来说时钟源分为内部时钟和外部时钟源内部时钟是芯片内部RC振荡器产生的启振较快所以时钟在芯片刚上电的时候默认使用内部高速时钟而外部时钟信号是由外部的晶振输入的在精度和稳定性上都有很大优势所以上电之后再经由软件配置转而采用外部时钟信
48、号所以STM32具有四个时钟源高速外部时钟HSE以外部晶振做时钟源晶振频率范围可取4-16MHz本次使用8MHz的晶振高速内部时钟HSI有内部RC振荡器产生频率为8MHz但不稳定低速外部时钟LSE一外部晶振做时钟源主要提供给实时时钟模块一般采用32768KHz低速内部时钟LSI有内部RC振荡器产生也主要提供给实时模块频率大约为40KHz对于高速外部时钟其时钟流程如下从左端的OSC_INOSC_OUT开始这两个引脚分别接到外部晶振的两端8MHz的时钟遇到了第一个分频器PLLXTPRE在这个寄存器中可以通过寄存器配置选择它的输出时钟可以是对输入时钟的二分频或不分频本次设计选择部分频所以经过PLLX
49、TPRE后还是8MHz的时钟8MHz时钟遇到开关PLLSRC我们可以选择其输出输出为外部高速时钟HSE或是内部高速时钟HSI这里选择输出为HSE接着遇到锁相环PLL具有倍频作用这里可以输入倍频因子倍频因子设定为9倍频即经过PLL之后时钟从原来的8MHZ的HSE变为72MHz的PLLCLK紧接着遇到一个开关SW经过这个开关之后就是STM32的系统时钟SYSCLK了通过这个开关可以选择HSIPLLCLK或者HSE作为SYSCLK本次设计选择PLLCLK作为SYSCLK即72MHzPLLCLK在输入到SW之前还流向了USB预分频器这个预分频器的输出为USB的外设时钟USBCLK汇到SYSCLKSYS
50、CLK进过AHB预分频器分频后再输入到其它外设如输出到称为HCLKFCLK的时钟还直接输出到SDIO外设作为SDIOCLK时钟存储控制器FSMC的FSMCCLK时钟GPIO外设是挂载在APB2总线上的APB2时钟是APB2预分频器的输出而APB2预分频器的时钟来源于AHB预分频器后的时钟均设置为不分频所以GPIO外设时钟也就为72MHzHCLKFCLKPCLK1PCLK2时钟来源及作用如下从时钟树的分析经过一系列的倍频分频后得到几个与设计密切相关的的时钟SYSCLK系统时钟STM32大部分器件的来源主要有AHB预分频器分配到各个部件HCLK由AHB预分频器直接输出得到他是高速总线AHB的时钟信
51、号提供给存储器DMA及cortex内核是cortex内核运行的时钟cpu主频就是这个信号它的大小与STM32运算速度数据存取速度密切相关FCLK同样由AHB预分频器输出得到是内核的自由运行时钟自由表现在它不来自时钟HCLK因此在HCLK时钟停止时它也急需工作它的存在可以保证在处理器休眠时也能够采样到中断和跟踪休眠时间它与HCLK互相同步PCLK1外设时钟由APB1预分频器输出得到最大频率为36MHz提供给挂载在APB1总线上的外设PCLK2外设时钟由APB2预分频器输出得到最大频率为72MHz提供给挂载在APB2总线上的外设为什么STM32的时钟系统如此复杂有倍频分频及一系列的外设时钟的开关需
52、要倍频是考虑到电磁兼容性如果外部直接提供一个72MHz的晶振太高的振荡频率可能会给制作电路板带来一定的难度分频是因为STM32既有高速外设又有低速外设各种外设的工作频率不尽相同如同pc机上的南北桥把高速设备和低速设备分开来管理最后每个外设配备上外设时钟的开关当不使用某个外设时可以把 特定的外设时钟关闭从而降低STM32的整体功耗52 TFT显示驱动本次设计的LCD触摸屏的驱动包含基于FSMC接口的16位TFT接口初始化LCD的控制器XPT2046的初始化屏幕坐标的建立窗口的建立指定坐标画点及其颜色的设置ASCII字符的写入字符颜色的控制控制器寄存器的读取显示字符串其流程图如5-55-6所示图5
53、-5基于FSMC接口的16位TFT接口初始化 图5-6 LCD的控制器驱动流程由于显示设备LCD具有触摸控制功能所以本次课题设计采用触摸控制以实现设计课题的任务功能即实现歌曲播放的快进和快退功能其软件控制如图5-7所示图5-7 触摸按键功能流程图触摸屏的坐标原点标度和LCD的坐标原点标度不一样且电阻式触摸屏的坐标原点通常不在有效点触区内因此必须进行坐标变换本设计采用四点定位法其方法如下假设ABCD分别为触摸屏对应LCD四个顶点的坐标点分别触击这四点得到四组坐标值根据式5-1计算出触摸屏中心点坐标 5-1设 则可得触点坐标公式 5-2式5-2中x和y分别为触点在x工作面和y工作面上产生的电压数字
54、量的测量值可通过采样得到 xy 反映了触点在触摸屏上的坐标W和H分别是LCD显示屏X轴和Y轴上的象素点总数 xlcdylcd 为触点映射到LCD显示屏上的像素点坐标53 SD卡读取驱动531 SD卡总线拓扑本次设计将SD卡至于SD模式下进行主从机通讯SD总线有6根通讯线和3根电源供应线CMD命令线是双向信号线主机和卡通过push pull模式工作CLK时钟是从主机到卡的信号CLK通过push pull模式工作DAT03数据线是双向信号线主机和卡通过push pull模式工作VDDVDD是SD卡的电源供应线VSS01VSS是两根地线其总线拓扑框图如图5-8所示图5-8 总线框图532 寄存器与协
55、议寄存器描述SD卡各寄存器如表5-2所示表5-2名称宽带描述CID128卡标识号RCA16相对卡地址本地系统中卡的地址动态变化在主机初始化时确定CSD128卡描述数据卡操作条件相关的信息数据SCR64SD配置寄存器SD卡特定信息数据OCR32操作条件寄存器主机STM32F103系列的相关SDIO寄存器如表5-3SD总线协议SD总线通信是基于命令和数据位流方式的由一个起始位开始一个停止位结束命令命令式开始操作的标记命令发送一个卡寻址命令或所有连接的卡广播命令命令在CMD线上串行传输响应响应是从寻址卡发或所有连接的卡同步送给主机用来响应接受到的命令标记命令在CMD线上串行传输数据数据可以通过数据线在SD卡和主机间相互传送卡寻址通过会话地址方式实现地址在初始化的时候非配给卡SD卡总线上的基本操作时commandresponse表5-3寄存器名描述SDICONSDI控制寄存器SDIPRESDI波特率分频寄存器SDICCONSDI命令控制寄存器SDICSTASDI命令状态寄存器SDIDTIMERSDI数据忙时钟寄存器SDIDCONSDI数据控制寄存器SDIDCNTSDI数据剩余计数器寄存器SDIDCONSDI数据状态寄存器SDIDATSDI数据寄存器SDIMSKSDI中断屏蔽寄存器数据传送采用快方式数据块后接CRC校验位操作包
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国脱水蔬菜项目创业计划书
- 中国黑色家电电商项目创业计划书
- 中国计算器项目创业计划书
- 中国蓝莓深加工项目创业计划书
- 中国金融软件项目创业计划书
- 中国计算机硬件维修项目创业计划书
- 中国骨粉项目创业计划书
- 2025二手房购房定金合同范本
- 中国动态电压恢复器DVR项目创业计划书
- 中国电子商务服务项目创业计划书
- 【MOOC】电子技术实验-北京科技大学 中国大学慕课MOOC答案
- 昆明理工大学《物理化学(Ⅱ)》2023-2024学年第一学期期末试卷
- 【MOOC】数字电子技术-中南大学 中国大学慕课MOOC答案
- 交通管理扣留车辆拖移保管 投标方案(技术方案)
- 医院健康咨询合同范本
- 中国血管性认知障碍诊治指南(2024版)解读 课件
- 2024年“安全生产月”暨“安康杯”竞赛活动考试题库及答案
- 临床提高脓毒性休克患者1h集束化措施落实率PDCA品管圈
- 初一英语阅读理解100篇七年级上册英语阅读理解及答案
- 急性肺栓塞的急救护理
- 四川省攀枝花市(2024年-2025年小学五年级语文)部编版期末考试(下学期)试卷及答案
评论
0/150
提交评论