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

下载本文档

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

文档简介

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

2、DCard(SecureDigitalMemoryCard)ChinesetranslationforSecureDigitalCard,itisakindofbasedonsemiconductorflashMemoryofanewgenerationofMemorydevice,itiswidelyusedinportabledevices,suchasDigitalcameras,personalDigitalassistant(PDA)andmultimediaplayer,etc.ThistrainingworkisbasedonARMCotex-M3kernelembeddedpr

3、ocessorSTM32ownSDIOhardwareinterfacetodrivetheSDcard,andcombinedwiththefilesystemFATFSR0.07CtocompleteabasedonembeddedARMoftheSDcard,speaking,readingandwritingwork,realitytoSDcardtoaTXTfile,andreadSDcardfilegoalsandthroughtheserialportprinttoPCdisplay.Keywords:embedded;ARM;STM32;SDCard;Filesystem桂林电

4、子科技大学实训(论文)报告用纸第1页共1页桂林电子科技大学实训(论文)报告用纸第1页共1页目录TOC o 1-5 h z HYPERLINK l bookmark0 o Current Document 前言1 HYPERLINK l bookmark2 o Current Document ARM应用背景1 HYPERLINK l bookmark4 o Current Document 研究内容2 HYPERLINK l bookmark6 o Current Document 研究成果3 HYPERLINK l bookmark8 o Current Document STM32处理器概

5、述3 HYPERLINK l bookmark10 o Current Document STM32简介3 HYPERLINK l bookmark12 o Current Document STM32F103VET6的参数4 HYPERLINK l bookmark16 o Current Document 内部资源6 HYPERLINK l bookmark18 o Current Document CORTEX-M3内核简介6 HYPERLINK l bookmark20 o Current Document STM32SDIO简介7SDIO简介7SDIO功能特性8 HYPERLINK

6、l bookmark28 o Current Document SDIO的原理及实现方法8 HYPERLINK l bookmark30 o Current Document 3.1原理9 HYPERLINK l bookmark36 o Current Document SDIO适配器10 HYPERLINK l bookmark38 o Current Document SDIO卡识别过程11 HYPERLINK l bookmark50 o Current Document SDIO写数据块12 HYPERLINK l bookmark52 o Current Document SDIO

7、读数据块13 HYPERLINK l bookmark56 o Current Document FATFS文件系统13 HYPERLINK l bookmark58 o Current Document FATFS文件系统简介13 HYPERLINK l bookmark60 o Current Document FATFS文件系统移植144.2.1移植前工作14开始移植14 HYPERLINK l bookmark62 o Current Document 测试及结果15 HYPERLINK l bookmark64 o Current Document 5.1JTAG仿真器介绍16 HY

8、PERLINK l bookmark84 o Current Document 现象及结果16 HYPERLINK l bookmark86 o Current Document 结论18致谢19 HYPERLINK l bookmark88 o Current Document 参考文献20桂林电子科技大学实训(论文)报告用纸第 页共24页桂林电子科技大学实训(论文)报告用纸第 页共24页1前言ARM应用背景如今,学习一种处理器的就有许多ARM内核的处理器可供使用,现在社会已步入嵌入式学习阶段。在嵌入式领域,8位处理器已经不再胜任一些复杂的应用,比如GUI,TCP/IP,FILESYSTEM

9、等,而ARM芯片凭借强大的处理能力和极低的功耗,非常适合这些场合。现在越来越多的产品在选型的时候考虑到使用ARM处理器,ARM的应用是相当的广泛。ARM的嵌入式控制应用如:汽车、电子设备、保安设备、大容量存储器、调制解调器、打印机等。一个典型的ARM嵌入式工业控制系统的功能模块如图1-1所示。LCD键盘主机EPRAI/O图1-1ARM嵌入式工业控制系统的功能模块目前已有超过85%的无线通信设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。ARM在此方面的应用如:手提式计算机、移动电话、PDA等。随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,AR

10、M在语音及视频处理上进行了优化,并获得广泛支持。ARM技术在目前流行的数字音频播放器、数字机顶盒、游戏机、数码相机、数字式电视机、GPS、机顶盒中得到广泛采用。现在流行的数码相机和打印机中绝大部分采用ARM技术,手机中的32位SIM智能卡也采用了ARM技术。如图1-2所示是基于ARM技术的数码相机的功能模块9tab.aa/r控制电ADCCCD*_arm处理器路和编码电主机LCD图1-2基于ArM技术的数码相控的功能模块1.2研究内容本设计旨在加深对ARM的学习,巩固大学四年所学专业知识,提升动手能力和思考问题解决问题的能力。本设计选择意法半导体的STM32F103系列处理器,通过自制STM32

11、开发板的过程,和对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/MMC4.2版的卡,但可以同时支持多个MMC4.1版或之前版本的卡。除了SD/SDIO/MMC,这个接口完全与CE-ATA数字协议版本1.1兼容。本实训的

12、作品是利用基于ARMCotex-M3内核的嵌入式处理器STM32自带的SDIO硬件接口来驱动SD卡,并结合文件系统FATFSR0.07C来完成一个基于嵌入式ARM的SD卡读写的作品,现实向SD卡写入一个txt文件,并读取SD卡的文件目标并通过串口打印到PC机显示。本文第一章讲述了该论文写作背景,主要阐述了ARM应用范畴,以及该论文研究的内容;第二章讲述了该研究课题使用的核心芯片STM32F103VET6的各项参数;第三章着重介绍了SDIO的原理及实现方法;第四章着重介绍了FAT文件系统的原理;第五章介绍了测试方法和结果。研究成果给硬件系统供电(5V),插上JLINK,插上串口线(两头都是母的交

13、叉线),插上MicroSD卡,打开超级终端,配置超级终端为1152008-N-1,将编译好的程序下载到硬件平台,即可看到超级终端打印出如下信息:图1-3显示结果图2STM32处理器概述STM32简介STM32F103xx增强型系列使用高性能的ARM/Cortex-M3/32位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一个CAN。

14、STM32F103xx增强型系列工作于-40C至+105C的温度范围,供电电压2.0V至3.6V,一系列的省电模式保证低功耗应用的要求。完整的STM32F103xx增强型系列产品包括从36脚至100脚的五种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相同。下面给出了该系列产品中所有外设的基本介绍。这些丰富的外设配置,使得STM32F103xx增强型微控制器适合于多种应用场合:电机驱动和应用控制;医疗和手持设备;PC外设和GPS平台;工业应用:可编程控制器、变频器、打印机和扫描仪;警报系统,视频对讲,和暖气通风空调系统;STM32F103VET6的参数STM32F103VET6芯片的参

15、数如表2-1PEG匚VBATLPC13-TAMPER-RTC匚PC14-OSC32IN匚VSSAEVREF-EVREF+匚VDDA匸PAO-WKUP匚VDD_5匚OSCINCOSCOLFTLNAST匚表2-1器件功能和配置(STM32F103xx增强型)外设ST)l32F10mSW32F1O3CXSnS2F103KxSW32F103VX闪存(K字节)32643264128326412564128RMKK字节)1020102020102020定时雅通用23233233高级1111通信SPI12122122I2C12122122USART23233233USB11111111CAN11111111

16、通用I/O端口263251SO吃位同步ADC2通道2皿通道216通道CPU频率72MHz工作电压2.0至生6V工作温度-40+85C/-40至4-105C封装VFQFPN3&LQFP48LQFP64LjQFPI.00,BGA1.00芯片引脚图如图2-2:VDD_2VSS_2NCPA13PA12PA11PA10PA9PA8PCSPC8PC?peePD15PD14PD13PD12PD11PD10PD9PD8PB15PB14PB13PB12图2-2STM32F103xx增强型LQPFP100管脚图桂林电子科技大学实训(论文)报告用纸第6页共24页桂林电子科技大学实训(论文)报告用纸第6页共24页2.

17、2内部资源STM32有丰富的内部资源,如下所示:RealViewMDK(MiertocontrollerDevelopmentKit)基于ARM微控制器的专业嵌入式开发工具;内置闪存存储器;内置SRAM;嵌套的向量式中断控制器(NVIC);外部中断/事件控制器(EXTI);时钟和启动;自举模式;DMA;RTC(实时时钟)和后备寄存器;窗口看门狗;I2C总线;通用同步/异步接受发送器(USART);串行外设接口(SPI);控制器区域网络(CAN);通用串行总线(USB);通用输入输出接口(GPIO);ADC(模拟/数字转换器);温度传感器;串行线JTAG调试口(SWJ-DP)。Cortex-M3

18、内核简介Cortex-M3内核包含一个适用于传统Thumb和新型Thumb-2指令的译码器、一个支持硬件乘法和硬件除法的先进ALU、控制逻辑和用于连接处理器其他部件的接口。Cortex-M3处理器是首款基于ARMv7-M架构的ARM处理器。中央Cortex-M3内核使用3级流水线哈佛架构,运用分支预测、单周期乘法和硬件除桂林电子科技大学实训(论文)报告用纸第 页共24页桂林电子科技大学实训(论文)报告用纸第 页共24页法功能实现了出色的效率(1.25DMIPS/MHz)。Cortex-M3处理器是一个32位处理器,带有32位宽的数据路径、寄存器库和基于传统ARM7处理器的系统只支持访问对齐的数

19、据,沿着对齐的字边界即可对数据进行访问和存储。Cortex-M3处理器采用非对齐数据访问方式,使非对齐数据可以在单核访问中进行传输。Cortex-M3处理器是专为那些对成本和功耗非常敏感但同时对性能要求又相当高的应用而设计的。凭借缩小的内核尺寸和出色的中断延迟性能、集成的系统部件、灵活的配置、简单的高级编程和强大的软件系统,Cortex-M3处理器将成为从复杂的芯片系统到低端微控制器等各种系统的理想解决方案。表2-3为Cortex-M3处理器与ARM7作比较。表2-3Cortex-M3与ARM7相比较比较项目ARM7Cortex-M3架构ARMv4T(冯诺依曼)指令和数据总线共用,会出现瓶颈A

20、RMv7-M(皓佛)指令和数据总线分开,无瓶颈指令集32位ARM指令+16位Tlnuiib指令两套指令之间需要进行状态切换Tluunb/Thiunb-2指令集16位和32位指令可直接混写,无需状态切换流水线3级流水线若出现转移则需要刷新流水线,损失惨重3级流水线+分支预测出现转移时流水线无需刷新,几乎无损失性能0.95DNnPS/MHz(ARM模式)1.25DMIPS/MHZ功耗0.28mWZMHz0.19mW/MHz低功耗模式无內置睡眠模式面积0.62nmi2(仅内核)0.86nmi2(内核+外设中断普通中断IRQ和快速中断HQ太少,大量外设不得不复用中断不可屏蔽中断NMI+1240个物理中

21、断每个外设都可以独占一个中断,效率高中断延迟2442个时钟周期,缓慢12个时钟周期,最快只需6个中断压橈软件手工压橈,代码长且效率低硬件自动压楊,无需代码且效率高存储器保护无8段存储器保护单元MPU)内核寄存器寄存器分为多组,结构复杂,占核面积多寄存器不分组SP除外),结构简单工作模式7种工作模式,比较复杂只有线程模式和处理模式两种,简单乘除法指令多周期乘法指令,无除法指令单周期乘法指令,212周期除法指令位操作无访问外设寄存器需分“读-改-写”3步走先进的Bit-band位操作技术可直接访间外设寄存器的某个位系统节拍定时无內置系统节拍定时器,有利于操作系统移植STM32SDIO简介2.4.1

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

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

24、数据传输速率可达48MHz。数据和命令输出使能信号,用于控制外部双向驱动器。(2)SDIO总线拓扑总线上的通信是通过传送命令和数据实现。在多媒体卡/SD/SDI/O总线上的基本操作是命令/响应结构,这样的总线操作在命令或总线机制下实现信息交换;另外,某些操作还具有数据令牌。在SD/SDIO存储器卡上传送的数据是以数据块的形式传输;在MMC上传送的数据是以数据块或数据流的形式传输;在CE-ATA设备上传送的数据也是以数据块的形式传输。3SDIO的原理及实现方法3.1原理SDIO包含2个部分:SDIO适配器模块:实现所有MMC/SD/SDI/O卡的相关功能,如时钟的产生、命令和数据的传送。AHB总

25、线接口:操作SDIO适配器模块中的寄存器,并产生中断和DMA请求信号。图3-1SDIO框图复位后默认情况下SDIO_D0用于数据传输。初始化后主机可以改变数据总线的宽度。如果一个多媒体卡接到了总线上,则SDIO_DO、SDIO_D3:0或SDIO_D7:0可以用于数据传输。MMC版本V3.31和之前版本的协议只支持1位数据线,所以只能用SDIO_D0。如果一个SD或SDI/O卡接到了总线上,可以通过主机配置数据传输使用SDIO_DO或SDIO_D3:0。所有的数据线都工作在推挽模式。SDIO_CMD有两种操作模式:用于初始化时的开路模式(仅用于MMC版本V3.31或之前版本)用于命令传输的推挽

26、模式(SD/SDI/O卡和MMCV4.2在初始化时也使用推挽驱动)SDIO_CK是卡的时钟:每个时钟周期在命令和数据线上传输1位命令或数据。对于多媒体卡V3.31协议,时钟频率可以在0MHz至20MHz间变化;对于多媒体卡V4.0/4.2协议,时钟频率可以在0MHz至48MHz间变化;对于SD或SDI/O卡,时钟频率可以在0MHz至25MHz间变化。SDIO使用两个时钟信号:桂林电子科技大学实训(论文)报告用纸第 页共24页桂林电子科技大学实训(论文)报告用纸第 页共24页SDIO适配器时钟(SDIOCLK=HCLK)AHB总线时钟(HCLK/2)下表适用于多媒体卡/SD/SDI/O卡总线:表

27、3-1SDIO引脚定义引脚方向说明SDIO_CK输出寥媒休卡於DfSDIO卡时钟.这足从主机至卡的时钟銭SDIO_CMD双向箔媒体卡fSDSDIO卡命令。这是双向的命令/响应信号线SDIO_D7:0双向务媒体卡怡D/SDIO卡数这些昱双向的数拥总线SDIO适配器下图是简化的SDIO适配器框图:图3-2SDIO适配器命令通道状态机(CPSM)当写入命令寄存器并设置了使能位,开始发送命令。命令发送完成时,命令通道状态机(CPSM)设置状态标志并在不需要响应时进入空闲状态(见下图)。当收到响应后,接收到的CRC码将会与内部产生的CRC码比较,然后设置相应的状态标志。当进入等待(Wait)状态时,命令

28、定时器开始运行;当CPSM进入接收(Receive)状态之前,产生了超时,则设置超时标志并进入空闲(Idle)状态。命令格式命令:命令是用于开始一项操作。主机向一个指定的卡或所有的卡发出带地址的命令或广播命令(广播命令只适合于MMCV3.31或之前的版本)。命令在CMD线上串行传送。所有命令的长度固定为48位,下表给出了多媒体卡、SD存储卡和SDIO卡上一般的命令格式。CE-ATA命令是MMCV4.2命令的扩充,所以具有相同的格式。命令通道操作于半双工模式,这样命令和响应可以分别发送和接收。如果CPSM不处在发送状态,SDIO_CMD输出处于高阻状态。SDIO_CMD上的数据与SDIO_CK的

29、上升沿同步。3.3SDIO卡识别过程多媒体卡和SD卡的卡识别过程是有区别的;对于多媒体卡,卡识别过程以时钟频率Fod开始,所有SDIO_CMD输出为开路驱动,允许在这个过程中的卡的并行连接,识别过程如下:1.总线被激活SDIO卡主机广播发送SEND_0P_C0ND(CMD1)命令,并接收操作条件得到的响应是所有卡的操作条件寄存器内容的“线与”不兼容的卡会被置于非激活状态SDIO卡主机广播发送ALL_SEND_CID(CMD2)至所有激活的卡所有激活的卡同时串行地发送他们的CID号,那些检测到输出的CID位与命令线上的数据不相符的卡必须停止发送,并等待下一个识别周期。最终只有一个卡能够成功地传送

30、完整的CID至SDIO卡主机并进入识别状态。SDIO卡主机发送SET_RELATIVE_ADDR(CMD3)命令至这个卡,这个新的地址被称为相对卡地址(RCA),它比CID短,用于对卡寻址。至此,这个卡转入待机状态,并不再响应新的识别过程,同时它的输出驱动从开路转变为推挽模式。SDIO卡主机重复上述步骤5至7,直到收到超时条件。对于SD卡而言,卡识别过程以时钟频率Fod开始,所有SDIO_CMD输出为推挽驱动而不是开路驱动,识别过程如下:总线被激活SDIO卡主机广播发送SEND_APP_0P_C0ND(ACMD41)命令得到的响应是所有卡的操作条件寄存器的内容不兼容的卡会被置于非激活状态SDI

31、O卡主机广播发送ALL_SEND_CID(CMD2)至所有激活的卡所有激活的卡发送回他们唯一卡识别号(CID)并进入识别状态。SDIO卡主机发送SET_RELATIVE_ADDR(CMD3)命令和一个地址到一个激活的卡,这个新的地址被称为相对卡地址(RCA),它比CID短,用于对卡寻址。至此,这个卡转入待机状态。SDIO卡主机可以再次发送该命令更改RCA,卡的RCA将是最后一次的赋值。SDIO卡主机对所有激活的卡重复上述步骤5至7。对于SDI/O卡而言,卡识别过程如下:桂林电子科技大学实训(论文)报告用纸第 页共24页桂林电子科技大学实训(论文)报告用纸第 页共24页1.总线被激活SDIO卡主

32、机发送I0_SEND_0P_C0ND(CMD5)命令得到的响应是卡的操作条件寄存器的内容不兼容的卡会被置于非激活状态SDIO卡主机发送SET_RELATIVE_ADDR(CMD3)命令和一个地址到一个激活的卡,这个新的地址被称为相对卡地址(RCA),它比CID短,用于对卡寻址。至此,这个卡转入待机状态。SDIO卡主机可以再次发送该命令更改RCA,卡的RCA将是最后一次的赋值。3.4SDIO写数据块执行写数据块命令(CMD24-27)时,主机把一个或多个数据块从主机传送到卡中,同时在每个数据块的末尾传送一个CRC码。一个支持写数据块命令的卡应该始终能够接收由WRITE_BL_LEN定义的数据块。

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

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

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

36、个数据块的读操作。主机可以在多数据块读操作的任何时候中止操作,而不管操作的类型。发送停止传输命令即可中止操作。如果在多数据块读操作中(任一种类型)卡检测到错误(例如:越界、地址错位或内部错误),它将停止数据传输并仍处于数据状态;此时主机必须发送停止传输命令中止操作。在停止传输命令的响应中报告读错误。如果主机发送停止传输命令时,卡已经传输完一个确定数目的多个数据块操作中的最后一个数据块,因为此时卡已经不在数据状态,主机会得到一个非法命令的响应。如果主机传输部分数据块,而累计的数据长度不能与物理块对齐同时不允许块错位,卡会在出现第一个未对齐的块时检测出一个块对齐错误,并在状态寄存器中设置ADDRE

37、SS_ERROR错误标志。4FatFS文件系统FatFS文件系统简介FAFFS是面向小型嵌入式系统的一种通用的FAT文件系统。FATFS完全是由AISIC语言编写并且完全独立于底层的I/0介质。因此它可以很容易地不加修改地移植到其他的处理器当中,如8051、PIC、AVR、SH、Z80、H8、ARM等。FATFS支持FAT12、FAT16FAT32等格式,所以我们利用前面写好的SDIO驱动,把FATFS文件系统代码移植到工程之中,就可以利用文件系统的各种函数,对已格式化的SD卡进行读写文件了。4.2FatFS文件系统移植移植前工作在移植FATFS文件系统之前,我们先要到FAT的官网获取源码,版

38、本为R0.07C。解压之后可看到里面有doc和src这两个文件夹。doc文件夹里面是一些使用文档,src里面是文件系统的源码。图4-1FATFS源码4.2.2开始移植首先我们要获取一个完全没有修改过的文件系统源码,然后在10-MicroSD卡这个文件夹下的实验代码下移植,这个实验代码实现的是卡的底层的块操作。注意,我们在移植这个文件系统的过程中会尽量保持文件系统源码的纯净,尽量做到在修改最少量的源码的情况下移植成功。FATFS模块在移植的时候,我们一般只需要修改2个文件,即ffconf.h和diskio.c。FATFS模块的所有配置项都是存放在ffconf.h里面,我们可以通过配置里面的一些选

39、项,来满足自己的需求。接下来我们介绍几个重要的配置选项。1)_FS_TINY。这个选项在R0.07版本中开始出现,之前的版本都是以独立的C文件出现(FATFS和TinyFATFS),有了这个选项之后,两者整合在一起了,使用起来更方便。我们使用FATFS,所以把这个选项定义为0即可。2)_FS_READONLY。这个用来配置是不是只读,本章我们需要读写都用,所以这里设置为0即可。桂林电子科技大学实训(论文)报告用纸第 页共24页桂林电子科技大学实训(论文)报告用纸第 页共24页3)_USE_STRFUNC。这个用来设置是否支持字符串类操作,比如f_putc,f_puts等,本章我们需要用到,故设

40、置这里为1。4)_USE_MKFS。这个用来定时是否使能格式化,本章需要用到,所以设置这里为1。5)_USE_FASTSEEK。这个用来使能快速定位,我们设置为1,使能快速定位。6)_CODE_PAGE。这个用于设置语言类型,包括很多选项(见FATFS官网说明),我们这里设置为936,即简体中文(GBK码,需要c936.c文件支持,该文件在option文件夹)。7)_USE_LFN。该选项用于设置是否支持长文件名(还需要_CODE_PAGE支持),取值范围为03。0,表示不支持长文件名,13是支持长文件名,但是存储地方不一样,我们选择使用3,通过ff_memalloc函数来动态分配长文件名的存

41、储区域。8)VOLUMES。用于设置FATFS支持的逻辑设备数目,我们设置为2,即支持2个设备。9)_MAX_SS。扇区缓冲的最大值,一般设置为512。下面我们来讲讲FATFS的移植,FATFS的移植主要分为3步:数据类型:在integer.h里面去定义好数据的类型。这里需要了解你用的编译器的数据类型,并根据编译器定义好数据类型。配置:通过ffconf.h配置FATFS的相关功能,以满足你的需要。函数编写:打开diskio.c,进行底层驱动编写,一般需要编写6个接口函数。通过以上三步,我们即可完成对FATFS的移植。第一步,我们使用的是MDK3.80a编译器,器数据类型和integer.h里面

42、定义的一致,所以此步,我们不需要做任何改动。第二步,关于ffconf.h里面的相关配置,我们在前面已经有介绍(之前介绍的9个配置),我们将对应配置修改为我们介绍时候的值即可,其他的配置用默认配置。第三步,因为FATFS模块完全与磁盘I/O层分开,因此需要下面的函数来实现底层物理磁盘的读写与获取当前时间。底层磁盘I/O模块并不是FATFS的一部分,并且必须由用户提供。5测试及结果JTAG仿真器介绍J-Link是支持仿真ARM内核芯片的JTAG仿真器。配合IAREWARM,ADS,KEIL,WINARM,RealView等集成开发环境支持所有ARM7/ARM9内核芯片的仿真,通过RDI接口和各集成

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

44、,通过DCC最高可达800kB/s*最高JTAG速度12MHz。目标板电压范围1.2V3.3V。自动速度识别功能。监测所有JTAG信号和目标板电压。完全即插即用。使用USB电源(可接通J12跳线给目标板供电,出厂时未接通)。带USB连接线和20芯JTAG连接排线。支持多JTAG器件串行连接。标准20芯JTAG仿真插头。带J-LinkTCP/IPserver,允许通过TCP/IP网络使用J-Link支持的内核:ARM7TDMI(Rev1);ARM7TDMI(Rev3);ARM7TDMI-S(Rev4);ARM720T;CORTEXM3。现象及结果给硬件系统供电(5V),插上JLINK,插上串口线

45、(两头都是母的交叉线),插上MicroSD卡,打开超级终端,配置超级终端为1152008-N-1,将编译好的程序下载到硬件平台,即可看到超级终端打印出如下信息:图5-1测试效果图6结论很多单片机系统都需要大容量存储设备,以存储数据。目前常用的有u盘,FLASH芯片,SD卡等。他们各有优点,综合比较,最适合单片机系统的莫过于SD卡了,它不仅容量可以做到很大(32Gb以上),而且支持SPI接口,方便移动,并且有几种体积的尺寸可供选择(标准的SD卡尺寸,以及TF卡尺寸等),能满足不同应用的要求。本实训的作品是利用基于ARMCotex-M3内核的嵌入式处理器STM32自带的SDIO硬件接口来驱动SD卡

46、,并结合文件系统FATFSR0.07C来完成一个基于嵌入式ARM的SD卡读写的作品,现实向SD卡写入一个txt文件,并读取SD卡的文件目标并通过串口打印到PC机显示。通过本实训,我更加掌握了嵌入式ARMSTM32的外围应用设计以及SD卡的驱动和文件系统的使用方法。致谢本实训从最初的选题到系统设计、程序编写直到论文的撰写过程中都得到了孙安青老师的悉心指导与指正,您细心教导和热心关怀使得我能够顺利完成本次实训任务。孙老师热心的工作态度、严谨的治学态度,也使我受益匪浅,终生难忘。同时要感谢我们班各位同学,你们细心地给我分析该设计的设计流程,耐心地讲解程序运行过程,并给设计的不足提出很好的建议和方针,

47、是你们的帮助,让我对本设计理解更透彻,在此表示衷心地感谢.大学里我并不孤独,在老师和同学们陪伴下,我度过了愉快的四年,在此衷心感谢大家桂林电子科技大学实训(论文)报告用纸第20页共24页桂林电子科技大学实训(论文)报告用纸第20页共24页参考文献康华光电子技术基础模拟部分第四版M.北京:高等教育出版社,1999.6.阎石数字电子技术基础第四版M.北京:高等教育出版社,1999.6.王福瑞等.单片微机测控系统设计大全M.北京航空航天大学出版社,1998(331337).宁改娣,杨拴科.DSP控制器原理及应用M.科学出版社,2002.周立功等.ARM嵌入式系统基础教程M.北京:北京航空航天大学出版

48、社,2005.1.周立功等.ARM嵌入式系统实验教程M.北京:北京航空航天大学出版社,2005.1.唐清善.ProtelDXP高级实例教程M.中国水利水电出版社,2004.4.罗浩等.一种新的基于ARM的数据采集系统设计J.信阳师范学院学报(自然科学版),2006.4.秦伟等基于ARM处理器的数据采集系统的设计J.自动化技术与应用.2006年第1期.杜春雷.ARM体系结构与编程清华大学出版社,2003.李宁.ARM开发工具RealViewMDK使用入门M.北京航空航天大学出版社,2008.李宁.基于MDK的STM32处理器开发应用M.北京航空航天大学出版社,2008.刘黎明等.单片机与嵌入式系

49、统应用J.英文刊名MICROCONTROLLER&EMBEDDEDSYSTEM.2002(7).赵葵银,王辉,吴俊.电压空间矢量控制的三相PWM整流器的研究J上海第二工业大学学报,2003(2):43-50.MalinowskiMariusz.JasinskiMarek,KazmierkowskiMarianP.SimpleDirectPowerControlofThree-PhasePWMRectifierUsingSpace-VectorModulationJ.IEEETransactionsonIndustrial,Electronics,2004,51(2):447-454.桂林电子科

50、技大学实训(论文)报告用纸第 页共24页桂林电子科技大学实训(论文)报告用纸第 页共24页1.电源部分:附录一硬件原理图2.STM32处理器部分:MCU心川就|广rCt-nftr陀IJjCfrfcST3.SD卡部分:PCP-SDIO-Dl宀丨FA:iZ.i::-paKE?t7iw沁mi4.串口通信部分:PAMM炉U&AJtnCTS/ADCliiINC/nMSCHlnKQCH1ETR/mAETRPAiADCU*iN4PAS.ariraaccwroltvadcu_1HsPMHPl厂MISiynKSlBKIHAfJCllNbTIKaCHliTIMlHILISPAAUSAR:lCK/nMICHITD(

51、ZnMlRTR.IJSBrAliJTMSSiMJKlpAHTrcx.swajcPAiAJTDMHJY&M1&3MSPBOfADCi:NVTIMJCH3OIM&CHIXIMICH2NPBI.jCjCirN*T7M3_CH4.TIMfCHJKCTMl-CHiWFRiBoarfrBkjnMyntACsr*9usexxmck/hmzchxshjsckpB*.wmisT5PuMscyriMiaiLSpiiaaoPRS.ttCISMRWUM7J8L4S3SD/TBiJCHMHIM0&3fikccFsa.nauCKiABAAfitxPWJUCrsn*.FSM?NAnV.*m4nCMblBAR7iRXPWXTMCH4.SDK)DS12CISTMkCANTXFBitrtJcftxtoqaoPBIl42C28CWVltSJTrRXTMTCHFBiispnNSMa:smr

温馨提示

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

评论

0/150

提交评论