基于嵌入式ARM的SD卡的读写_第1页
基于嵌入式ARM的SD卡的读写_第2页
基于嵌入式ARM的SD卡的读写_第3页
基于嵌入式ARM的SD卡的读写_第4页
基于嵌入式ARM的SD卡的读写_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 桂林电子科技大学实训(论文)报告用纸 第 1 页 共 2 页 摘 要SD卡(Secure Digital Memory Card)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。本实训的作品是利用基于ARM Cotex-M3内核的嵌入式处理器STM32自带的SDIO硬件接口来驱动SD卡,并结合文件系统 FATFS R0.07C来完成一个基于嵌入式ARM的SD卡读写的作品,现实向SD卡写入一个txt文件,并读取SD卡的文件目标并通过串口打印到PC机显示。关键词:嵌入式;ARM;STM32;SD

2、 卡;文件系统 桂林电子科技大学实训(论文)报告用纸 第 2 页 共 2 页 AbstractAbstractSD Card (Secure Digital Memory Card) Chinese translation for Secure Digital Card, it is a kind of based on semiconductor flash Memory of a new generation of Memory device, it is widely used in portable devices, such as Digital cameras, personal

3、Digital assistant (PDA) and multimedia player, etc. This training work is based on ARM Cotex - M3 kernel embedded processor STM32 own SDIO hardware interface to drive the SD card, and combined with the file system FATFS R0.07 C to complete a based on embedded ARM of the SD card, speaking, reading an

4、d writing work, reality to SD card to a TXT file, and read SD card file goals and through the serial port print to PC display.Key words:embedded;ARM;STM32; SD Card; File system 桂林电子科技大学实训(论文)报告用纸 第 0 页 共 1 页 目 录1 前言前言 .11.1 ARM 应用背景.11.2 研究内容.21.3 研究成果.32 STM32 处理器概述处理器概述.32.1 STM32 简介.32.1.1 STM32F

5、103VET6 的参数.42.2 内部资源.62.3 CORTEX-M3 内核简介.62.4 STM32 SDIO 简介.82.4.1 SDIO 简介 .82.4.2 SDIO 功能特性.83 SDIO 的原理及实现方法的原理及实现方法.93.1 原理.93.2 SDIO 适配器.103.3 SDIO 卡识别过程.113.4 SDIO 写数据块.123.5 SDIO 读数据块.134 FATFS 文件系统文件系统.134.1 FATFS 文件系统简介.134.2 FATFS 文件系统移植.144.2.1 移植前工作 .144.2.2 开始移植 .145 测试及结果测试及结果 .165.1 JT

6、AG 仿真器介绍.165.2 现象及结果.176 结论结论 .18致致 谢谢 .19参考文献参考文献 .20 桂林电子科技大学实训(论文)报告用纸 第 0 页 共 24 页 ARM处理器ADCI/O接口键盘RAM LED传感器转换器LCD DACEPROM主机1 前言前言1.11.1 ARMARM 应用背景应用背景如今,学习一种处理器的就有许多 ARM 内核的处理器可供使用,现在社会已步入嵌入式学习阶段。在嵌入式领域,8 位处理器已经不再胜任一些复杂的应用,比如 GUI,TCP/IP,FILESYSTEM 等,而 ARM 芯片凭借强大的处理能力和极低的功耗,非常适合这些场合。现在越来越多的产品

7、在选型的时候考虑到使用 ARM 处理器,ARM 的应用是相当的广泛。 ARM 的嵌入式控制应用如:汽车、电子设备、保安设备、大容量存储器、调制解调器、打印机等。一个典型的 ARM 嵌入式工业控制系统的功能模块如图 1-1 所示。 输入输出图 1-1 ARM 嵌入式工业控制系统的功能模块目前已有超过 85的无线通信设备采用了 ARM 技术,ARM 以其高性能和低成本,在该领域的地位日益巩固。ARM 在此方面的应用如:手提式计算机、移动电话、PDA 等。随着宽带技术的推广,采用 ARM 技术的 ADSL 芯片正逐步获得竞争优势。此外,ARM 在语音及视频处理上进行了优化,并获得广泛支持。ARM 技

8、术在目前流行的数字音频播放器、数字机顶盒、游戏机、数码相机、数字式电视机、GPS、机顶盒中得到广泛采用。现在流行的数码相机和打印机中绝大部分采用 ARM 技术,手机中的 32 位 SIM 智能卡也采用了 ARM 技术。如图1-2 所示是基于 ARM 技术的数码相机的功能模块9。 桂林电子科技大学实训(论文)报告用纸 第 1 页 共 24 页 ARM处理器LCD控制器主机接口CCDADC控制电路和编码电路存储器图 1-2 基于 ARM 技术的数码相机的功能模块1.21.2 研究内容研究内容 本设计旨在加深对 ARM 的学习,巩固大学四年所学专业知识,提升动手能力和思考问题解决问题的能力。本设计选

9、择意法半导体的 STM32F103 系列处理器,通过自制 STM32 开发板的过程,和对 STM32F103C8T6 芯片的研究学习,掌握其各种外设功能。STM32F103VET6具有一个SDIO接口。SD/SDIO/MMC主机接口可以支持MMC卡系统规范4.2版中的3个不同的数据总线模式:1位(默认)、4位和8位。在8位模式下,该接口可以使数据传输速率达到48MHz,该接口兼容SD存储卡规范2.0版。SDIO存储卡规范2.0版支持两种数据总线模式:1位(默认)和4位。 目前的芯片版本只能一次支持一个 SD/SDIO/MMC 4.2 版的卡,但可以同时支持多个 MMC 4.1 版或之前版本的卡

10、。除了 SD/SDIO/MMC,这个接口完全与 CE-ATA 数字协议版本 1.1 兼容。本实训的作品是利用基于 ARM Cotex-M3 内核的嵌入式处理器 STM32 自带的SDIO 硬件接口来驱动 SD 卡,并结合文件系统 FATFS R0.07C 来完成一个基于嵌入式 ARM 的 SD 卡读写的作品,现实向 SD 卡写入一个 txt 文件,并读取 SD 卡的文件目标并通过串口打印到 PC 机显示。本文第一章讲述了该论文写作背景,主要阐述了 ARM 应用范畴,以及该论文研究的内容;第二章讲述了该研究课题使用的核心芯片 STM32F103VET6 的各 桂林电子科技大学实训(论文)报告用纸

11、 第 2 页 共 24 页 项参数;第三章着重介绍了 SDIO 的原理及实现方法;第四章着重介绍了 FAT 文件系统的原理;第五章介绍了测试方法和结果。1.31.3 研究成果研究成果给硬件系统供电(5V),插上 JLINK,插上串口线(两头都是母的交叉线),插上 MicroSD 卡,打开超级终端,配置超级终端为 115200 8-N-1,将编译好的程序下载到硬件平台,即可看到超级终端打印出如下信息:图 1-3 显示结果图2 STM32 处理器概述处理器概述2.12.1 STM32STM32 简介简介 STM32F103xx 增强型系列使用高性能的 ARM/Cortex-M3/32 位的 RIS

12、C 内核,工作频率为 72MHz,内置高速存储器(高达 128K 字节的闪存和 20K 字节的 SRAM),丰富的增强 I/O 端口和联接到两条 APB 总线的外设。所有型号的器件都包含 2个 12 位的 ADC 、3 个通用 16 位定时器和一个 PWM 定时器,还包含标准和先进的通信接口:多达 2 个 I2C 和 SPI、3 个 USART、一个 USB 和一个 CAN。 STM32F103xx 增强型系列工作于-40至+105 的温度范围,供电电压2.0V 至 3.6V,一系列的省电模式保证低功耗应用的要求。 桂林电子科技大学实训(论文)报告用纸 第 3 页 共 24 页 完整的 STM

13、32F103xx 增强型系列产品包括从 36 脚至 100 脚的五种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相同。下面给出了该系列产品中所有外设的基本介绍。 这些丰富的外设配置,使得 STM32F103xx 增强型微控制器适合于多种应用场合: 电机驱动和应用控制 ; 医疗和手持设备 ; PC 外设和 GPS 平台; 工业应用:可编程控制器、变频器、打印机和扫描仪 ; 警报系统,视频对讲,和暖气通风空调系统 ;2.1.1 STM32F103VET6 的参数STM32F103VET6 芯片的参数如表 2-1 桂林电子科技大学实训(论文)报告用纸 第 4 页 共 24 页 表 2-1

14、器件功能和配置(STM32F103xx 增强型)芯片引脚图如图 2-2:图 2-2 STM32F103xx 增强型 LQPFP100 管脚图 桂林电子科技大学实训(论文)报告用纸 第 5 页 共 24 页 2.22.2 内部资源内部资源STM32 有丰富的内部资源,如下所示:RealView MDK(Miertocontroller Development Kit)基于 ARM 微控制器的专业嵌入式开发工具;内置闪存存储器;内置 SRAM; 嵌套的向量式中断控制器(NVIC);外部中断/事件控制器(EXTI); 时钟和启动; 自举模式; DMA ;RTC(实时时钟)和后备寄存器 ;窗口看门狗;

15、 I2C 总线 ;通用同步/异步接受发送器(USART); 串行外设接口(SPI); 控制器区域网络(CAN) ;通用串行总线(USB); 通用输入输出接口(GPIO); ADC(模拟/数字转换器) ;温度传感器; 串行线 JTAG 调试口(SWJ-DP)。 2.32.3 Cortex-M3Cortex-M3 内核简介内核简介Cortex-M3 内核包含一个适用于传统 Thumb 和新型 Thumb-2 指令的译码器、一个支持硬件乘法和硬件除法的先进 ALU、控制逻辑和用于连接处理器其他部件的接口。Cortex-M3 处理器是首款基于 ARMv7-M 架构的 ARM 处理器。中央Cortex-

16、M3 内核使用 3 级流水线哈佛架构,运用分支预测、单周期乘法和硬件 桂林电子科技大学实训(论文)报告用纸 第 6 页 共 24 页 除法功能实现了出色的效率(1.25DMIPS/MHz) 。Cortex-M3 处理器是一个 32 位处理器,带有 32 位宽的数据路径、寄存器库和基于传统 ARM7 处理器的系统只支持访问对齐的数据,沿着对齐的字边界即可对数据进行访问和存储。Cortex-M3 处理器采用非对齐数据访问方式,使非对齐数据可以在单核访问中进行传输。Cortex-M3 处理器是专为那些对成本和功耗非常敏感但同时对性能要求又相当高的应用而设计的。凭借缩小的内核尺寸和出色的中断延迟性能、

17、集成的系统部件、灵活的配置、简单的高级编程和强大的软件系统,Cortex-M3 处理器将成为从复杂的芯片系统到低端微控制器等各种系统的理想解决方案。表 2-3为 Cortex-M3 处理器与 ARM7 作比较。表 2-3 Cortex-M3 与 ARM7 相比较 桂林电子科技大学实训(论文)报告用纸 第 7 页 共 24 页 2.42.4 STM32STM32 SDIOSDIO 简介简介.1 SDIOSDIO 简介简介STM32F103VET6 具有一个 SDIO 接口。SD/SDIO/MMC 主机接口可以支持MMC 卡系统规范 4.2 版中的 3 个不同的数据总线模式:1 位

18、(默认)、4 位和 8位。在 8 位模式下,该接口可以使数据传输速率达到 48MHz,该接口兼容 SD存储卡规范 2.0 版。SDIO 存储卡规范 2.0 版支持两种数据总线模式:1 位(默认)和 4 位。 目前的芯片版本只能一次支持一个 SD/SDIO/MMC 4.2 版的卡,但可以同时支持多个 MMC 4.1 版或之前版本的卡。除了 SD/SDIO/MMC,这个接口完全与 CE-ATA 数字协议版本 1.1 兼容。.2 SDIOSDIO 功能特性功能特性 (1)主要功能SD/SDIO MMC 卡主机模块(SDIO)在 AHB 外设总线和多媒体卡(MMC)、SD 存储卡、SD

19、IO 卡和 CE-ATA 设备间提供了操作接口。 多媒体卡系统规格书由 MMCA 技术委员会发布,可以在多媒体卡协会的网站上()获得。 CE-ATA 系统规格书可以在 CE-ATA 工作组的网站上()获得。 SDIO 的主要功能如下: 与多媒体卡系统规格书版本 4.2 全兼容。支持三种不同的数据总线模式:1 位(默认)、4 位和 8 位。 与较早的多媒体卡系统规格版本全兼容(向前兼容)。 与 SD 存储卡规格版本 2.0 全兼容。 与 SD I/O 卡规格版本 2.0 全兼容:支持良种不同的数据总线模式:1 位(默认)和 4 位。 完全支持

20、CE-ATA 功能(与 CE-ATA 数字协议版本 1.1 全兼容)。 8 位总线模式下数据传输速率可达 48MHz。 数据和命令输出使能信号,用于控制外部双向驱动器。(2)SDIO 总线拓扑总线上的通信是通过传送命令和数据实现。 在多媒体卡/SD/SD I/O 总线上的基本操作是命令/响应结构,这样的总线操 桂林电子科技大学实训(论文)报告用纸 第 8 页 共 24 页 作在命令或总线机制下实现信息交换;另外,某些操作还具有数据令牌。 在 SD/SDIO 存储器卡上传送的数据是以数据块的形式传输;在 MMC 上传送的数据是以数据块或数据流的形式传输;在 CE-ATA 设备上传送的数据也是以数

21、据块的形式传输。3 SDIO 的原理及实现方法的原理及实现方法3.13.1 原理原理SDIO 包含 2 个部分: SDIO 适配器模块:实现所有 MMC/SD/SD I/O 卡的相关功能,如时钟的产生、命令和数据的传送。 AHB 总线接口:操作 SDIO 适配器模块中的寄存器,并产生中断和DMA 请求信号。图 3-1 SDIO 框图复位后默认情况下 SDIO_D0 用于数据传输。初始化后主机可以改变数据总线的宽度。 如果一个多媒体卡接到了总线上,则 SDIO_D0、SDIO_D3:0或SDIO_D7:0可以用于数据传输。MMC 版本 V3.31 和之前版本的协议只支持 1位数据线,所以只能用

22、SDIO_D0。 如果一个 SD 或 SD I/O 卡接到了总线上,可以通过主机配置数据传输使用SDIO_D0 或 SDIO_D3:0。所有的数据线都工作在推挽模式。 SDIO_CMD 有两种操作模式: 用于初始化时的开路模式(仅用于 MMC 版本 V3.31 或之前版本) 用于命令传输的推挽模式(SD/SD I/O 卡和 MMC V4.2 在初始化时也使 桂林电子科技大学实训(论文)报告用纸 第 9 页 共 24 页 用推挽驱动) SDIO_CK 是卡的时钟:每个时钟周期在命令和数据线上传输 1 位命令或数据。对于多媒体卡 V3.31 协议,时钟频率可以在 0MHz 至 20MHz 间变化;

23、对于多媒体卡 V4.0/4.2 协议,时钟频率可以在 0MHz 至 48MHz 间变化;对于 SD或 SD I/O 卡,时钟频率可以在 0MHz 至 25MHz 间变化。 SDIO 使用两个时钟信号: SDIO 适配器时钟(SDIOCLK=HCLK) AHB 总线时钟(HCLK/2) 下表适用于多媒体卡/SD/SD I/O 卡总线:表 3-1 SDIO 引脚定义3.23.2 SDIOSDIO 适配器适配器下图是简化的 SDIO 适配器框图:图 3-2 SDIO 适配器 命令通道状态机(CPSM) 当写入命令寄存器并设置了使能位,开始发送命令。命令发送完成时,命令通道状态机(CPSM)设置状态标

24、志并在不需要响应时进入空闲状态(见下图)。当收到响应后,接收到的 CRC 码将会与内部产生的 CRC 码比较,然后设置相应的状态标志。当进入等待(Wait)状态时,命令定时器开始运行;当 CPSM 进 桂林电子科技大学实训(论文)报告用纸 第 10 页 共 24 页 入接收(Receive)状态之前,产生了超时,则设置超时标志并进入空闲(Idle)状态。 命令格式 命令:命令是用于开始一项操作。主机向一个指定的卡或所有的卡发出带地址的命令或广播命令(广播命令只适合于 MMC V3.31 或之前的版本)。命令在CMD 线上串行传送。所有命令的长度固定为 48 位,下表给出了多媒体卡、SD存储卡和

25、 SDIO 卡上一般的命令格式。CE-ATA 命令是 MMC V4.2 命令的扩充,所以具有相同的格式。 命令通道操作于半双工模式,这样命令和响应可以分别发送和接收。如果 CPSM 不处在发送状态,SDIO_CMD 输出处于高阻状态。SDIO_CMD 上的数据与 SDIO_CK 的上升沿同步。3.3 SDIO 卡识别过程多媒体卡和 SD 卡的卡识别过程是有区别的;对于多媒体卡,卡识别过程以时钟频率 Fod 开始,所有 SDIO_CMD 输出为开路驱动,允许在这个过程中的卡的并行连接,识别过程如下: 1. 总线被激活 2. SDIO 卡主机广播发送 SEND_OP_COND(CMD1)命令,并接

26、收操作条件 3. 得到的响应是所有卡的操作条件寄存器内容的“线与” 4. 不兼容的卡会被置于非激活状态 5. SDIO 卡主机广播发送 ALL_SEND_CID(CMD2)至所有激活的卡 6. 所有激活的卡同时串行地发送他们的 CID 号,那些检测到输出的 CID位与命令线上的数据不相符的卡必须停止发送,并等待下一个识别周期。最终只有一个卡能够成功地传送完整的 CID 至 SDIO 卡主机并进入识别状态。 7. SDIO 卡主机发送 SET_RELATIVE_ADDR(CMD3)命令至这个卡,这个新的地址被称为相对卡地址(RCA),它比 CID 短,用于对卡寻址。至此,这个卡转入待机状态,并不

27、再响应新的识别过程,同时它的输出驱动从开路转变为推挽模式。 8. SDIO 卡主机重复上述步骤 5 至 7,直到收到超时条件。 对于 SD 卡而言,卡识别过程以时钟频率 Fod 开始,所有 SDIO_CMD 输出为推挽驱动而不是开路驱动,识别过程如下: 1. 总线被激活 2. SDIO 卡主机广播发送 SEND_APP_OP_COND(ACMD41)命令 3. 得到的响应是所有卡的操作条件寄存器的内容 桂林电子科技大学实训(论文)报告用纸 第 11 页 共 24 页 4. 不兼容的卡会被置于非激活状态 5. SDIO 卡主机广播发送 ALL_SEND_CID(CMD2)至所有激活的卡 6. 所

28、有激活的卡发送回他们唯一卡识别号(CID)并进入识别状态。 7. SDIO 卡主机发送 SET_RELATIVE_ADDR(CMD3)命令和一个地址到一个激活的卡,这个新的地址被称为相对卡地址(RCA),它比 CID 短,用于对卡寻址。至此,这个卡转入待机状态。SDIO 卡主机可以再次发送该命令更改RCA,卡的 RCA 将是最后一次的赋值。 8. SDIO 卡主机对所有激活的卡重复上述步骤 5 至 7。 对于 SD I/O 卡而言,卡识别过程如下: 1. 总线被激活 2. SDIO 卡主机发送 IO_SEND_OP_COND(CMD5)命令 3. 得到的响应是卡的操作条件寄存器的内容 4. 不

29、兼容的卡会被置于非激活状态5. SDIO 卡主机发送 SET_RELATIVE_ADDR(CMD3)命令和一个地址到一个激活的卡,这个新的地址被称为相对卡地址(RCA),它比 CID 短,用于对卡寻址。至此,这个卡转入待机状态。SDIO 卡主机可以再次发送该命令更改RCA,卡的 RCA 将是最后一次的赋值。3.4 SDIO 写数据块执行写数据块命令(CMD24-27)时,主机把一个或多个数据块从主机传送到卡中,同时在每个数据块的末尾传送一个 CRC 码。一个支持写数据块命令的卡应该始终能够接收由 WRITE_BL_LEN 定义的数据块。如果 CRC 校验错误,卡通过 SDIO_D 信号线指示错

30、误,传送的数据被丢弃而不被写入,所有后续(在多块写模式下)传送的数据块将被忽略。 如果主机传送部分数据,而累计的数据长度未与数据块对齐,当不允许块错位(未设置 CSD 的参数 WRITE_BLK_MISALIGN),卡将在第一个错位的块之前检测到块错位错误(设置状态寄存器中的 ADDRESS_ERROR 错误位)。当主机试图写一个写保护区域时,写操作也会被中止,此时卡会设置WP_VIOLATION 位。 设置 CID 和 CSD 寄存器不需要事先设置块长度,传送的数据也是通过CRC 保护的。如果 CSD 或 CID 寄存器的部分是存储在 ROM 中,则这个不能更改的部分必须与接收缓冲区的对应部

31、分相一致,如果有不一致之处,卡将报告一个错误同时不修改任何寄存器的内容。有些卡需要长的甚至不可预计的时 桂林电子科技大学实训(论文)报告用纸 第 12 页 共 24 页 间完成写一个数据块,在接收一个数据块并完成 CRC 检验后,卡开始写操作,如果它的写缓冲区已经满并且不能再从新的 WRITE_BLOCK 命令接受新的数据时,它会把 SDIO_D 信号线拉低。主机可以在任何时候使用SEND_STATUS(CMD13)查询卡的状态,卡将返回当前状态。READY_FOR_DATA 状态位指示卡是否可以接受新的数据或写操作是否还在进行。主机可以使用 CMD7(选择另一个卡)不选中某个卡,而把这个卡置

32、于断开状态,这样可以释放 SDIO_D 信号线而不中断未完成的写操作;当重新选择了一个卡,如果写操作仍然在进行并且写缓冲区仍不能使用,它会重新通过拉低SDIO_D 信号线指示忙的状态。3.5 SDIO 读数据块在读数据块模式下,数据传输的基本单元是数据块,它的大小在 CSD 中(READ_BL_LEN)定义。如果设置了 READ_BL_PARTIAL,同样可以传送较小的数据块,较小数据块是指开始和结束地址完全包含在一个物理块中,READ_BL_LEN 定义了物理块的大小。为保证数据传输的正确,每个数据块后都有一个 CRC 校验码。CMD17(READ_SINGLE_BLOCK)启动一次读数据块

33、操作,在传输结束后卡返回到发送状态。 CMD18(READ_MULTIPLE_BLOCK)启动一次连续多个数据块的读操作。 主机可以在多数据块读操作的任何时候中止操作,而不管操作的类型。发送停止传输命令即可中止操作。 如果在多数据块读操作中(任一种类型)卡检测到错误(例如:越界、地址错位或内部错误),它将停止数据传输并仍处于数据状态;此时主机必须发送停止传输命令中止操作。在停止传输命令的响应中报告读错误。 如果主机发送停止传输命令时,卡已经传输完一个确定数目的多个数据块操作中的最后一个数据块,因为此时卡已经不在数据状态,主机会得到一个非法命令的响应。如果主机传输部分数据块,而累计的数据长度不能

34、与物理块对齐同时不允许块错位,卡会在出现第一个未对齐的块时检测出一个块对齐错误,并在状态寄存器中设置 ADDRESS_ERROR 错误标志。4 FatFS 文件系统文件系统4.14.1 FatFSFatFS 文件系统简介文件系统简介FAFFS 是面向小型嵌入式系统的一种通用的 FAT 文件系统。FATFS 完全 桂林电子科技大学实训(论文)报告用纸 第 13 页 共 24 页 是由 AISI C 语言编写并且完全独立于底层的 I/O 介质。因此它可以很容易地不加修改地移植到其他的处理器当中,如8051、PIC、AVR、SH、Z80、H8、ARM 等。FATFS 支持FAT12、FAT16、FA

35、T32 等格式,所以我们利用前面写好的 SDIO 驱动,把FATFS 文件系统代码移植到工程之中,就可以利用文件系统的各种函数,对已格式化的 SD 卡进行读写文件了。4.24.2 FatFSFatFS 文件系统移植文件系统移植.1 移植前工作移植前工作在移植 FATFS 文件系统之前,我们先要到 FAT 的官网获取源码,版本为R0.07C。解压之后可看到里面有 doc 和 src 这两个文件夹。doc 文件夹里面是一些使用文档, src 里面是文件系统的源码。图 4-1 FATFS 源码.2 开始移植开始移植首先我们要获取一个完全没有修改过的文件系统源码,然后在

36、 10-MicroSD卡这个文件夹下的实验代码下移植,这个实验代码实现的是卡的底层的块操作。注意,我们在移植这个文件系统的过程中会尽量保持文件系统源码的纯净,尽量做到在修改最少量的源码的情况下移植成功。 FATFS 模块在移植的时候,我们一般只需要修改 2 个文件,即 ffconf.h 和diskio.c。FATFS 模块的所有配置项都是存放在 ffconf.h 里面,我们可以通过配置里面的一些选项,来满足自己的需求。接下来我们介绍几个重要的配置选项。 桂林电子科技大学实训(论文)报告用纸 第 14 页 共 24 页 1)_FS_TINY。这个选项在 R0.07 版本中开始出现,之前的版本都是

37、以独立的 C 文件出现(FATFS 和 Tiny FATFS),有了这个选项之后,两者整合在一起了,使用起来更方便。我们使用 FATFS,所以把这个选项定义为 0 即可。2)_FS_READONLY。这个用来配置是不是只读,本章我们需要读写都用,所以这里设置为 0 即可。3)_USE_STRFUNC。这个用来设置是否支持字符串类操作,比如f_putc,f_puts 等,本章我们需要用到,故设置这里为 1。4)_USE_MKFS。这个用来定时是否使能格式化,本章需要用到,所以设置这里为 1。5)_USE_FASTSEEK。这个用来使能快速定位,我们设置为 1,使能快速定位。6)_CODE_PAG

38、E。这个用于设置语言类型,包括很多选项(见 FATFS 官网说明),我们这里设置为 936,即简体中文(GBK 码,需要 c936.c 文件支持,该文件在 option 文件夹)。7)_USE_LFN。该选项用于设置是否支持长文件名(还需要_CODE_PAGE 支持),取值范围为 03。0,表示不支持长文件名,13 是支持长文件名,但是存储地方不一样,我们选择使用 3,通过 ff_memalloc 函数来动态分配长文件名的存储区域。8)_VOLUMES。用于设置 FATFS 支持的逻辑设备数目,我们设置为 2,即支持 2 个设备。9)_MAX_SS。扇区缓冲的最大值,一般设置为 512。下面我

39、们来讲讲 FATFS 的移植,FATFS 的移植主要分为 3 步: 数据类型:在 integer.h 里面去定义好数据的类型。这里需要了解你用的编译器的数据类型,并根据编译器定义好数据类型。 配置:通过 ffconf.h 配置 FATFS 的相关功能,以满足你的需要。 函数编写:打开 diskio.c,进行底层驱动编写,一般需要编写 6 个接口函数。通过以上三步,我们即可完成对 FATFS 的移植。第一步,我们使用的是 MDK3.80a 编译器,器数据类型和 integer.h 里面定义的一致,所以此步,我们不需要做任何改动。第二步,关于 ffconf.h 里面的相关配置,我们在前面已经有介绍

40、(之前介 桂林电子科技大学实训(论文)报告用纸 第 15 页 共 24 页 绍的 9 个配置),我们将对应配置修改为我们介绍时候的值即可,其他的配置用默认配置。第三步,因为 FATFS 模块完全与磁盘 I/O 层分开,因此需要下面的函数来实现底层物理磁盘的读写与获取当前时间。底层磁盘 I/O 模块并不是 FATFS 的一部分,并且必须由用户提供。5 测试及结果测试及结果5.15.1 JTAGJTAG 仿真器介绍仿真器介绍J-Link 是支持仿真 ARM 内核芯片的 JTAG 仿真器。配合 IAR EWARM,ADS,KEIL,WINARM,RealView 等集成开发环境支持所有ARM7/AR

41、M9 内核芯片的仿真,通过 RDI 接口和各集成开发环境无缝连接,操作方便、连接方便、简单易学,是学习开发 ARM 最好最实用的开发工具。DQ 电子推出的 J-LinkV7 仿真器采用原版固件,参照原版原理图,经过DQ 团队的长时间精工制作,板型合理,元件布局美观大方,走线严谨精致,并且每一个产品都经过功能和老化测试,功能完全与原版一致,支持在线升级。J-Link ARM 主要特点:IAR EWARM 集成开发环境无缝连接的 JTAG 仿真器。 支持所有 ARM7/ARM9 内核的芯片,以及 cortexM3,包括 Thumb 模式。支持 ADS,IAR,KEIL,WINARM,REALVIE

42、W 等几乎所有的开发环境。下载速度高达 ARM7:600kB/s,ARM9:550kB/s,通过 DCC 最高可达 800 kB/s*最高 JTAG 速度 12MHz。目标板电压范围 1.2V3.3V。 自动速度识别功能。监测所有 JTAG 信号和目标板电压。 完全即插即用。 使用 USB 电源(可接通 J12 跳线给目标板供电,出厂时未接通)。 带 USB 连接线和 20 芯 JTAG 连接排线。 支持多 JTAG 器件串行连接。 标准 20 芯 JTAG 仿真插头。 带 J-Link TCP/IP server,允许通过 TCP/IP 网络使用 J-Link 桂林电子科技大学实训(论文)报

43、告用纸 第 16 页 共 24 页 支持的内核: ARM7TDMI(Rev 1); ARM7TDMI(Rev 3); ARM7TDMI-S(Rev 4); ARM720T ;CORTEXM3。5.25.2 现象及结果现象及结果给硬件系统供电(5V),插上 JLINK,插上串口线(两头都是母的交叉线),插上 MicroSD 卡,打开超级终端,配置超级终端为 115200 8-N-1,将编译好的程序下载到硬件平台,即可看到超级终端打印出如下信息:图 5-1 测试效果图 桂林电子科技大学实训(论文)报告用纸 第 17 页 共 24 页 6 结论结论很多单片机系统都需要大容量存储设备,以存储数据。目前

44、常用的有 U 盘,FLASH 芯片,SD 卡等。他们各有优点,综合比较,最适合单片机系统的莫过于 SD 卡了,它不仅容量可以做到很大(32Gb 以上) ,而且支持 SPI 接口,方便移动,并且有几种体积的尺寸可供选择(标准的 SD 卡尺寸,以及 TF 卡尺寸等) ,能满足不同应用的要求。本实训的作品是利用基于 ARM Cotex-M3 内核的嵌入式处理器 STM32 自带的 SDIO 硬件接口来驱动 SD 卡,并结合文件系统 FATFS R0.07C 来完成一个基于嵌入式 ARM 的 SD 卡读写的作品,现实向 SD卡写入一个 txt 文件,并读取 SD 卡的文件目标并通过串口打印到 PC 机

45、显示。通过本实训,我更加掌握了嵌入式 ARM STM32 的外围应用设计以及 SD 卡的驱动和文件系统的使用方法。 桂林电子科技大学实训(论文)报告用纸 第 18 页 共 24 页 致致 谢谢本实训从最初的选题到系统设计、程序编写直到论文的撰写过程中都得到了孙安青老师的悉心指导与指正,您细心教导和热心关怀使得我能够顺利完成本次实训任务。孙老师热心的工作态度、严谨的治学态度,也使我受益匪浅,终生难忘。同时要感谢我们班各位同学,你们细心地给我分析该设计的设计流程,耐心地讲解程序运行过程,并给设计的不足提出很好的建议和方针,是你们的帮助,让我对本设计理解更透彻,在此表示衷心地感谢.大学里我并不孤独,

46、在老师和同学们陪伴下,我度过了愉快的四年,在此衷心感谢大家 桂林电子科技大学实训(论文)报告用纸 第 19 页 共 24 页 参考文献参考文献1 康华光.电子技术基础模拟部分第四版M.北京:高等教育出版社,1999.6.2 阎石.数字电子技术基础第四版M.北京:高等教育出版社,1999.6.3王福瑞等单片微机测控系统设计大全M北京航空航天大学出版社,1998(331337)4宁改娣,杨拴科DSP 控制器原理及应用M科学出版社,20025 周立功等.ARM嵌入式系统基础教程M.北京:北京航空航天大学出版社,2005.1.6 周立功等.ARM嵌入式系统实验教程M.北京:北京航空航天大学出版社,20

47、05.1.7 唐清善.Protel DXP高级实例教程M.中国水利水电出版社,2004.4.8 罗浩等.一种新的基于ARM的数据采集系统设计J.信阳师范学院学报(自然科学版),2006.4.9 秦伟等.基于ARM 处理器的数据采集系统的设计J.自动化技术与应用.2006 年第1期.10 杜春雷.ARM体系结构与编程.清华大学出版社,2003. 11 李宁.ARM开发工具ReaIView MDK使用入门M.北京航空航天大学出版社,2008.12 李宁.基于MDK的STM32处理器开发应用M.北京航空航天大学出版社,2008.13刘黎明等.单片机与嵌入式系统应用J.英文刊名MICROCON TROLLER&EMBEDDED SYSTEM. 2002(7).14 赵葵银,王辉,吴俊.电压空间矢量控制的三相PWM整流器的研究J.上海第二工业大学学报,2003(2):43-50.15 Malinowski Mariusz.Jasinski Marek,Kazmierkowski Marian P.Simple Direct Power

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论