基于嵌入式ARM的SD卡的读写

上传人:无*** 文档编号:104680637 上传时间:2022-06-10 格式:DOC 页数:20 大小:94.50KB
收藏 版权申诉 举报 下载
基于嵌入式ARM的SD卡的读写_第1页
第1页 / 共20页
基于嵌入式ARM的SD卡的读写_第2页
第2页 / 共20页
基于嵌入式ARM的SD卡的读写_第3页
第3页 / 共20页
资源描述:

《基于嵌入式ARM的SD卡的读写》由会员分享,可在线阅读,更多相关《基于嵌入式ARM的SD卡的读写(20页珍藏版)》请在装配图网上搜索。

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

2、n 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 Digital assistant and multimedia player, etc. This training work is based on ARM Cotex - M3 kernel embedded pr

3、ocessor 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 and writing work, reality to SD card to a TXT file, and read SD card file goals and through the serial port print to P

4、C display.Key words:embedded;ARM;STM32; SD Card; File system18 / 20目 录1 前言11.1 ARM应用背景11.2 研究内容21.3 研究成果32 STM32处理器概述32.1 STM32简介32.1.1 STM32F103VET6的参数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读数据

5、块134 FATFS文件系统134.1 FatFS文件系统简介134.2 FatFS文件系统移植14移植前工作14开始移植145 测试及结果165.1 JTAG仿真器介绍165.2 现象及结果176 结论18致谢19参考文献201 前言1.1 ARM应用背景如今,学习一种处理器的就有许多ARM内核的处理器可供使用,现在社会已步入嵌入式学习阶段。在嵌入式领域,8位处理器已经不再胜任一些复杂的应用,比如GUI,TCP/IP,FILESYSTEM等,而ARM芯片凭借强大的处理能力和极低的功耗,非常适合这些场合。现在越来越多的产品在选型的时候考虑到使用ARM处理器,ARM的应用是相当的广泛。 ARM处

6、理器ADCI/O接口键盘RAM LED传感器转换器LCD DACEPROM主机ARM的嵌入式控制应用如:汽车、电子设备、保安设备、大容量存储器、调制解调器、打印机等。一个典型的ARM嵌入式工业控制系统的功能模块如图1-1所示。输入输出图1-1 ARM嵌入式工业控制系统的功能模块目前已有超过85的无线通信设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。ARM在此方面的应用如:手提式计算机、移动电话、PDA等。随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上进行了优化,并获得广泛支持。ARM技术在目前流行的数字音频播放器、数

7、字机顶盒、游戏机、数码相机、数字式电视机、GPS、机顶盒中得到广泛采用。现在流行的数码相机和打印机中绝大部分采用ARM技术,手机中的32位SIM智能卡也采用了ARM技术。如图1-2所示是基于ARM技术的数码相机的功能模块9。ARM处理器LCD控制器主机接口CCDADC控制电路和编码电路存储器图1-2 基于ARM技术的数码相机的功能模块1.2 研究内容 本设计旨在加深对ARM的学习,巩固大学四年所学专业知识,提升动手能力和思考问题解决问题的能力。本设计选择意法半导体的STM32F103系列处理器,通过自制STM32开发板的过程,和对STM32F103C8T6芯片的研究学习,掌握其各种外设功能。S

8、TM32F103VET6具有一个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版或之前版本的卡。除了SD/SDIO/MMC,这个接口完全与CE-ATA数字协议版本1.1兼容。本实训的作品是利用基于ARM Cotex-M3内核的嵌入式处理器STM32自带的SDIO硬件接口来驱动

9、SD卡,并结合文件系统FATFS R0.07C来完成一个基于嵌入式ARM的SD卡读写的作品,现实向SD卡写入一个txt文件,并读取SD卡的文件目标并通过串口打印到PC机显示。本文第一章讲述了该论文写作背景,主要阐述了ARM应用范畴,以及该论文研究的内容;第二章讲述了该研究课题使用的核心芯片STM32F103VET6的各项参数;第三章着重介绍了SDIO的原理及实现方法;第四章着重介绍了FAT文件系统的原理;第五章介绍了测试方法和结果。1.3 研究成果给硬件系统供电,插上JLINK,插上串口线,插上MicroSD卡,打开超级终端,配置超级终端为115200 8-N-1,将编译好的程序下载到硬件平台

10、,即可看到超级终端打印出如下信息:图1-3 显示结果图2 STM32处理器概述2.1 STM32简介 STM32F103xx增强型系列使用高性能的ARM/Cortex-M3/32位的RISC内核,工作频率为72MHz,内置高速存储器,丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC 、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一个CAN。 STM32F103xx增强型系列工作于-40至+105 的温度范围,供电电压2.0V至3.6V,一系列的省电模式保证低功耗应用的要求。 完整

11、的STM32F103xx增强型系列产品包括从36脚至100脚的五种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相同。下面给出了该系列产品中所有外设的基本介绍。 这些丰富的外设配置,使得STM32F103xx增强型微控制器适合于多种应用场合: 电机驱动和应用控制 ;医疗和手持设备 ;PC外设和GPS平台; 工业应用:可编程控制器、变频器、打印机和扫描仪 ;警报系统,视频对讲,和暖气通风空调系统 ;2.1.1 STM32F103VET6的参数STM32F103VET6芯片的参数如表2-1表2-1 器件功能和配置芯片引脚图如图2-2:图2-2 STM32F103xx增强型LQPFP100管

12、脚图2.2 内部资源STM32有丰富的内部资源,如下所示:RealView MDKMiertocontroller Development Kit基于ARM微控制器的专业嵌入式开发工具;内置闪存存储器;内置SRAM; 嵌套的向量式中断控制器;外部中断/事件控制器; 时钟和启动; 自举模式; DMA;RTC和后备寄存器 ;窗口看门狗; I2C总线 ;通用同步/异步接受发送器; 串行外设接口; 控制器区域网络 ;通用串行总线; 通用输入输出接口; ADC ;温度传感器; 串行线JTAG调试口。 2.3 Cortex-M3内核简介Cortex-M3内核包含一个适用于传统Thumb和新型Thumb-2

13、指令的译码器、一个支持硬件乘法和硬件除法的先进ALU、控制逻辑和用于连接处理器其他部件的接口。Cortex-M3处理器是首款基于ARMv7-M架构的ARM处理器。中央Cortex-M3内核使用3级流水线哈佛架构,运用分支预测、单周期乘法和硬件除法功能实现了出色的效率1.25DMIPS/MHz。Cortex-M3处理器是一个32位处理器,带有32位宽的数据路径、寄存器库和基于传统ARM7处理器的系统只支持访问对齐的数据,沿着对齐的字边界即可对数据进行访问和存储。Cortex-M3处理器采用非对齐数据访问方式,使非对齐数据可以在单核访问中进行传输。Cortex-M3处理器是专为那些对成本和功耗非常

14、敏感但同时对性能要求又相当高的应用而设计的。凭借缩小的内核尺寸和出色的中断延迟性能、集成的系统部件、灵活的配置、简单的高级编程和强大的软件系统,Cortex-M3处理器将成为从复杂的芯片系统到低端微控制器等各种系统的理想解决方案。表2-3为Cortex-M3处理器与ARM7作比较。表2-3 Cortex-M3与ARM7相比较2.4 STM32 SDIO简介2.4.1 SDIO简介STM32F103VET6具有一个SDIO接口。SD/SDIO/MMC主机接口可以支持MMC卡系统规范4.2版中的3个不同的数据总线模式:1位、4位和8位。在8位模式下,该接口可以使数据传输速率达到48MHz,该接口兼

15、容SD存储卡规范2.0版。SDIO存储卡规范2.0版支持两种数据总线模式:1位和4位。目前的芯片版本只能一次支持一个SD/SDIO/MMC 4.2版的卡,但可以同时支持多个MMC 4.1版或之前版本的卡。除了SD/SDIO/MMC,这个接口完全与CE-ATA数字协议版本1.1兼容。2.4.2 SDIO功能特性1主要功能SD/SDIO MMC卡主机模块在AHB外设总线和多媒体卡、SD存储卡、SDIO卡和CE-ATA设备间提供了操作接口。多媒体卡系统规格书由MMCA技术委员会发布,可以在多媒体卡协会的网站上获得。CE-ATA系统规格书可以在CE-ATA工作组的网站上获得。SDIO的主要功能如下:与

16、多媒体卡系统规格书版本4.2全兼容。支持三种不同的数据总线模式:1位、4位和8位。与较早的多媒体卡系统规格版本全兼容。与SD存储卡规格版本2.0全兼容。与SD I/O卡规格版本2.0全兼容:支持良种不同的数据总线模式:1位和4位。完全支持CE-ATA功能。8位总线模式下数据传输速率可达48MHz。数据和命令输出使能信号,用于控制外部双向驱动器。2SDIO总线拓扑总线上的通信是通过传送命令和数据实现。在多媒体卡/SD/SD I/O总线上的基本操作是命令/响应结构,这样的总线操作在命令或总线机制下实现信息交换;另外,某些操作还具有数据令牌。在SD/SDIO存储器卡上传送的数据是以数据块的形式传输;

17、在MMC上传送的数据是以数据块或数据流的形式传输;在CE-ATA设备上传送的数据也是以数据块的形式传输。3 SDIO的原理及实现方法3.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位数据

18、线,所以只能用SDIO_D0。如果一个SD或SD I/O卡接到了总线上,可以通过主机配置数据传输使用SDIO_D0或SDIO_D3:0。所有的数据线都工作在推挽模式。SDIO_CMD有两种操作模式:用于初始化时的开路模式 用于命令传输的推挽模式 SDIO_CK是卡的时钟:每个时钟周期在命令和数据线上传输1位命令或数据。对于多媒体卡V3.31协议,时钟频率可以在0MHz至20MHz间变化;对于多媒体卡V4.0/4.2协议,时钟频率可以在0MHz至48MHz间变化;对于SD或SD I/O卡,时钟频率可以在0MHz至25MHz间变化。SDIO使用两个时钟信号:SDIO适配器时钟 AHB总线时钟 下表

19、适用于多媒体卡/SD/SD I/O卡总线:表3-1 SDIO引脚定义3.2 SDIO适配器下图是简化的SDIO适配器框图:图3-2 SDIO适配器命令通道状态机 当写入命令寄存器并设置了使能位,开始发送命令。命令发送完成时,命令通道状态机设置状态标志并在不需要响应时进入空闲状态。当收到响应后,接收到的CRC码将会与内部产生的CRC码比较,然后设置相应的状态标志。当进入等待状态时,命令定时器开始运行;当CPSM进入接收状态之前,产生了超时,则设置超时标志并进入空闲状态。命令格式命令:命令是用于开始一项操作。主机向一个指定的卡或所有的卡发出带地址的命令或广播命令。命令在CMD线上串行传送。所有命令

20、的长度固定为48位,下表给出了多媒体卡、SD存储卡和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命令,并接收操作

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

22、重复上述步骤5至7,直到收到超时条件。对于SD卡而言,卡识别过程以时钟频率Fod开始,所有SDIO_CMD输出为推挽驱动而不是开路驱动,识别过程如下:1. 总线被激活2. SDIO卡主机广播发送SEND_APP_OP_COND命令3. 得到的响应是所有卡的操作条件寄存器的内容4. 不兼容的卡会被置于非激活状态5. SDIO卡主机广播发送ALL_SEND_CID至所有激活的卡6. 所有激活的卡发送回他们唯一卡识别号并进入识别状态。7. SDIO卡主机发送SET_RELATIVE_ADDR命令和一个地址到一个激活的卡,这个新的地址被称为相对卡地址,它比CID短,用于对卡寻址。至此,这个卡转入待机状

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

24、据块命令时,主机把一个或多个数据块从主机传送到卡中,同时在每个数据块的末尾传送一个CRC码。一个支持写数据块命令的卡应该始终能够接收由WRITE_BL_LEN定义的数据块。如果CRC校验错误,卡通过SDIO_D信号线指示错误,传送的数据被丢弃而不被写入,所有后续传送的数据块将被忽略。如果主机传送部分数据,而累计的数据长度未与数据块对齐,当不允许块错位,卡将在第一个错位的块之前检测到块错位错误。当主机试图写一个写保护区域时,写操作也会被中止,此时卡会设置WP_VIOLATION位。设置CID和CSD寄存器不需要事先设置块长度,传送的数据也是通过CRC保护的。如果CSD或CID寄存器的部分是存储在

25、ROM中,则这个不能更改的部分必须与接收缓冲区的对应部分相一致,如果有不一致之处,卡将报告一个错误同时不修改任何寄存器的内容。有些卡需要长的甚至不可预计的时间完成写一个数据块,在接收一个数据块并完成CRC检验后,卡开始写操作,如果它的写缓冲区已经满并且不能再从新的WRITE_BLOCK命令接受新的数据时,它会把SDIO_D信号线拉低。主机可以在任何时候使用SEND_STATUS查询卡的状态,卡将返回当前状态。READY_FOR_DATA状态位指示卡是否可以接受新的数据或写操作是否还在进行。主机可以使用CMD7不选中某个卡,而把这个卡置于断开状态,这样可以释放SDIO_D信号线而不中断未完成的写

26、操作;当重新选择了一个卡,如果写操作仍然在进行并且写缓冲区仍不能使用,它会重新通过拉低SDIO_D信号线指示忙的状态。3.5 SDIO读数据块在读数据块模式下,数据传输的基本单元是数据块,它的大小在CSD中定义。如果设置了READ_BL_PARTIAL,同样可以传送较小的数据块,较小数据块是指开始和结束地址完全包含在一个物理块中,READ_BL_LEN定义了物理块的大小。为保证数据传输的正确,每个数据块后都有一个CRC校验码。CMD17启动一次读数据块操作,在传输结束后卡返回到发送状态。CMD18启动一次连续多个数据块的读操作。主机可以在多数据块读操作的任何时候中止操作,而不管操作的类型。发送

27、停止传输命令即可中止操作。如果在多数据块读操作中卡检测到错误,它将停止数据传输并仍处于数据状态;此时主机必须发送停止传输命令中止操作。在停止传输命令的响应中报告读错误。如果主机发送停止传输命令时,卡已经传输完一个确定数目的多个数据块操作中的最后一个数据块,因为此时卡已经不在数据状态,主机会得到一个非法命令的响应。如果主机传输部分数据块,而累计的数据长度不能与物理块对齐同时不允许块错位,卡会在出现第一个未对齐的块时检测出一个块对齐错误,并在状态寄存器中设置ADDRESS_ERROR错误标志。4 FatFS文件系统4.1 FatFS文件系统简介FAFFS是面向小型嵌入式系统的一种通用的FAT文件系

28、统。FATFS完全是由AISI C语言编写并且完全独立于底层的I/O介质。因此它可以很容易地不加修改地移植到其他的处理器当中,如8051、PIC、AVR、SH、Z80、H8、ARM等。FATFS支持FAT12、FAT16、FAT32等格式,所以我们利用前面写好的SDIO驱动,把FATFS文件系统代码移植到工程之中,就可以利用文件系统的各种函数,对已格式化的SD卡进行读写文件了。4.2 FatFS文件系统移植4.2.1移植前工作在移植FATFS文件系统之前,我们先要到FAT的官网获取源码,版本为R0.07C。解压之后可看到里面有doc 和src 这两个文件夹。doc 文件夹里面是一些使用文档,s

29、rc 里面是文件系统的源码。图4-1 FATFS源码4.2.2开始移植首先我们要获取一个完全没有修改过的文件系统源码,然后在10-MicroSD卡这个文件夹下的实验代码下移植,这个实验代码实现的是卡的底层的块操作。注意,我们在移植这个文件系统的过程中会尽量保持文件系统源码的纯净,尽量做到在修改最少量的源码的情况下移植成功。FATFS模块在移植的时候,我们一般只需要修改2个文件,即ffconf.h和diskio.c。FATFS模块的所有配置项都是存放在ffconf.h里面,我们可以通过配置里面的一些选项,来满足自己的需求。接下来我们介绍几个重要的配置选项。1_FS_TINY。这个选项在R0.07

30、版本中开始出现,之前的版本都是以独立的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_PAGE。这个用

31、于设置语言类型,包括很多选项见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。下面我们来讲讲FATFS的移植,FATFS的移植主要分为3步:数据类型:在

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

33、与磁盘I/O 层分开,因此需要下面的函数来实现底层物理磁盘的读写与获取当前时间。底层磁盘I/O 模块并不是FATFS的一部分,并且必须由用户提供。5 测试及结果5.1 JTAG仿真器介绍J-Link是支持仿真ARM内核芯片的JTAG仿真器。配合IAR EWARM,ADS,KEIL,WINARM,RealView等集成开发环境支持所有ARM7/ARM9内核芯片的仿真,通过RDI接口和各集成开发环境无缝连接,操作方便、连接方便、简单易学,是学习开发ARM最好最实用的开发工具。DQ电子推出的J-LinkV7仿真器采用原版固件,参照原版原理图,经过DQ团队的长时间精工制作,板型合理,元件布局美观大方,

34、走线严谨精致,并且每一个产品都经过功能和老化测试,功能完全与原版一致,支持在线升级。J-Link ARM主要特点:IAR EWARM集成开发环境无缝连接的JTAG仿真器。 支持所有ARM7/ARM9内核的芯片,以及cortexM3,包括Thumb模式。支持ADS,IAR,KEIL,WINARM,REALVIEW等几乎所有的开发环境。下载速度高达ARM7:600kB/s,ARM9:550kB/s,通过 DCC 最高可达 800 kB/s*最高JTAG速度 12MHz。目标板电压范围1.2V3.3V。 自动速度识别功能。监测所有JTAG信号和目标板电压。 完全即插即用。 使用USB电源可接通J12

35、跳线给目标板供电,出厂时未接通。 带USB连接线和20芯JTAG连接排线。 支持多JTAG器件串行连接。 标准20芯JTAG仿真插头。 带J-Link TCP/IP server,允许通过TCP/IP网络使用J-Link 支持的内核: ARM7TDMIRev 1; ARM7TDMIRev 3; ARM7TDMI-SRev 4; ARM720T ;CORTEXM3。5.2 现象及结果给硬件系统供电,插上JLINK,插上串口线,插上MicroSD卡,打开超级终端,配置超级终端为115200 8-N-1,将编译好的程序下载到硬件平台,即可看到超级终端打印出如下信息:图5-1 测试效果图6 结论很多单

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

37、式ARM STM32的外围应用设计以及SD卡的驱动和文件系统的使用方法。致 谢本实训从最初的选题到系统设计、程序编写直到论文的撰写过程中都得到了孙安青老师的悉心指导与指正,您细心教导和热心关怀使得我能够顺利完成本次实训任务。孙老师热心的工作态度、严谨的治学态度,也使我受益匪浅,终生难忘。同时要感谢我们班各位同学,你们细心地给我分析该设计的设计流程,耐心地讲解程序运行过程,并给设计的不足提出很好的建议和方针,是你们的帮助,让我对本设计理解更透彻,在此表示衷心地感谢.大学里我并不孤独,在老师和同学们陪伴下,我度过了愉快的四年,在此衷心感谢大家参考文献1 康华光.电子技术基础模拟部分第四版M.北京:

38、高等教育出版社,1999.6.2 阎石.数字电子技术基础第四版M.北京:高等教育出版社,1999.6.3王福瑞等单片微机测控系统设计大全M北京航空航天大学出版社,19984宁改娣,杨拴科DSP控制器原理及应用M科学出版社,20025周立功等.ARM嵌入式系统基础教程M.北京:北京航空航天大学出版社,2005.1.6周立功等.ARM嵌入式系统实验教程M.北京:北京航空航天大学出版社,2005.1.7唐清善.ProtelDXP高级实例教程M.中国水利水电出版社,2004.4.8罗浩等.一种新的基于ARM的数据采集系统设计J.XX师范学院学报,2006.4.9 秦伟等.基于ARM 处理器的数据采集系

39、统的设计J.自动化技术与应用.2006 年第1期.10 杜春雷.ARM体系结构与编程.清华大学出版社,2003.11 李宁.ARM开发工具ReaIView MDK使用入门M.北京航空航天大学出版社,2008.12 李宁.基于MDK的STM32处理器开发应用M.北京航空航天大学出版社,2008.13刘黎明等.单片机与嵌入式系统应用J.英文刊名MICROCON TROLLER&EMBEDDED SYSTEM. 2002.14 赵葵银,王辉,吴俊.电压空间矢量控制的三相PWM整流器的研究J.上海第二工业大学学报,2003:43-50.15 Malinowski Mariusz.Jasinski Ma

40、rek,Kazmierkowski Marian P.Simple Direct Power Control of Three-Phase PWM Rectifier Using Space-Vector ModulationJ.IEEE Transactions on Industrial,Electronics,2004,51:447-454.附 录一 硬件原理图1.电源部分:2.STM32处理器部分:3.SD卡部分:4.串口通信部分:附 录二 部分程序代码/* Includes -*/#include stm32f10x.h#include sdio_sdcard.h#include u

41、sart1.h#include ff.hint res; int a;FIL fsrc,fdst;FATFS fs;UINT br, bw; / File R/W countBYTE buffer512; / file copy bufferBYTE textFileBuffer = 感谢您选用 一信STM32开发板 !_ rn;int main /* USART1 config */USART1_Config;/* Interrupt Config */ NVIC_Configuration; printf;printfrn 这是一个MicroSD卡文件系统实验n;printf ;f_mou

42、nt; res = f_open;if /* 将缓冲区的数据写到文件中 */res = f_write&fdst, textFileBuffer, sizeof, &bw; printf; printf; /*关闭文件 */ f_close; else if printf;printf; /*- 将刚刚新建的文件里面的内容打印到超级终端 -*/ /* 以只读的方式打开刚刚创建的文件 */res = f_open; /* 打开文件 */br = 1;a = 0; for for a=0; a /* 清缓冲区 */buffera=0; res = f_read &fdst, buffer, sizeof, &br ; /* 将文件里面的内容读到缓冲区 */printf; if break; /* 错误或者到了文件尾 */ f_close; /* 关闭打开的文件 */ while /* COPYRIGHT 2012 WildFire Team *END OF FILE*/

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!