




已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编号 毕业设计说明书 论文 课 题 便携式音乐播放器设计 学 院 电子工程与自动化学院 专 业 电子信息科学与技术 学生姓名 学 号 指导教师 职 称 高级研究员 题目类型 题目类型 理论研究 实验研究 工程设计 工程技术研究 软件开发 2013 年 4 月 20 日 摘要 摘 要 随着电子行业的迅猛发展 人们对消费类电子产品的需求越来越高 多功能便携式 MP3 也越来越受大众的青睐 根据消费者的爱好需求 各种多功能的 MP3 层出不穷 其尽可能的吸收照相机 手机等电子产品的其它功能 本次系统设计采用 ARM Cortex M3 内核的 STM32F103VET6 作为微控制器 SD 卡作为存储介质 VS1003 作 为音频解码芯片以及 TFT 彩晶屏作为人际交互设备 设计一款可播放 mp3 wav 文件 格式的便携式音乐播放器 并实现相关功能 本次设计的重点是了解 FAT 文件系统的 构造 SD 卡的读取 VS1003 芯片的解码过程 人机交互设备的控制操作以及各主从 机之间的通讯方式 其中 STM32F103 系列集成了低功耗 IO 资源多 通信接口多 体积小 价格适中等多项优点 随着日本松下 东芝及美国 SanDisk 公司于 1999 年 8 月共同研制 SD 卡被广泛应用与闪存介质 并易于读取 VS1003 是一个多功能的 mp3 wav 解码芯片 自带 DAC 具有无相位差的立体声输出 TFT 显示屏集成了触 控特点使得人机交互更为简便 程序编写更为简洁 关键字 STM32F103VET6 SD 卡 VS1003 解码芯片 TFT 彩晶屏 便携式音乐播放器 摘要 Abstract With the rapid development of the electronics industry The consumer electronic products have been used more often by people because of their growing demand It s popular to have a Multi function portable MP3 for people with the increasingly favored by the public 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 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 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 other 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 the human computer interaction easier and programming more concise by integrating touch features Key words STM32F103VET6 SD card VS1003 decoder chip TFT display screen Portable Music Player 目录 目 录 引言 1 1 设计任务与思路 2 1 1 设计任务 2 1 2 设计思路 2 2 器件选择和系统框图 2 2 1 器件选择 2 2 2 系统框图与概述 2 3 硬件电路设计 4 3 1 电源模块 4 3 2 微控制器模块 5 3 3 SD 卡模块 6 3 4 音频解码模块 7 3 5 音频放大模块 8 3 6 彩晶显示模块 9 3 7 复位模块 10 4 FAT 文件系统 10 4 1 FAT 文件系统简介 10 4 2 FAT 文件系统的读取操作 12 5 系统软件设计 15 5 1 STM32 程序调试 15 5 1 1 STM32 启动简析 15 5 1 2 STM32 程序测试 17 5 1 3 STM32 时钟系统 19 5 2 TFT 显示驱动 21 5 3 SD 卡读取驱动 23 5 3 1 SD 卡总线拓扑 23 5 3 2 寄存器与协议 23 5 3 3 驱动流程图 26 5 4 VS1003 驱动设计 26 5 4 1 VS1003 总线拓扑 26 目录 5 4 2 VS1003 主要寄存器 28 5 4 3 VS1003 相关协议 29 5 4 4 读写时序 29 5 4 5 驱动流程与框图 30 5 5 系统软件流程图 31 6 实物与功能 31 6 1 实物总图 32 6 2 利用电池供电 33 6 3 支持WAV和MP3 格式 33 6 4 支持 SD 卡存储 34 6 5 可选择播放 34 6 6 可快进快退 35 7 自我总结 36 谢 辞 38 参考文献 39 附 录 一 40 附 录 二 46 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 1 页 引言 在 INTERNET 广泛普及的今天 MP3 音乐一起较小数据流量和近乎完美的播放效 果已经成为计算机和 INTERNET 上最流行的音乐格式了 将 CD 格式的音乐数据压缩 成 MP3 格式 音效相差无几 文件大小却至少可以压缩 12 倍 每首 PCM 格式的 CD 歌曲大约 40MB 至 50MB 数据流量 自韩国世韩公司 1998 年推出世界上第一台 MP3 随身听以来 MP3 播放器以其小巧外形 近乎于 CD 的音质 前卫的功能 越来越受 到消费者的青睐 也就成为业界甚至大众媒体关注的一个热门话题 它的记录媒介是 芯片或卡 无需转动部件 彻底摆脱磁盘和光碟的束缚 因而抗震性和节点性能更好 在市场消费的刺激下 各大公司纷纷推出了自己的 mp3 播放器产品 除了 Micronas 方 案 ST 方案 TI 软解压单芯片方案 还有台湾创品方案 美国 Sigmatel 方案等 进入 2004 年 当 MP3 在容量 外观 音质上的发展无法再吸引更多眼球的时候 开始转向 多功能发展 正如在手机身上所发生的一切 人们对于 MP3 的要求 不再是单一的欣 赏音乐 而是向手机一样身兼多职 作为全球第一款闪存式彩屏 MP3 信利 MP301 的推出引起了 MP3 市场的巨大关 注 除了彩屏的加入 MP301 还支持图书 图片浏览及游戏功能 多功能融合 是消费 类电子产品的发展趋势 MP3 播放器的诞生 为传统随身听带来了致命打击 曾几何时 MP3 和 MD 之间 的斗争成为业界最热门的话题 当时甚至多数人都认为 MP3 由于音质上的原因将白给 MD 但事实上 MP3 的发展远远超出了 MD 支持者们的预想 直至今日 MP3 已成 为随身听市场的主流产品 并成为了继手机之后最为广泛使用的个人随身电子产品 抱着学习的态度 秉着严谨的精神完成此次音乐播放器的设计 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 2 页 1 设计任务与思路 1 1 设计任务 本设计课题是一个软硬件相结合的设计类题目 要求设计一个具有如下要求的便 携式音乐播放器 利用电池供电 支持 wav 和 mp3 格式 支持 U 盘 CF 卡或者 SD 卡 可选择播放 可快进快退 1 2 设计思路 整个系统主要由微控制器 音频解码部分 音效处理部分 SD 卡部分 人机交互 部分 按键复位部分 电源部分 程序口下载部分组成 整个系统由 MCU 控制 各个 部分协调运作 2 器件选择和系统框图 2 1 器件选择 该系统要求能够对 mp3 wav 格式的音频文件进行解码 处理起来速度是有要求 的 尤其是对 320Kbps 的 MP3 格式数据流的处理 必须非常快 才能实现 MP3 的流 畅播放 可供选择的八位机有 AVR PIC 可供选择的 32 位处理器有 SAMSUNG STM32 ATMEL 等 选择 MCU 优先考虑于拥有丰富的 RAM 八位机 RAM 主要靠扩展 内部 RAM 一般在 4Kbyte 以内 32 位机里面 SAMSUNG 一般不 内带 RAM 也要外扩 出于成本的考虑 外扩 RAM FLASH 芯片必然会增加成本 所以控制芯片最好选择自带 RAM FLASH 本次课题设计选择使用 STM32F103VET6 作为微控制器 本次课题设计要求的储存媒介是 U 盘 CF 卡或者 SD 卡 SD 卡以其价格低 体积 小 扩存容易等优势迅速占据市场 使用也越来越广泛 以此同时 各种 MCU 同时也 在内部集成了 SD 控制器 出于成本和使用方便等因素的考虑 本次课题设计选择使用 SD 卡作为储存媒介 由于使用了 ARM7 处理器 MP3 解码可以有两种方法 一是通过 ARM 处理器软 解码 通过对 MP3 数据格式的解析实现 MP3 播放 二是通过外部解码芯片直接解码 第一种方法在解码高码率的 MP3 时 ARM7 处理能力吃紧 而且 STM32 还需要外部 DAC 来做音频输出 所以采用第二种方法进行解码 MP3 常见的解码芯片有 VS100X 系列和 STA01 系列 STA01 需要外接 DAC 做音频输出 而 VS1003自带 DAC 且解 码的文件格式包含 mp3 和 wav 另外它还可以实现录音功能 方便以后进行功能的拓展 应用 人机交互设备包括输入设备和输出设备 选择硬件考虑到程序的调试控制 这里 选择一款 3 寸的 TFT 液晶屏 其分辨率位 240 400 工作模式为 16 位数据模式 通讯 速度较快 2 2 系统框图与概述 目录 本次课题设计采用 STM32F103VET6 作为为控制器读取 SD 卡内的音乐文件 并 将数据送入 VS1003 进行音频解码 得到模拟的音乐流 再进过音频放大送入耳机 同 时结合 TFT 液晶屏进行人机交互控制 其系统框图如图 2 1 所示 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 3 页 图 2 1 系统框图 3 硬件电路设计 3 1 电源模块 电源模块是电子设备中必不可少的一部分 它位设备提供了能量 如图 3 1 所示 为该系统的电源模块电路 5V 电压经过 AMS1117 2 5 AMS1117 2 8 和 AMS1117 3 3 产生 2 5V 2 8V 和 3 3V 直流电压供系统使用 C31 可以防止电感效应而产生自激 C33 用来减小由于负载电流瞬时变化而引起的高频干扰 C32 是进一步减小输出脉动 和低频干扰 使电源输出更加稳定 sp 位电源开关 D1 和 D2 位电源指示灯 图 3 1 电源模块电路 STM32F103VET6 微处理器 JTAG 程序下载口 SD 卡 电 源 部 分 VS1003 音频解码音频放大耳机接口 TFT 触摸液晶 复 位 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 5 页 3 2 微控制器模块 微控制器 STM32F103VET6 控制着整个系统协调运作 STM32F103VET6 基于 ARM Cortex M3 内核设计 片上集成了丰富的数字和模拟资源 允许最高 72MHz 的工 作频率是一款性价比很高的 32 位 ARM 处理器 其管脚封装图如图 3 2 自带 128KB 闪存和 20KB 的 RAM 具有 2 个 SPI 接口 2 个 IIC 接口 3 个 USART 接口一个 USB 接口和一个 CAN 总线接口 高达 80 个 I O 口资源 采用外部 8MHz 时钟经过倍频因 子 PLLMUL 可倍频至 72MHz 通过一些列的 AHB 分频器可设置各种外设所需的频率 以达到低功耗的目的 图 3 2 STM32F103VET6 管脚图 微控制器电路模块如图 3 3 图中 BOOT0 为插针 用于选择启动模式 当 BOOT 1 时用户闪存存储器被选为启动区域 此时可以通过串口下载程序 当 BOOT 0 时 系统存储区被选为启动区域 电容 C11 C12 C13 和 C15 为谐振电容 有助于系统时钟和 RTC 时钟的启振 在设计时 晶振要尽可能靠近芯片 电容 C14 C16 C17 C20 位芯片电源引脚的旁路电容 能够起到稳定电源的作用 微控 制器各引脚接口描述如表 3 1 所示 图 3 3 微控制器模块电路 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 6 页 表 3 1 STM32F103VET6 主要引脚接口描述 STM32F103VET6 引脚序号引脚序号接口类型接口类型接口作用接口作用 8 9RTC 时钟晶振接口32 768KHz 晶振 Y1 12 13系统时钟接口8MHz 晶振 Y2 83SD 卡命令控制 SDIO CMD 80SD 卡时钟控制 SDIO CLK 65 66 78 79 SD 卡控制器接口 SD 卡数据通讯 SDIO DATA 97异步复位端 低电平有效 XREST 51片选输入端 低电平有效 XCS 63数据片选端 字节同步 XDCS BSYNC 52串行总线时钟 SCLK 54串行输入 SI 53 VS1003 控制接口 串行输出 SO 98复位 88片选 30时钟 SCK 31MISO 32MOSI 38 46 55 57 61 62 81 82 TFT 液晶屏接口 16 位数据接口 DATA 3 3 SD 卡模块 SD 卡 Secure Digital Memory Card 中文翻译为安全数码卡 是一种基于半导体 快闪记忆器的新一代记忆设备 SD 卡的物理规格 管脚功能和数据传输协议时 MMC Multimedia Card 前向兼容的 它被广泛用于便携式装置上使用 例如数码相 机 个人数码助理 PDA 和多媒体播放器 SD 卡由日本松下 东芝及美国 SanDisk 公 司于 1998 年共同开发研制 大小犹如一张邮票的 SD 记忆卡 重量只有 2 克 但却拥 有高记忆容量 快速数据传输率 极大的移动性以及很好的安全性 SD 卡标准是 SD 卡协会针对可移动存储设备设计专利并授权的一种标准 主要用 于制定卡的外形尺寸 电气接口和通讯协议 其中 SD 卡外形尺寸如图 3 4 引脚功能 如表 3 2 图 3 4 SD 卡外形尺寸 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 7 页 表 3 2 SD 卡引脚图 SD modeSPI modePin NameTypeDiscriptionNameTypeDiscription 0DATA2I O PPDATA Line RSVIReserved 1DATA3I O PPDATA Line CSIChipSelect 2CMDPPCommandDataInIHost to card 3VSSISGroundVSSISGround 4VDDSVoltageVDDSSupply Voltage 5CLKIClockCLKIClock 6VSS2SVoltageVSS2SVoltage 7DATA0I O PPDATA Line DataOutOCard to Host 8DATA1I O PPDATA Line RSVUReserved 由于 SD 卡的广泛引用 各种常用 MCU 内部都集成了 SD 控制器 而恰好本次设 计选取的 STM32F103VET6 内部也含有 SD 控制器接口 为了获得更大的数据传输速 度 本次设计采用 SD 模式进行主从机之间的通讯 该模式下具有 6 根通讯线 Data0 3 CMD CLK 和三根电源线 VSS1 VSS2 VDD 电路模块如图 3 5 其中 RVA0 RVA4 为增强驱动能力 图 3 5 SD 卡电路模块 3 4 音频解码模块 本次课题设计采用的解码芯片是 VS1003 VS1003 是芬兰 VLSI 公司生产的单芯片 MP3 WMA 音频解码芯片 其拥有一个高性能 低功耗的 DSP 处理器核 VSDSP 5KB 的指令 RAM 0 5KB 的数据 RAM 串行的控制和数据输入接口 4 个通用的 I O 口 1 个 UART 口 1 个可变采样率的 DAC 1 个立体声 DAC 以及音频耳机放大器 其内 部结构如图 3 6 所示 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 8 页 图 3 6 VS1003 内部结构 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 9 页 VS1003 通过一个串行接口来接收输入的比特流 它可以作为一个系统的从机 输 入的比特流被解码 然后通过一个数字音量控制器到达一个 18 位过采样多位 DAC 通过串行总线控制解码器 除了基本的解码 在用户 RAM 中它还可以作其他 特殊应用 例如 DSP 音效处理 其内部部分引脚功能如表 3 3 表 3 3 VS1003 部分引脚功能表 引脚号引脚号管脚名称管脚名称管脚功能管脚功能 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模拟地 3XRESET低电平有效 异步复位端 8DREQ数据请求 输入总线 9GPIO2 DCLK通用 I O2 串行数据总线时钟 10GPIO3 SDATA通用 I O3 串行数据总线数据 13XDCS BSYNC数据片选端 字节同步 17 和 18XTALO XTALI 晶振输出和晶振输入 23XCS片选输入 低电平有效 28SCLK串行总线的时钟 29 和 30SI 和 SO串行输入和串行输出 39 和 46RIGHT 和 LEFT右声道输出和左声道输出 在设计 VS1003 解码电路时 数字地与模拟地必须相互连接并尽量靠近 VS1003 以 避免锁存上拉 为了能播放 48KHz 采样率的音频文件 输入时钟使用 12 288MHz 具 体设计电路如图 3 7 所示 VS1003 通过 MISO MOSI SCK SPI 接口 来接收输入的 MP3 数据 经过 VS1003 内置的采样 DAC 转换为音频模拟量 最后通过 Left Right 和 Gbuf 输出 表 3 7 VS1003 接口电路 3 5 音频放大模块 本次课题设计采用的音频功放芯片是 TDA1308 TDA1308 是 AB 类的数字音频 CD 专用耳机功放芯片 低电压 低失真 高速率 强输出等优异的性能是以往的 TDA2822 TDA7050 LM386 等 经典 功放望尘莫及的 芯片内采用 MOS 管输出 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 10 页 可直接推动低阻抗耳机 因为封装和功能引脚位与一般的双运放相同 在特定条件下 也能当双运放使用 在低供电电压条件下 性能比一般的运放要好 因其封装体积小 低电压低功耗等特点 主要应用在便携式数字音频电路中 如 discman 光驱的耳放电 路等 其引脚配置与功能方框图如图 3 8 图 3 8 TDA1308 引脚配置和功能方框图 在设计音频放大电路模块时 采用了同相放大电路的接法 设计电路如图 3 9 输 入信号电压 A5V 加到运放的同相输入端 和地之间 输出电压通过 RV1 和 RV2 的 分压作用 可得电压增益 Av 1 RV2 RV1 本次设计采用 RV1 RV2 使得电压放大为 原来的两倍 输出至耳机接口 图 3 9 音频放大电路 3 6 彩晶显示模块 显示器采用奋斗 STM32 开发板 3 0TFT 240 400 本次设计的 LCD 触摸屏所采 用的控制器为 XPT2046 XPT2046 是一种典型的逐次逼近型模数转换器 SAR ADC 包含了采样 保持 模数装换 串口数据输出等功能 芯片内部集成有一个 2 5V 的内部 参考电压 也可以从外部直接输入参考电压 其中 接口采用 MCU 的 FSMC 功能 LCD 片选 CS 采用 FSMC NE1 P88 FSMC A16 P58 作为 LCD 的 RS 选择 FSMC nWE1 P86 作为 LCD 的 WR FSMC nOE P85 作为 LCD 的 RD LCD 的 RESET 脚用 CPU 的 PE1 P98 LCD RST FSMC D0 FSMC D15 和 LCD 的 D1 D8 D10 D17 相互连接 触摸屏接口 采用 SPI1 接口 片选位 PB7 SPI1 CS3 由于 LCD 背光采用恒流源芯片 PT4101 控制 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 11 页 采用 PWM 控制信号控制背光的明暗 PWM 信号由 PD13 LIGHT PWM 来控制 触摸 电路的中断申请有 PB6 INT 来接收 其设计电路如图 3 10 所示 图 3 10 彩晶显示电路 3 7 复位模块 复位电路如图 3 11 所示 当接通电源时 电容 C10 进行充电使得 nRST 为高电平 按下复位按键后 电容 C10 放电为低电平实现复位功能 图 3 11 复位电路 4 FAT 文件系统 4 1 FAT 文件系统简介 MP3 文件 BMP TXT 等文件在 SD 卡中是以 FAT 11 的文件格式存储的 FAT 即文 件配置表 本系统采用 FAT16 32 以 FAT32 为例 其数据信息常分为 5 个部分 MBR 区 DBR 区 FAT 区 FDT 区和 DATA 区 由于 SD 卡一般不做引导盘 一般 也不分区 因此通常无 MBR 区 直接从 DBR 区开始 各分区的含义如下 MBR 区 主引导记录区 该区存储了分区表等信息 位于 SD 卡的扇区 0 物理扇 区 在其分区信息里面记录了 DBR 所在的位置 DBR 区 内容为系统引导记录 它包括一个引导程序和一个被称为 BPB Bios Parameter Block 的本分区参数记录表 BPB 参数块记录着本分区的起始扇区 结束 扇区 文件存储格式 根目录大小 FAT 个数 分配单元大小等重要参数 FAT 区 称为文件分配表 FAT 表 一般一个卡上会存在 2 个 FAT 表 一个用 作备份 一个用作使用 FAT 表一般紧随 DBR 另一个 FAT 表则紧随第一个 FAT 表 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 12 页 FAT 表记录了每个文件的位置和区域 是一种链式结构 FAT 以 F8 FF FF 0F FF FF FF FF 这样的 8 个字节为表头 用以表示 FAT 表的开始 后面的数据每四个字节为一 个簇项 从第 2 簇开始 用来标记下一个簇所在的位置 这样每个位置都存储了下一 个簇 只要按着这个表走 就可以找到文件的所有内容 如果找到下一个簇的位置 里面记录的是 FF FF FF 0F 代表这个文件到此就结束了 没有后续簇了 这样一个 文件的读取就结束了 FTD 区 该区的内容为文件目录表 FAT 文件系统的一个重要思想是把目录 文 件夹 当作一个特殊的文件来处理 FAT32 甚至将根目录当作文件处理 FAT 分区中 所有目录文件 实际上可以看作是一个存放其它文件 文件夹 入口参数的数据表 因此 目录占用空间的大小并不等同于其下所有数据的大小 但也不等于 0 通常占很 小的空间 其具体的存储原理是 不管目录文件所占空间为多少簇 一簇为多少扇区 多少字节 系统都会以 32 个字节为单位 进行目录文件所占簇的分配 各个字段定义 如表 4 1 所列 DATA 区 该数据区存放文件的内容 SD 卡所占用的空间绝大部分为此部分 如 果文件长度大于一个簇的大小 需要多个簇来存放该文件 这些簇通过 FAT 链表串连 起来 表 4 1 文件目录表各字段定义 FAT32 文件目录项 32 个字节的定义 字节偏移量字数量定义 0 78文件名 8 103扩展名 0 x00 读写 0 x01 只读 0 x02 隐藏 0 x04 系统 0 x08 卷标 0 x10 子目录 111 属 性 字 节 0 x20 归档 121系统保留 131创建时间的 10 毫秒位 14 152文件创建时间 16 172文件创建日期 18 192文件最后访问时间 20 212文件起始簇号的高 16 位 22 232文件的最近修改时间 24 252文件的最近修改日期 26 272文件起始簇号的低 16 位 28 314表示文件的长度 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 13 页 4 2 FAT 文件系统的读取操作 一般硬盘的数据结构是按图4 1而建立的 图 4 1 FAT 文件系统结构图 启动区的内容 也就是第一个扇区 使用 WinHex 软件查看 如图 4 2 所示 其中 带下划线或点线部分为有用内容 具体含义依次如下 图 4 2 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区的开始的地址就是 0 x24 200 每个扇区 的字节数 0 x4800 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 14 页 02 偏移地址10H 长度1 此卷中的FAT结构的份数为2 另外一个是备份的 C6 03 偏移地址24H 长度2 每个FAT占用的扇区数 转换一下 为03C6 那么 每个扇区占用的字节数就是0 x03C6 200 78C00 根据启动区 FAT1 FAT2 根目录 数据区的次序 可以依次计算出它们的地址 通过以上分析我们知道了启动区地址是 0 x00 FAT1 表的起始地址的为 0 x4800 如图 4 3 所示 FAT2 表的起始地址为 0 x4800 0 x78C00 0 x7D400 如图 4 4 所示 根 目录区的起始地址为 0 x7D400 0 x78C00 0 xF6000 如图 4 5 所示 图 4 3 FAT1 的起始地址 图 4 4 FAT2 的起始地址 图 4 5 根目录的起始地址 从 SD 卡中读取数据需要给出数据的地址 而且每次读取都是一个整扇区 512 个 字节 找出这些地址后 可以很方便的找到数据 由此可见读取 0 扇区的内容 我们就知道 FAT 文件系统的重要参数了 现在分析 下根目录区的内容 根据前面得到的根目录地址 0 xF6000 通过软件查看它的内容如 图 4 6 所示 这里使用的是 FAT32 短文件目录项 每 32 个字节表示一个文件 文件夹 也是 具体含义分别如下 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 15 页 5A 53 44 4C 20 20 20 20 驱动器的名称 8 个字节 图 4 6 根目录中的数据 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 个簇 这三个簇的开始的地址就可以计算出来了 通过起始簇号计算得到起始簇的地址 0 xF6000 根目录区地址 03 2 08 0 x200 0 xF7000 第一个簇开始地址 这里 03 减去的 02 的意思是因为簇号都是从 2 开始的 第二个簇号存放在 0 x4800 03 04 因为四个字节存一个簇号 0 x480C 中 通过图 4 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 继续看看下一个簇号 内容为 0 x0FFFFFFF 说明文件放置结束 图 4 7 FAT1 表中的内容 通过以上分析可以得到该文件数据存放的起始地址了 0 xF7000 第一个簇开始 地址 0 xF8000 第二个簇开始地址 0 xF9000 第三个簇开始地址 他们在文件系 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 16 页 统中存储的数据分别如图图 4 8 图 4 9 图 4 10 所示 由此就可以获得该文件的数据了 图 4 8 簇中的数据 1 图 4 9 簇中的数据 2 图 4 10 簇中的数据 3 5 系统软件设计 5 1 STM32 程序调试 5 1 1 STM32 启动简析 要想较清楚的了解 STM32 的启动则必然得对 STM32 库有初步的认知 STM32 库 是有 ST 公司针对 STM32 提供的函数接口 即 API Application Program Interface 开 发者可调用这些函数接口来配置 STM32 的寄存器 使使用者得于脱离最底层的寄存器 操作 有开发快速 易于阅读 维护成本低等优点 实际上 库是架设在寄存器与用户驱动层之间的代码 向下处理与寄存器直接相 关的配置 向上为用户提供配置寄存器的接口 库开发配置与直接配置寄存器方式区 别如图 5 1 所示 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 17 页 对于 STM32 因为外设资源丰富 带来的必然是寄存器的数量和复杂度的增加 这是如果直接配置则开发速度慢 程序可读性差 这两个缺陷直接影响了用户使用效 率 而库开发方式则正好弥补了这两个缺陷 相对于库开发的方式 直接配置方式产 生的代码会相对减少 但因为 STM32 有充足的资源 权衡库开发的优势与不足 本次 设计采用库开发方式实现寄存器的配置 图 5 1 驱动方式 STM32 采用的是 Cortex M3 内核 内核是整个微控制器的 CPU 该内核是 ARM 公司设计的一个处理器体系结构 但 ARM 公司不生产芯片 只做技术授权 使之产生 不同商家的外围硬件差异性 为了解决不同芯片厂商生产的 Cortex 微控制器软件的兼 容性问题 ARM 与芯片厂商建立了 CMSIS 标准 CMSIS 标准中主要的为 CMSIS 核心层 它包括 1 内核函数层 其中包括用于访问内核寄存器的名称 地址定义 主要有 ARM 公司提供 2 设备外设访问层 提供了片上的核外外设的地址和中断定义 主要由芯片生 产商提供 课件 CMSIS 层位于硬件层和操作系统或用户之间 可以为接口外设 实时操作系 统提供简单的处理器软件接口 屏蔽了硬件差异 对软件的移植产生极大地好处 STM32 的库就是按照 CMSIS 的标准建立 STM32 的 3 0 版本库可以从官网获得 解压后找到 HTML 文件和 Library 文件 HLML 文件时告诉我们 ST 公司已经为你写好了每个外设的驱动 Library 文件下是驱 动库的源代码和启动文件 使用时将 Library 文件下的库函数文件添加到工程中 这样 就基本完成了寄存器的配置 相关函数文件功能如下 core cm3 c 文件 该文件可用于屏蔽不同编译器的差异 但最重要的时该文件中 包含了 stdin h 这个头文件 它是独立于处理器之外的 主要作用是提供一些新类型的 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 18 页 定义 system stm32f10 x c 文件 该文件是 ST 公司提供的遵守 CMSIS 标准 功能是设置 系统时钟和总线时钟 通过 M3 核的核内寄存器来对 8MHz 的时钟进行倍频 分频 或者使用芯片内部的时钟 所有的外设都是与时钟的频率有关 所以这个文件的时钟 配置是很关键的 System stm32f10 x c 文件在实现系统时钟时要用到 PLL 这就需要操 作寄存器 寄存器都是通过存储器映射的方式来访问的 因此该文件包含 stm32f10 x h 这个头文件 stm32f10 x h 文件 这个文件非常重要 是一个非常底层的文件 所有处理器厂商 都会对内存的操作封装成一个宏 即我们通常说的寄存器 并且把这些实现封装成一 个系统文件 包含在相应的开发环境中 这样 在应用程序时只需将这个头文件包含 进来 stm32f10 x ppp c 和 stm32f10 x ppp h 文件 这是 ST 公司针对每个 STM32 外设而 编写的库函数文件 属于 CMSIS 的设备外设函数 其中 ppp 表示外设名称 startup stm32f10 x hd s 上电后 微控制器无法从硬件上定位 main 函数的入口地址 需要一个启动文件来处理 Library 文件夹下几种不同的启动文件 本次使用的 STM32F103VET6 有 64KRAM 512KROM 属于高密度产品 所以选择该文件 启动 文件的作用便是负责执行微控制器从 复位 到 开始执行 main 函数 中间这段时间 称 为启动过程 所必须进行的工作 总的来说 启动文件的作用是 1 初始化堆栈指针 SP 2 初始化程序计数器指针 PC 3 设置堆栈的大小 4 设置异常向量表的入口地址 5 配置外部 SRAM 作为数据寄存器 6 设置 C 库的分支入口 main 在库目录 Project STM32F10 x Stdperiph Template 目录下 存放了官方的一个库工 程模板 我们在库建立一个完整的工程时还需要添加这个目录下的 stm32f10 x it c stm32f10 x it h stm32f10 x conf h 这三个文件 stm32f10 x it c 文件 是专门用来编写中断服务函数的 在修改前 这个文件已经 定义了一些系统异常的接口 其它普通中断服务函数有我们自己添加 而这些中断服 务函数的接口可以在启动文件中找到 stm32f10 x conf h 文件 这个文件包含了 stm32f10 x h 是用来配置使用了什么外 设的头文件 用这个头文件可以很方便的增加或删减上面 drive 目录下的外设驱动函数 库 如 gpio rcc spi usart 的外设库函数 5 1 2 STM32 程序测试 当建立好工程并添加了上述函数后 接下来的便是测试芯片引脚功能 本次设计 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 19 页 通过配置 GPIO 寄存器来控制 LED 灯的亮灭 以验证 STM32 芯片驱动程序的正确与 否 想要控制 LED 灯 当然是通过控制 STM32 芯片的 I O 引脚电平的高低来实现 在 STM32 芯片上 I O 引脚可以被软件设置成各种不同的功能 如输入或输出 所以 被称为 GPIO 而 GPIO 引脚又分被为 GPIOA GPIOB GPIOE 五组 每组端口分为 0 至 15 共 16 个不同引脚 因此 控制 LED 的步骤如下 1 GPIO 端口引脚多 选定需要控制的特定引脚 2 GPIO 功能如此丰富 配置需要特定的功能 3 控制 LED 的亮和灭 设置 GPIO 输出电压的高低 要控制 GPIO 口 就要涉及到控制相关的寄存器 通过查找 STM32 手册 得 GPIO 相关配置器描述如图 5 2 图中的 7 个寄存器可分为以下四类 1 配置寄存器 选定 GPIO 的特定功能 最基本的如 选择作为输入或者输出接 口 2 数据寄存器 保存 GPIO 的输入电平或将要输出电平 3 为控制寄存器 设置某引脚的数据位 1 或 0 控制输出电平 4 锁定寄存器 设置某锁定引脚后 就不能修改其配置 图 5 2 GPIO 寄存器描述 关于寄存器名称上标号 x 的意义 如 GPIOx CRL GPIOx CRH 这个 x 的取值 可以是 A 到 E 表示这些寄存器也是跟 GPIO 一样 也是分组的 即对于 GPIOA 和 GPIOB 他们有一组互不相干的寄存器 如控制 GPIOA 的寄存器名为 GPIOA CRL GPIOA CRH 而控制 GPIOB 则是不同的 被命名为 GPIOB CRL GPIOB CRH 实现控制 LED 灯亮灭的思路框图如图 5 3 所示 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 20 页 图 5 3 控制 LED 灯框图 对于 GPIO 端口 没个端口有 16 个引脚 每个引脚的模式有寄存器的四个位控制 每四位又分为两位控制引脚配置 CNFy 1 0 两位控制引脚的模式及最高速度 MODEy 1 0 其中 y 表示第 y 个引脚 配置 GPIO 引脚模式的一共有两个寄存器 CRH 是高寄存器 用来配置高 8 位引脚 pin8 pin15 如果要配置 pin0 pin7 引脚 则要 在 CRL 中进行配置 5 1 3 STM32 时钟系统 STM32 芯片为了实现低功耗 设计了一个功能完善但却非常复杂的时钟系统 普 通的 MCU 一般只要配置好 GPIO 的寄存器 就可以使用了 但 STM32 还有一个步 骤 就是开启外设时钟 STM32 整体时间系统如图 5 4 所示 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 21 页 图 5 4 STM32 时钟树 CPU IntDis 禁止所有中断 OSInit ucosII 初始化 BSP Init 硬件平台初始化 建立主任务 优先级最高 建立这个任务另外一个用途是为了以后使用统计任务 os err OSTaskCreate void void App TaskStart 指向任务代码指针 void 0 任务开始执行时 传递给任务的参数的指针 OS STK 分配给任务的优先级 OSTimeSet 0 ucosII 的节拍计数器清 0 节拍计数器是 0 4294967295 OSStart 启动 ucosII 内核 return 0 static void App TaskStart void p arg 开始任务建立 void p arg OS CPU SysTickInit 初始化 ucosII 时钟节拍 if OS TASK STAT EN 0 使能 ucos 的统计任务 OSStatInit 统计任务初始化函数 endif App TaskCreate 建立其他的任务 while 1 OSTimeDlyHMSM 0 0 0 1000 static void App TaskCreate void 建立其余任务函数 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 49 页 MP3 SEM OSSemCreate 0 建立 MP3 播放信号量 建立用户界面任务 OSTaskCreateExt AppTaskUserIF 指向任务代码的指针 void 0 任务开始执行时 传递给任务的参数的指 针 OS STK 是否堆栈检验堆栈清零 建立触摸驱动任务 OSTaskCreateExt AppTaskKbd void 0 OS STK 建立 MP3 播放任务 OSTaskCreateExt Task MP3 void 0 OS STK static void AppTaskUserIF void p arg 用户界面人物 void p arg GUI Init ucgui 初始化 while 1 Fun 界面程序 桂林电子科技大学毕业设计 论文 报告用纸 共 58 页第 50 页 static void AppTaskKbd void p arg 触摸屏坐标获取任务 void p arg while 1 OSTimeDlyHMSM 0 0 0 10 延时 10ms 会读取一次触摸坐标 GUI TOUCH Exec static void Task MP3 void p arg MP3 播放任务 INT8U err unsigned
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年会策划活动方案模板图(3篇)
- 嘉兴多人团建活动方案策划(3篇)
- 泸州水下施工方案(3篇)
- 中职对口考试题库及答案
- 艺术鉴赏考试题库及答案
- 小学文明用语题目及答案
- 小区绿化及环保设施建设合同
- 看假文盲有感700字15篇
- 元宵节作文500字左右20258篇范文
- 农村环境保护和可持续发展的合作合同
- 废气处理活性炭吸附操作规范
- 2025年体育教练员执业能力考试试题及答案解析
- 2025年住培结业考试题库及答案
- 2025年重庆辅警管理知识模拟100题及答案
- T-SCSTA001-2025《四川省好住房评价标准》
- 住院精神疾病患者自杀风险护理
- 《病理检验技术》课程标准
- 医务人员礼仪培训
- 体检中心销售技巧销售话术
- 五年级上册英语教案-Unit1 We have new friends(Lesson2) |人教精通版
- 《投资学》课程教学大纲
评论
0/150
提交评论