




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、安安 徽徽 农农 业业 大大 学学 毕毕 业业 论论 文(设计)文(设计) 论文题目论文题目 基于基于 STM32F103RBT 的的 MP3 播放器设计播放器设计 姓 名 吕 凯 学 号 院 系 信息与计算机学院 专 业 电子信息工程 指导教师 褚刚秀 江朝晖 职 称 助教 副教授 中国中国合肥合肥 二二o一二一二 年年 六六 月月 安徽农业大学学士学位论文(设计)开题报告安徽农业大学学士学位论文(设计)开题报告 课题名称基于 STM32 的 MP3 播放器 课题 来源 自拟 学生姓名吕 凯专业电子信息工程学号 指导教师姓名褚刚秀 江朝晖职称助教 副教授 研 究 内 容 1、 STM32 S
2、PI 接口驱动程序设计,GPIO 接口应用 2、 VS1003B 驱动程序设计,与处理器的连接 3、 SD 卡内部结构与文件系统 4、 FATFS 的移植及其接口函数的应用 研 究 计 划 2 月初3 月底 理论学习、查资料。 4 月初4 月底 确定硬件结构,在此平台上练习 5 月初5 月中 STM32 SPI 接口驱动程序 VS1003B 驱动程序设计 5 月中5 月底 FATFS 文件系统的移植,系统程序调试 特 色 与 创 新 1、VS1003B 解码音质较好,播放流畅 2、FatFs 文件系统移植简单,功能丰富,很适合 SD 卡文件管理 指 导 教 师 意 见 教 研 室 意 见 学
3、院 意 见 目目 录录 1 1 引言引言 .1 2 2 设计思想设计思想 .2 3 3 系统的硬件设计系统的硬件设计 .2 3.1 微控制器及其理论介绍.3 3.1.1 芯片总体描述 .3 3.1.2 典型应用场合 .3 3.1.3 典型外设及接口 .3 3.2 解码芯片.6 3.3 SD 卡.8 4 4 系统的软件件设计系统的软件件设计 .10 4.1 开发和调试环境.10 4.2 单片机程序设计.10 4.2.1 SPI 驱动程序 .10 4.2.2 SD 卡驱动程序 .14 4.2.3 FatFs 文件系统的移植 .16 4.2.4 VS1003 驱动程序 .19 4.2.5 主程序 .
4、22 5 5 结结束束语语 .24 参考文献参考文献 .24 英文摘要英文摘要 .25 致致 谢谢 .25 附录附录 1 1 .26 附录附录 2 2 .27 基于基于 STM32STM32 的的 mp3mp3 播放器软件设计播放器软件设计 学生:吕 凯,指导教师:褚刚秀 (安徽农业大学 信息与计算机学院 合肥 ) 摘摘 要要:本文介绍了基于 STM32F103RBT 微控制器开发板以及 VS1003B 解码芯 片的 MP3 音乐播放器。采用意法半导体的 Cortex-M3 内核的 STM32 系列作为核 心控制芯片,管理及读取音乐数据,并将这些数据发送给 VS1003B 进行解码, 同时接收
5、外界命令。系统采用大容量的 SD 卡作为存储部分,SD 卡内部数据的管 理与磁盘一样,使用了文件系统,用传统的单片机读取存储器的方式读取几 M 字 节大小的 MP3 文件很难实现,因此文件系统的移植成为本系统的关键。同时, VS1003B 与 SD 卡的数据都是通过 SPI 通信与 STM32 进行交互,SPI 通信也是设 计中的关键。该播放器在播放时没有出现理论上的断续情况,音质较好。占用的 软硬件资源也较少,为后续的扩展学习留下了很大空间。 关键词关键词:Cortex-M3,VS1003B,SD 卡,FatFs 文件系统,MP3 播放器 1 1 引言引言 MP3 全称是动态影像专家压缩标准
6、音频层面 3(Moving Picture Experts Group Audio Layer III) 。是当今较流行的一种数字音频编码和有损压缩格式, 它设计用来大幅度地降低音频数据量,而对于大多数用户来说重放的音质与最初 的不压缩音频相比没有明显的下降。 MP3 格式有如下几个特点:1.MP3 是一个数据压缩格式。2.它丢弃掉脉冲编 码调制(PCM)音频数据中对人类听觉不重要的数据(类似于 JPEG 是一个有损图 像压缩) ,从而达到了小得多的文件大小。3.MP3 音频可以按照不同的位速进行压 缩,提供了在数据大小和声音质量之间进行权衡的一个范围。MP3 格式使用了混 合的转换机制将时域
7、信号转换成频域信号。4.32 波段多相积分滤波器(PQF) 。 5.36 或者 12 tap 改良离散余弦滤波器(MDCT) ;每个子波段大小可以在 0.1 和 2.31 之间独立选择。6.MP3 不仅有广泛的用户端软件支持,也有很多的硬件 支持比如便携式媒体播放器(指 MP3 播放器)DVD 和 CD 播放器。 本次设计的重点在于三个方面:微控制器的使用和编程、VS1003B 解码芯片 的使用,文件系统的移植与其 API 调用。控制器的使用和编程需要对单片机有着 比较好的了解,本控制器嵌入了硬件 SPI 接口,对硬件的设计进行了不少的简化, 硬件编程基于 C 语言,因为本设计采用的是较为基础
8、的设计方案,控制器与外围 芯片的连接方面可以参考芯片资料, 。VS1003B 解码芯片的使用主要参考其英文资 料,使得设计进度上有一定得难度,但是在进行使用的时候,资料里面推荐的典 型应用电路图对设计起了不少的参考,使得设计难度大幅度减少。文件系统的成 功移植方便了读取 SD 卡里大量的内容,只需要调用本设计中移植的 FatFs 提供 的 API 进行一系列文件操作。文件系统的移植是这次设计中的重点内容,大量的 阅读关于文件系统的文档及源代码扩展了我的视野更锻炼了我的代码快速阅读能 力。 通过本毕业设计,增加了对英文资料的理解,更加深入的了解了单片机及其 应用,同时也是对嵌入式应用的一个过渡,
9、增加了自己不少的信心,难者不会, 会者不难,所谓的困难,只是一个过程。同时相信,对学工科的而言,严谨乃成 功之母,这也是我最大的收获之一。 2 2 设计思想设计思想 本系统主要实现的功能有:从 SD 卡中读取 16 进制的 MP3 或 WMA 格式的 语音数据,对这些数据解码并播放。 具体设计思路如图 2-1 所示。 命令或数据 命令或数据 图图 2-12-1 系统架构图系统架构图 3 3 系统硬件系统硬件平台的介绍平台的介绍 本系统的硬件结构由 STM32F103RBT6 开发板,VS1003B 解码芯片评估板组成, USB 供电。 SD 卡 STM32 F103RBT6VS1003B 3.
10、13.1 微控制器及其理论介绍微控制器及其理论介绍 .1 芯片总体描述芯片总体描述 STM32F103RBT6 增强型系列基于高性能的 ARM Cortex-M33 32 位的 RISC 内核,工作频率 72MHz,内置包高速存储器,包含 128K Flash,20K RAM。丰 富的增强 I/O 端口和联接到两条 APB 总线的外设。包含 2 个 12 位的 ADC、3 个通 用 16 位定时器和一个 PWM 定时器,还包含标准和先进的通信接口:多达两个 I2C 和 SPI、3 个 USART3、1 个 USB 和 1 个 CAN,还有很实用的 FSMC3总线 接口,SDIO
11、 接口。 STM32F103RBT6 增强型系列工作于-40至 105的温度范围,供电电压 2.0V 至 3.6V,一系列的省电模式保证低功耗应用的要求。 该芯片拥有 64 个引脚,其中 51 个引脚是 IO 引脚,每一个引脚都可以配置 成中断输入接口,IO 均支持位操作,端口可映射,先进的中断控制器 NVIC1等 等。丰富的 IO 资源加上灵活内部结构和先进指令集的支持使设计变得更加容易。 .2 典型应用场合典型应用场合 销售终端;身份识别设备;工业自动化;消费电子;建筑安防/消防/HVAC; 医疗;通信领域;家电;仪器仪表等。 .3 典型外设及接口典型外设及
12、接口 (1)SPI3串行外设接口 3线全双工同步传输 带或不带第三根双向数据线的双线单工同步传输 8或16位传输帧格式选择 主或从操作 支持多主模式 8个主模式波特率预分频系数(最大为fPCLK/2) 从模式频率 (最大为fPCLK/2) 主模式和从模式的快速通信 主模式和从模式下均可以由软件或硬件进行NSS管理:主/从操作模式 的动态改变 可编程的时钟极性和相位 可编程的数据顺序,MSB在前或LSB在前 可触发中断的专用发送和接收标志 SPI总线忙状态标志 支持可靠通信的硬件CRC -在发送模式下,CRC值可以被作为最后一个字节发送 -在全双工模式中对接收到的最后一个字节自动进行CRC校验
13、可触发中断的主模式故障、过载以及CRC错误标志 支持DMA功能的1字节发送和接收缓冲器:产生发送和接受请求 图图 3-13-1 SPISPI框图框图3 SPI引脚如图3-1,通常SPI通过4个引脚与外部器件相连: MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主 模式下接收数据。 MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从 模式下接收数据。 SCK:串口时钟,作为主设备的输出,从设备的输入 NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功 能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据 线上的冲突。从设备的
14、NSS引脚可以由主设备的一个标准I/O引脚来驱动。一旦被 使能(SSOE位),NSS引脚也可以作为输出引脚,并在SPI处于主模式时拉低;此 时,所有的SPI设备,如果它们的NSS引脚连接到主设备的NSS引脚,则会检测到 低电平,如果它们被设置为NSS硬件模式,就会自动进入从设备状态。当配置为 主设备、NSS配置为输入引脚(MSTR=1,SSOE=0)时,如果NSS被拉低,则这个 SPI设备进入主模式失败状态:即MSTR位被自动清除,此设备进入从模式 (2)GPIO3接口 STM32 的输入输出管脚有下面 8 种可能的配置:(4 输入+2 输出+2 复用输 出) 一、浮空输入_IN_FLOATI
15、NG 二、带上拉输入_IPU 三、带下拉输入_IPD 四、模拟输入_AIN 开漏输出_OUT_OD 五、推挽输出_OUT_PP 六、复用功能的推挽输出_AF_PP 七、复用功能的开漏输出_AF_OD I/O 口的输出模式下,有 3 种输出速度可选(2MHz、10MHz 和 50MHz),这 个速度是指 I/O 口驱动电路的响应速度而不是输出信号的速度,输出信号的速度 与程序有关(芯片内部在 I/O 口的输出部分安排了多个响应速度不同的输出驱动 电路,用户可以根据自己的需要选择合适的驱动电路)。所有端口都有外部中断 能力。为了使用外部中断线,端口必须配置成输入模式。GPIO 口的配置具有上 锁功
16、能,当配置好 GPIO 口后,可以通过程序锁住配置组合,直到下次芯片复位 才能解锁。 3.23.2 解码芯片解码芯片 VS1003 特性特性2: 能解码MPEG1 和MPEG2 音频 层III(CBR+VBR+ABR);WMA 4.0/4.1/7/8/9 5-384kbps 所有流文件;WAV(PCM+IMA AD-PCM);产生 MIDI/SP-MIDI 文件。 对话筒输入或线路输入的音频信号进行IMA ADPCM编码 支持MP3 和WAV 流 高低音控制 单时钟操作12.13MHz 内部PLL锁相环时钟倍频器 低功耗 内含高性能片上立体声数模转换器,两声道间无相位差 内含能驱动30 欧负载
17、的耳机驱动器 模拟,数字,I/O 单独供电 为用户代码和数据准备的5.5KB片上RAM 串行的控制,数据接口 可被用作微处理器的从机 特殊应用的SPI Flash引导 供调试用途的UART接口 新功能可以通过软件和4 GPIO 添加 VS1003概述:概述: VS1003 是一个单片MP3/WMA/MIDI音频解码器和ADPCM编码器。它包含 一个高性能,自主产权的低功耗DSP 处理器核VS_DSP4,工作数据存储器,为用 户应用提供5KB 的指令RAM 和0.5KB 的数据RAM。串行的控制和数据接口,4 个常规用途的I/O 口,一个UART,也有一个高品质可变采样率的ADC和立体声 DAC
18、,还有一个耳机放大器和地线缓冲器。 VS1003 通过一个串行接口来接收输入的比特流,它可以作为一个系统的从 机。输入的比特流被解码,然后通过一个数字音量控制器到达一个18 位过采样 多位- DAC。通过串行总线控制解码器。除了基本的解码,在用户RAM 中它 还可以做其他特殊应用,例如DSP 音效处理。 图图 3-3 VS1003 内部结构与外部引脚内部结构与外部引脚 VS1003B 与 STM32F103RBT6 的接线如图 3-3 图图 3-4 VS1003 与单片机与单片机 SPI2 相连相连 3.33.3 SDSD 卡卡 SD 卡(Secure Digital Memory Card7
19、)是一种为满足安全性、容量、性能和 使用环境等各方面的需求而设计的一种新型存储器件。 SD 卡内部结构及引脚如图 3-4 所示 图图 3-43-4 SDSD 卡内部结构及引脚卡内部结构及引脚7 由上图可知,SD 卡由 6 线 SD 卡接口控制,包括: CMD,CLK,DAT0DAT37。SD 卡允许在两种模式下工作,即 SD 模式和 SPI 模 式,该系统采用 SPI 模式,使得系统软硬件都比较简单,不足是损失了速度。当 SD 卡接到复位命令(CMD0)时,CS 信号有效(低电平) ,那么启用 SPI 模式。 SPI 模式引脚定义如图 3-5 图图 3-53-5 SPISPI 模式引脚定义模式
20、引脚定义7 SD 卡与 STM32F103RBT6 的接线如图 3-6 图图 3-6 SD 卡与单片机的连接卡与单片机的连接 4 4 系统的软件设计系统的软件设计 4.14.1 开发和调试环境开发和调试环境 本系统的软件开发与调试平台基于集成开发工具 RealView MDK 专业版,它 是由 Keil uVision3 开发环境,结合 RealView 编译器、uVision 调试器和模拟器形 成的集成开发环境。支持 ARM7、ARM9 和最新的 Cortex-M3 核微控制器或微处 理器,自动配置启动代码,集成 Flash 烧写模块,强大的 Simulation 设备模拟, 性能分析等功能
21、。支持 ULink、STLink、J-Link 等多种调试手段,本系统的后期 仿真调试采用 J-Link 仿真器,它是通过 ARM 芯片的 JTAG 边界扫描口进行的调 试的设备。JTAG 仿真器比较便宜,连接方便,通过现有的 JTAG 边界扫描口与 ARM CPU 核通信,属于完全非插入式,它无需目标存储器,不占用目标系统的 任何端口。由于 JTAG 调试的目标程序是在目标板上执行,仿真更接近于与目标 硬件。使用集成开发环境配合 JTAG 仿真器进行嵌入式系统开发时目前很常用的 一种调试方式。 4.24.2 单片机程序设计单片机程序设计 本系统的所有程序基于 STM32 提供的 V3.3.0
22、 固件函数库,该函数库是一个 固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特 征。该函数库还包括每一个外设的驱动描述和应用实例。通过使用本固件函数库, 无需深入掌握细节,用户也可以轻松应用每一个外设。因此,使用本固态函数库 可以大大减少用户的程序编写时间,进而降低开发成本。 .1 SPISPI 驱动程序驱动程序 时钟信号的相位和极性 SPI_CR寄存器的CPOL和CPHA位,能够组合成四种可能的时序关系。 CPOL(时钟极性)位控制在没有数据传输时时钟的空闲状态电平,此位对主模式和 从模式下的设备都有效。如果CPOL被清0,SCK引脚在空闲状态保持低电平
23、;如 果CPOL被置1,SCK引脚在空闲状态保持高电平。 如果CPHA(时钟相位)位被置1,SCK时钟的第二个边沿(CPOL位为0时就是 下降沿,CPOL位为1时就是上升沿)进行数据位的采样,数据在第二个时钟边沿 被锁存。如果CPHA位被清0,SCK时钟的第一边沿(CPOL位为0时就是下降沿, CPOL位为1时就是上升沿)进行数据位采样,数据在第一个时钟边沿被锁存。 CPOL时钟极性和CPHA时钟相位的组合选择数据捕捉的时钟边沿。 图3.2显示了SPI传输的4种CPHA和CPOL位组合。此图可以解释为主设备和从 设备的SCK脚、MISO脚、MOSI脚直接连接的主或从时序图。 注意:1. 在改变
24、CPOL/CPHA位之前,必须清除SPE位将SPI禁止。 2. 主和从必须配置成相同的时序模式。 3. SCK的空闲状态必须和SPI_CR1寄存器指定的极性一致(CPOL为1时, 空闲时应上拉SCK为高电平;CPOL为0时,空闲时应下拉SCK为低电平)。 4. 数据帧格式(8位或16位)由SPI_CR1寄存器的DFF位选择,并且决定发送 /接收的数据长度。 图图 3-23-2 数据时钟时序图数据时钟时序图 SPI 驱动程序包括 SPI1 初始化函数,速度设置函数,读写一个字节的函数。 SPI初始化 由于VS1003与LPC2131在通信时是从机模式,故单片机STM32F103RBT6的 SPI
25、模式设置为主机模式,需要对SPI接口进行初始化,其初始化函数由void Soi lnit(void)实现。 如图4-1。 图图 4-14-1 SPISPI 接口初始化接口初始化 SPI 读写一个字节的函数设计 在接收时,接收到的数据被存放在一个内部的接收缓冲器中;在发送时,在 被发送之前,数据将首先被存放在一个内部的发送缓冲器中。 对SPI_DR寄存器 的读操作,将返回接收缓冲器的内容;写入SPI_DR寄存器的数据将被写入发送缓 冲器中。如图 4-2 图图 4-2 SPI 读写字节函数读写字节函数 .2 SDSD 卡驱动程序卡驱动程序 SD 卡底层程序主要完成对SD 卡的最基本
26、的数据块的操作,如对SD 卡的初 始化,使之进入SPI 模式工作,进而实现对SD 卡内存单元的读写访问。主机与 SD 卡的各种通信都由主机控制,主机通过CMD 线(SD 模式下,SD 卡引脚 2)串行发给SD 卡特定的命令,SD 卡应答信号同样是通过CMD 线由卡返送到 主机。对SD 卡操作的所有命令长度都是6 个字节,且发送时高位在前,其中, 最后1 个字节的高7 位为CRC 校验位,在SPI 模式下,因无需CRC 校验可以全 部写入0。上电后,SD 卡自动进入SD 模式。主机置低CS 端,并需要等待至少 74 个时钟周期,以便有足够的时间完成SD 卡的上电复位过程。主机向SD 卡发 送复位
27、命令CMD0, 这个命令必须要有CRC校验(此时仍为SD 模式),如果主 机读到SD 卡有0 x01 的应答信号,则表明SD 卡已进入SPI 模式。 由于大容量SDHC 的出现, SD1.x 满足不了SDHC的容量要求, 标准已经升 级为SD2. 0。但也因此出现了许多电子设备无法驱动大容量SD 卡的情况, 如何 识别SD1.x 与SD2. 0 就显得尤为重要。SD2. 0 的SPI 模式初始化流程判断是 否为SD2. 0 卡, CMD8( SD2. 0 新增的命令) 是关键。若卡是SD2. 0, 则发 送CMD8 将会返回0 x01; 若是SD1. x, 则返回0 x05, 这样就可以识别S
28、D 卡的类 型。SD1. x 与SD2. 0 的最大不同在于命令地址的表示。SD1. x 的地址单位是 字节, 而SD2. 0 的地址单位是扇区,地址仍然采用32 位4 个字节来表示。因此 在读写操作时应该根据不同的卡对地址进行相应的处理, 若是SD1. x则写入字节 地址, 若为SD2. 0 则写入扇区地址。SD卡初始化流程图如图4-3: 忙 忙 不忙 不忙 CCS=1 CCS=0 开始 SPI1 及 SD 端口初始 化 设置 SPI 为低速模式 发送 CMD0 发送 CMD8 获取卡版 本 发 CMD55+CMD41 SD1.0 发卡初始化 CMD55+ACMD41 SD2.0 或 SDH
29、C 发 CMD58 获取 CCS 信息 获取应答 r1 CCS=? 卡 OK? SD2.0 标准容 量 卡 OK? SD1.0 标准容 量 SDHC 图图 4-3 SD 卡初始化流程图卡初始化流程图 SD 卡驱动程序提供多种底层函数供主程序与文件系统调用: SD_SendCommand(u8 cmd, u32 arg, u8 crc): 向 SD 卡发送一个命令。输入: u8 cmd: 命令 ;u32 arg : 命令参数 u8 crc; crc 校验值:返回值:SD 卡返 回的响应 SD_ReceiveData(u8 *data, u16 len, u8 release): 从 SD 卡中读
30、回指定长度的数 据,放置在给定位置。输入: u8 *data(存放读回数据的内存len);u16 len(数据长 度) u8 release(传输完成后是否释放总线 CS 置高 0:不释放 1:释放) ;返回值: 0:NO_ERR;other:错误信息 SD_ReadSingleBlock(u32 sector, u8 *buffer): 读 SD 卡的一个 block。输入:u32 sector 取地址(sector 值,非物理地址) u8 *buffer 数据存储地址(大小至少 512byte) 返回值:0: 成功 other:失败 SD_WriteSingleBlock(u32 sect
31、or, const u8 *data): 写入 SD 卡的一个 block。输 入:u32 sector 扇区地址(sector 值,非物理地址) ;u8 *buffer 数据存储地址(大 小至少 512byte) 返回值:0: 成功 other:失败 SD_ReadMultiBlock(u32 sector, u8 *buffer, u8 count): 读 SD 卡的多个 block。 输入:u32 sector 扇区地址(sector 值,非物理地址) ;u8 *buffer 数据存储地址 (大小至少 512byte) ;u8 count 连续读 count 个 block ;返回值:0
32、:成功 other:失败 SD_WriteMultiBlock(u32 sector, const u8 *data, u8 count): 写入 SD 卡的 N 个 block。输入:u32 sector: 扇区地址(sector 值,非物理地址);u8 *buffer 数据存 储地址(大小至少 512byte);u8 count 写入的 block 数目;返回值:0:成功 other:失败 SD_Read_Bytes(unsigned long address,unsigned char *buf,unsigned int offset,unsigned int bytes): 在指定扇区
33、,从 offset 开始读出 bytes 个字节;输入:u32 sector 扇区地址(sector 值,非物理地址);u8 *buf 数据存储地址(大小 =512byte);u16 offset 在扇区里面的偏移量; u16 bytes 要读出的字节数 .3 FatFsFatFs 文件系统的移植文件系统的移植 (1)FatFs 介绍 随着信息技术的发展,当今社会的信息量越来越大,以往由单片机构成的系 统简单地对存储媒介按地址、按字节的读写已经不能满足人们实际应用的需要, 于是利用文件系统对存储媒介进行管理成了今后单片机系统的一个发展方向。目 前常用的文件系统主要有微软的FAT
34、l2、FATl6、FAT32、NTFS 以及Linux 系统下 的EXT2 和EXT3 等。由于微软Windows的广泛应用,在当前的消费类电子产品中, 用得最多的还是FAT 文件系统,如U 盘、MP3、MP4 和数码相机等,所以找到一 款容易移植和使用、占用硬件资源相对较小而功能又强大的FAT 开源文件系统, 对于单片机系统设计者来说是很重要的。 FatFs Module 是一种完全免费开源的FAT 文件系统模块,专门为小型的嵌入 式系统而设计。它完全用标准C 语言编写,且完全独立于I/O 层,可以移植到 8051、PIC、AVR、SH、Z80、H8 和ARM 等系列单片机上且只需做简单的修
35、改。 它支持FATl2、FATl6 和FAT32,支持多个存储媒介,有独立的缓冲区,可以对 多个文件进行读写。 FatFs Module 一开始就是为了能在不同的单片机上使用而设计的,所以具有 良好的层次结构,如图4-4 所示。 图图 4-44-4 FatFsFatFs层次结构层次结构 最顶层是应用层,使用者无需理会FatFs Module 的内部结构和复杂的FAT 协议,只需要调用FatFs Module 提供给用户的一系列应用接口函数,如f_open1, f_read,f_write 和f_close等,就可以像在PC 上读写文件那样简单。中间层 FatFs Module 实现了FAT 文
36、件读写协议。FatFs Module 的完全版提供的是 ff.c、ff.h,简化版Tiny-FatFs 提供的是tff.c、tff.h。除非有必要,使用者一般不用 修改,使用时将需要版本的头文件直接包含进去即可。需要使用者编写移植代码 的是FatFs Module 提供的底层接口,它包括存储媒介读写接口Disk I/O 和供给 文件创建修改时间的实时时钟。 (2)FatFs 1软件包中相关文件 平台无关 ffconf.h FatFs 模块配置文件 ff.h FatFs 和应用模块公用的包含文件 ff.c FatFs 模块 diskio.h FatFs and disk I/O 模块公用的包含文
37、件 integer.h 数据类型定义 option 可选的外部功能 平台相关(不属于FatFs 需要由用户提供) diskio.c FatFs 与disk I/O 模块接口层文件 (3)FatFs 移植 移植FatFs 主要分为三步: 第一步、数据类型:在integer.h 里面去定义好数据的类型。这里需要了解你 用的编译器的数据类型,并根据编译器定义好数据类型。由于这里面的数据类型 与RealView MDK的并没有冲突,所以这部分我没有修改。 第二步、配置:打开ffconf.h,文件系统的配置裁剪等均在此头文件中进行定 义配置。根据实际需要我进行了如下配置: #define _MCU_EN
38、DIAN 有1和2两个值可设,默认情况下设1,以获得较好 的系统性能。如果单片机是大端模式或者设为1时系统运行不正常,则必须设为 2。 #define _FS_READONLY 设为1时将使能只读操作,程序编译时将文件系统 中涉及写的操作全部去掉,以节省空间。 #define _FS_MINIMIZE 有0、1、2、3四个选项可设。设0表示可以使用全 部TinyFatFs提供的用户函数;设1将禁用fstat、f_getfree、funlink、f mkdir、fchmod和frename;设2将在1的基础上禁用fopendir和Lreaddir;设3 将在1和2的基础上再禁用Llseek。使用
39、者可以根据需要进行裁减,以节省空间。 #define _FAT32。设1时将支持FAT32。 #define _USE_FSINFO。设1时提供FAT32的磁盘信息支持。 #define_USE_SJIS。设1时支持ShiftJIS码,一般设0。 #define _USE_NTFLAG。设1时将对文件名大小写敏感。 另外,在diskioh中,使用者可以根据需要使能diskwrite 或disk_ioctl。由于在本系统中只需要读取SD卡,因此做了如下修改 #define _READONLY 1 #define _USE_IOCTL 0 第三步、函数编写:打开diskio.c1,进行底层驱动编写
40、,实际上需要编写6 个接口函数, 如图4-5 所示。 图图 4-54-5 FatFsFatFs底层接口函数底层接口函数 DSTATUS disk_initialize 磁盘初始化,如果SD卡设置正常,直接返回0或者其 他状态。 DSTATUS disk_status 磁盘状态监测,可以返回0或者其他状态。 DRESULT disk_read 磁盘读函数,调用SD卡驱动里的读多块函数,如图4-6 DRESULT disk_write 磁盘写函数,由于使能了只读,实际上这部分没有用 到。 DRESULT disk_ioctl 仅在磁盘格式化时需要,如不需要可返回0。 DWORD get_fatti
41、me 这部分功能在头文件中被禁能。 图图 4-64-6 磁盘读函数磁盘读函数 .4 VS1003VS1003 驱动程序驱动程序 VS1003通过SPI串行总线与主机进行数据和控制信息的交换,并且VS1003的 SPI总线有两种功能特性: 串行控制接口(SC12)和串行数据接口(SDI2)。 VS1003芯片主要通过SCI和SD1分别来接收主机传送过来的控制命令和音频数据。 SCI的数据传输长度固定为16位,通过对SCI接口的16个l6位寄存器进行读写操作 来控制vsl003,SDI接口主要用来传输压缩的音频数据。 VS1003的SPI接口有两种工作模式:VS1001兼容模式和V
42、S1002新模式。为方 便数据传输, 本系统采用VS1002新模式且SMSDISHARE2为0的设置,故VS1003 的控制信号和数据信号的传送分别由XCS2和XDCS2作为同步信号。图4-7和图4-8 分别描述了SCI读和写的命令工作时序, 由图所示SCI命令以XCS作为同步信号, SCI协议包括一个控制指令字节,1个地址字节和1个16位数据字,每次读或写控 制可以操作一个寄存器,读命令和写命令控制指令固定为0 x03和0 x02,VS1003的 内部寄存器地址范围0 x000 x0F,16位数据字则是写入指定寄存器的数值或从指 定寄存器读出的数值;图4-9描述了SDIT作时序,它以XDCS
43、作为同步信号,随着 时钟的变化,根据SCI MODE寄存器的设置来判断数据是先从高位还是低位送出。 作为从机工作模式,VS1003通过一个信号线DREQ2指示是否允许主机传送数 据,当DREQ为高电平时,VS1003可以接收至少32字节的SDI数据或者一个SCI命令, 反之,如果DREQ为低,必须停止传送数据给VS1003。所以VS1003在接收数据期问, 必须不断检测DREQ信号线的状态。 图图 4-74-7 SCISCI读时序图读时序图 图图 4-84-8 SCISCI写时序图写时序图 图图 4-94-9 为了使VS1003正常工作,必须对VS1003的内部寄存器进行正确设置。VS1003
44、 的初始化void VS1003_Init(void)和void VS1003_SoftReset(void)两个函数实 现,前者完成对VS1003的SPI端口及控制引脚初始化和硬件复位,后者实现功能 控制,如软复位、时钟、采样率、音量控制、重音设置等,均是通过SCI写入到 VSIO03的特定寄存器来实现的。由于VSIO03内部寄存器被配置完成后,对等待周 期的时间要求比较精确,必须精确lJms级,故本系统使用定时器Timer0中断来 实现ms级定时功能。VS1003初始化过程中设置寄存器的函数由static void VS1003_WriteReg( uint8_t reg,uint16_t
45、 value )实现,其函数实现如图4-10 所示。读出VS1003寄存器中存储数据的函数由uint16_t VS1003_ReadReg( uint8_t reg)实现,其软件流程图如图4-11所示。 图图 4-104-10 图图 4-114-11 .5 主程序主程序 在主程序里,利用过前面介绍到的各种外设的底层驱动程序,对SD卡, VS1003B这两个最主要的外部设备进行初始化。用FatFs提供的接口函数f_read将 SD卡内的完整的一首MP3或WMA格式的文件循环读入一个512字节的数组内,直 到读取完毕,每读完一次512字节,就将这个数组分若干次发送给VS1003B进
46、行 解码,每次发送32字节。这样就实现了最简单的播放功能,也可以增加按键选择 上一首下一首。主程序流程图如图4-12: 非0 0 4 非4 非 1 1 2 开始 VS1003 初始化、硬复位、软复 位 SD 卡初始化 获取卡容量 返回值=? f_mount 注册一个工作区 n=? n=? n=? f_open 第 1 首歌 f_open 第 2 首 歌 f_open 第 3 首 歌 f_read 读这个文件到数组 n=1 0 1 NO 图图 4-124-12 主程序流程图主程序流程图 5 5 结束语结束语 截止今日,整个系统已能稳定运行,VS1003B 的解码效果较好,由于处理器 内存的限制,
47、无法装载容量很大的中文字库或者其他文字库,因此该播放器目前 只能识别 ASCII 码,导致只能打开读取英文命名的文件数据。另外,本次设计用 的 STM32 开发板只有两个按键,因此人机接口并不丰富。 参考文献参考文献 1 ChaN.ELM-FAT File System ModuleEB/OL. /fsw/ff/00index_e.html 2 VS1003B 数据手册EB/OL. 3 STM32F103增强型系列数据手册EB/OL. 4 张 涛,左谨平,马华玲. FatFs 在 32 位微控制器 STM32 上的移植J. 电子技术, 2010,47(3):
48、25-27. 5 洪岳炜,王百鸣,谢超英.基于 LPC1768 的 FatFs 嵌入式文件系统J. 工业控制计算 机, 2011,24(8): 17-20. 6 洪岳炜,王百鸣,谢超英. 一种易于移植和使用的文件系统 FatFs ModuleJ. 技术纵 横, 2008, 25(5): 29-31. 7 SD Specifications Part 1 Physical Layer Simplified Specification Version 2.00S September 25, 2006 MP3_DREQ=? ? VS1003B_WriteData 一个文件读完? n+ 8 Microsoft Extensible Firmware Initiative FAT32 File System SpecificationS. version 1.03 December 6, 2000, Microsoft Corporation 英文摘要英文摘要 Designed based
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理专业知识题库解析及答案解析
- 安全监护和知识培训题库及答案解析
- 东方证券从业资格考试及答案解析
- 基金从业 云考试及答案解析
- 2025年储能集装箱行业研究报告及未来行业发展趋势预测
- 2025年编织袋行业研究报告及未来行业发展趋势预测
- 2025年布基墙纸行业研究报告及未来行业发展趋势预测
- 2025年电抗继电器行业研究报告及未来行业发展趋势预测
- 2025年API+制剂一体化行业研究报告及未来行业发展趋势预测
- 2025年光气行业研究报告及未来行业发展趋势预测
- 2025年时事政治考试100题及答案
- 农业产业强镇建设资金申请项目可行性研究及风险评估报告
- 秋形势与政策正确认识中国经济热点问题-教案2025版本
- 药品注册审评员考核试题及答案
- GB/T 7251.10-2025低压成套开关设备和控制设备第10部分:规定成套设备的指南
- 森林防灭火知识培训材料课件
- 成本管控的课件
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 2025年政府采购评审专家考试题库含答案
- CT检查的课件教学课件
- 年产50万吨钙系列产品项目可行性研究报告
评论
0/150
提交评论