FAT文件系统在SD卡上的实现和应用.doc

上传人:教**** 文档编号:86265021 上传时间:2023-04-14 格式:DOC 页数:54 大小:1.12MB
返回 下载 相关 举报
FAT文件系统在SD卡上的实现和应用.doc_第1页
第1页 / 共54页
FAT文件系统在SD卡上的实现和应用.doc_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《FAT文件系统在SD卡上的实现和应用.doc》由会员分享,可在线阅读,更多相关《FAT文件系统在SD卡上的实现和应用.doc(54页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 北京邮电大学毕业设计(论文)用纸FAT文件系统在SD卡上的实现和应用摘 要本次设计的内容是FAT文件系统在SD卡上应用与实现。SD卡的结构能保证数字文件传送的安全性,也很容易重新格式化,所以有着广泛的应用领域,音乐、电影、新闻等多媒体文件都可以方便地保存到SD卡中。因此不少数码相机也开始支持SD卡。 本文主要利用C语言进行程序设计,编辑与编译软件:Win AVR仿真调试软件:AVR Studio 4,首先通过介绍SD总线下SD卡的底层读写操作,然后对FATFS文件系统结构进行分析,通过用串口查看SD卡获取文件。最后设计SD卡文件的读取、创建、删除的代码实现,通过交叉编译在Atmega16开发

2、板上测试。结果显示,该方法可以应用到MP3项目中,便于歌曲的读取,同样便于文件的管理。 AVR单片机的最小系统设计容易:只需要连接电源、焊接晶振就可以工作。很多概念初学者理解起来更容易:例如AVR的时钟源(晶振、内部RC等)不经过分频直接提供给CPU使用,而51的CPU主频等于晶振的12分频。 AVR既具有简单的、可以自制的ISP下载线和Jtag仿真器,又有DIP直插的封装形式。AVR的C语言编程与C语言教科书上学习的标准C语言语法是几乎一样的,不像51的C语言,一些bit、srf之类的变量定义在教科书中是找不到的,有利于后续嵌入式系统的学习。关键词: SD卡、FatFs文件系统、AVR单片机

3、i The application and Realization of FAT file system in the SD cardAbstract The content of this design is the application and Realization of FAT file system in the SD card. SD card structure can guarantee the security of digital file transfer, but also easy to format, so have a wide range of applica

4、tions, music, movies, news and other multimedia files can be easilysaved to SD card. So many digital cameras also support SD card. In this paper, using the C language program design, editing and compilingsoftware: Win AVR simulation software: AVR Studio 4, first introduces the underlying SD card und

5、er SD bus read and write operations, and then on the FAT32 file system structure is analyzed, by using serial view the SD cardaccess file. Finally, design of the SD card file read, create, delete the code to achieve, through cross compiler in Atmega16 development board test.The results show, the met

6、hod can be applied to the MP3 project, easy toread the same song, for file management. The minimum system design is easy: just need to connect the power supply,welding oscillator can work. Many beginners understand concepts more easily: for example AVR clock (crystal, internal RC) without frequencyd

7、irectly for CPU, and 51 CPU frequency equal to the frequency of 12. AVR not only has a simple, can be made ISP download line and Jtag simulator,and a package of DIP line. The standard C learning AVR C programming language and C language textbooks on the language grammar is almost the same, unlike th

8、e 51 C language, definition of variables bit, SRF, is not to be found in textbooks, useful for embedded system study.Key words: SD card file system, FatFs, AVR microcontrollerii目录摘 要iAbstractii第一章 引言1第一节 研究背景1第二节 研究现状2第三节 主要工作3第二章 需求分析4第一节 需求分析4第二节 性能分析4第三章 功能设计5第一节 总体设计5第二节 硬件设计5第三节 软件设计5第四章 SD卡规范7

9、第一节 SD卡概述7第二节 SD存储卡的系统概念7第三节 SD存储卡系统包括SD存储卡的总线及其主机应用7一、 SD总线拓扑结构7二、 SD总线协议8第五章 SD命令及参数及数据格式10第一节 SD卡命令描述10第七节 时序图14如图5.3所示:14第六章 SD卡初始化19第一节 SD卡上电19第二节 BPB、DBR、INFO信息的结构体21第七章 ATmega16单片机22第一节 ATmega16简介22第二节 ATmega16 内核介绍24第八章 FAT分区原理32第一节 FAT32 分区的基本构成32一、 DBR 扇区的结构32二、 保留扇区32三、 文件分配表FAT33四、 文件目录表

10、33五、 数据区33第二节 分区表34结论35参考文献36致谢37外文原文38中文翻译47 第一章 引言第一节 研究背景最小文件系统的特点: Windows可兼容的FAT文件系统; 不依赖平台,便于移植; 代码和工作区占用空间非常少; 多种配置可选;如:多卷(物理驱动器和分区); 多ANSI/OEM代码页,包括DBCS;在ANSI/OEM或Unicode中长文件名的支持; RTOS的支持多扇区大小的支持; 只读,最少API,I/O缓冲区等等. 如图1.1所示: 图1.1 fatfs文件系统应用有关C语言的介绍C语言是国际上流行的计算机高级语言,它很适合作为系统描述语言,即方便编写系统软件,亦可

11、以编写应用软件。在早期的操作系统软件大部分是汇编语言编写而成的,但由于汇编语言是依赖于计算机硬件程序可读性和可移植性级语言,相比较C语言兼具一般语言优点还能克服其他语言的缺点。有关SD/MMC简介SD(Secure Digital Card)卡,由松下、东芝和SanDisk共同推出,在1999年8月才首次发布。SD卡数据传送和物理规范是由MMC发展而来,尺寸和MMC差不多,大小为32mm x 24mm x 2.1mm。长宽和MMC一样,但却厚了0.7mm,以方便容纳更大容量的存贮单元。SD卡和MMC卡均保持着向上兼容,也就是说,MMC可被新的SD设备存取,而兼容性则取决于应用软件,与此同时SD

12、卡却不可被MMC设备存取。(SD卡外型采用了与MMC厚度相同的导轨式设计,让SD设备可以适合MMC) SD接口除了保留MMC的7针以外,还在两边多加2针作为数据线。采用NAND型的Flash Memory,基本上与SmartMedia的一样,平均数据传输率可达到2MB/s。MMC(MultiMediaCard)卡是由西门子公司和首推CF的SanDisk在1997年推出。MMC的发展目标主要目标是针对数码影像、电子书、手机、音乐、玩具等产品,是号称是目前世界上最小Flash Memory的存贮卡,大小只有32mm x 24mm x 1.4mm。虽然相对SmartMedia厚,但整体体积却相比Sm

13、artMedia小巧,而且也比SmartMedia轻,重量只有1.5克。MMC同样是把存贮单元和控制器一起做到了卡上,智能控制器可使得MMC同时保证兼容性和灵活性。 MMC存储卡可以分为MMC与SPI(serial peripheral interface)两种不同工作模式,首先,MMC模式是标准默认模式,有MMC的全部特性。而SPI模式是MMC存贮卡可选的第二种模式,此模式是MMC协议一个子集,一般主要用于只需要小数量的卡(通常是1个)和较低数据传输率(与MMC协议相比)的系统,此模式可以把设计花费减少到最小,但随之而来的,性能就不如MMC。 MMC的诞生作为一种低成本的数据平台和通讯介质,

14、所以它的接口设计非常的简单。它的读写模式共包括流式、多块和单块。最小数据传送是以块为一个单位的,缺省的块大小是512bytes。如图1.2所示: 图1.2 sd卡实物图第二节 研究现状AVR单片机为ATMEL公司研制开发的一种新型单片机,它和51单片机、PIC单片机相比较具有一系列优点:1:在相同系统时钟下AVR运行速度是最快的;2: 芯片内部Flsah、EEPROM、SRAM的容量较大;3:所有型号Flash、EEPROM都能反复烧写,而且全部支持在线编程烧写(ISP);4:多种频率内部RC振荡器、启动延时、上电自动复位、启动延时看门狗等功能,零外围电路亦可以工作;5:每个IO口都能以推换驱

15、动的方式输出高、低电平,驱动能力较强;6:内部资源丰富,大部分都集成AD、DA模数器;PWM;SPI、USART、TWI、I2C的通信口;丰富的中断源。目前支持AVR单片机编译器的语言主要是汇编语言、C语言、BASIC语言等。其中C编译器主要为CodeVisionAVR、AVRGCC、IAR、ICCAVR等,C语言编译器因为它本身具有功能强大、 运用灵活、代码小、运行速度快等先天性优点,使得它可以在专业程序设计上有不可代替的地位。有关sd卡SD卡是东芝在MMC卡技术上加入加密技术的硬件而成,由于MMC卡可能会容易让使用者拷贝数码音乐,东芝便加入这些技术期望让音乐业界安心。用户可使用一个USB读

16、卡器,在个人电脑上插入SD卡。某些新型电脑上已经内置可读卡的装置。最新的发展是SD卡内建了USB插口,省略了读卡器。SD卡的结构可保证数字文件传送的安全性,也很方便进行重新的格式化,所以一直有着广泛的应用领域,音乐、新闻、电影等多媒体文件都能方便地保存进SD卡里。因此不少数码相机也开始支持SD卡的功能。关于文件系统文件系统由三部分组成:文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。从系统的角度来看,文件系统是对文件存储器空间进行组织和分配的,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改文件,控制文件存取,当用户不再使用时撤销

17、文件等。FAT有一个很大的缺点:当文件删除后写入新资料,FAT不会将档案整理成完整片段再写入,长期使用会使档案资料慢慢变得分散,而降低了读写速度。硬盘碎片整理是其中一种解决方法,但是必须经常整理以此保持FAT文件系统的效率。第三节 主要工作在AVR单片机上通过串口链接电脑,电脑操作串口调试程序向AVR单片机上的SD卡发送指令,查看SD卡是否能接受调试程序所发送的信息,并且回馈。最终建立一个FATFS(用于在小型嵌入式系统中实现FAT文件系统)实现对SD卡的操作。 图1.3 sd卡初始化 图1.4写sd卡流程图第二章 需求分析第一节 需求分析本次设计的是FAT文件系统在SD卡上应用与实现。SD卡

18、的结构能保证数字文件传送的安全性,也很容易重新格式化,所以有着广泛的应用领域,音乐、电影、新闻等多媒体文件都可以方便地保存到SD卡中。因此不少数码相机也开始支持SD卡。此方法可以应用到MP3项目中,便于歌曲的读取,同样便于文件的管理。英雌,市场的需求便应运而生。第二节 性能分析FatFS是一个为小型嵌入式系统设计的通用FAT(File Allocation Table)文件系统模块。FatFs 的编写遵循ANSI C,并且完全与磁盘I/O层分开。因此,它独立(不依赖)于硬件架构。它可以被嵌入到低成本的微控制器中,如AVR, 8051, PIC, ARM, Z80, 68K 等等,而不需要做任何

19、修改。AVR单片机的最小系统设计容易:只需要连接电源、焊接晶振就可以工作。很多概念初学者理解起来更容易:例如AVR的时钟源(晶振、内部RC等)不经过分频直接提供给CPU使用,而51的CPU主频等于晶振的12分频。 AVR既具有简单的、可以自制的ISP下载线和Jtag仿真器,又有DIP直插的封装形式。AVR的C语言编程与C语言教科书上学习的标准C语言语法是几乎一样的,不像51的C语言,一些bit、srf之类的变量定义在教科书中是找不到的,有利于后续嵌入式系统的学习。鉴于FatFs的和AVR单片机的性能较为优秀,此次就采用在AVR单片机上移植FatFs文件系统的构架。 第三章 功能设计第一节 总体

20、设计一个好的系统设计的步骤决定了程序是否能按照设计者的目的按时完成,是否能在规定时间内按照设计者的要求高质量的完成程序的功能。通过对通讯录功能、系统模块、用户需求进行全方位的分析制定开发流程,开发流程如下所示。如图3.1所示:图3.1 开发流程第二节 硬件设计SD卡有2种操作模式:SD卡模式、SPI模式。SD卡模式允许通过4线高速总线传输,但由于大部分单片机无此接口模块,故选择SPI模式。HCSl2X系列单片机内部都带有此同步串行外部设备接口(SerialPeripheralInterface,SPI)。单片机可以通过SPI系统组成一个通信速率比SCI高的同步网络,故使用SPI模式可以把外设减

21、少到最低。SPI模式相对于SD卡模式的缺点是损失了传输速度;但是目前的微处理器的处理速度越来越高,利用SPI模式大都能满足工程需要。Atmega16单片机的全双工8位SPI模块有4个引脚,分别为主入从出引脚MISO、主入从出引脚MOSI、串行时钟引脚SCK以及从机片选引脚SS。当CS信号线为低电平时,主机开始所有的总线传输。数据从单片机的MOSI引脚同步输入MicroSD卡的DA引脚,MicroSD卡返回数据由DO线同步输入单片机的MISO引脚,数据在CLK信号的上升沿同步输入和输出。第三节 软件设计一、 模块初始化Atmega16单片机包含2个串行外设接口SPI,可以很方便地实现对Micro

22、SD卡接口的数据传输。为了配置时钟和数据长度,需要对SPI控制寄存器(SPCRl和SPICR2)、SPI波特率寄存器SPIBR和SPI数据寄存器SPIDR进行设置:使能SPI模块,将SPICRl中的MSTR位置1使单片机工作在主机模式,产生串行时钟来同步主从双方的移位寄存器,配置SPI时钟极性位与SPI时钟相位控制位,使能从机输出选择;初始化SPI波特率寄存器。二、 SD卡初始化SD卡初始数据传输需工作在低于400kbs的频率,因此配置SPI波特率寄存器,以工作在低速模式下。片选信号后应延时至少74个时钟周期。SD卡默认缺省使用SD总线传输协议,主机需要发出命令CMDO(CMD_GO_IDLE

23、_STATE)才能使SD卡工作在SPI传输模式下,当单片机返回0x01时说明已经进入了IDLE状态。此时应循环发送CMD55+ACMD41以确认是否为SD卡,如果回应超时则发送CMDl(CMD_SEND_OP_COND)以确认是否为MMC卡。经实验发现,Kingston公司的MicroSD卡使用CMD55+ACMD41或者CMDl都可以进行激活。激活SD卡的SPI模式后SD卡进入准备状态,此时发送CMDl6(CMD_SET_BLOCKLEN)设置SD卡的读写块大小,然后重新配置SPI波特率寄存器SPIBR使单片机SPI工作在高速频率下,延时8个时钟周期后返回,完成SD卡初始化。为了方便管理和扩

24、展性开发,对SD卡进行了分区。模拟硬盘模式创建出了MBR区(主引导扇区)与DBR区(操作系统引导记录区),在向下兼容的同时实现了对分区过的SD卡FAT文件系统的读写。三、FAT文件系统信息读取SD卡数据可分为5部分:MBR区、DBR区、FAT区、DIR区和DATA区。MBR区是主引导区,位于整个SD卡的第1单块上。在总共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外的64个字节是DPT(DiskPartitionTable,分区表),最后2个字节“55AA”是分区的结束标志。这整体构成了SD卡的主引导扇区。DBR是操作系统引导记录区,是操作系统可以直接访问的第1个扇区,它包括

25、1个引导程序和1个被称为BPB(BiosParameterBlock)的本分区参数记录表。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT、个数,分配单元的大小等重要参数。FAT文件系统的分区有如下几个部分:保留区,存放FAT文件系统的重要参数和引导程序;FAT表,记录簇使用情况;根目录区,记录根目录信息。在FAT文件系统中,文件是以簇的形式保存在SD卡中的,簇的排布是不连续的,1个文件如果大于1个簇的话,则要通过FAT表来查找该文件所有簇所在的位置,从而找到整个文件。目录一般只占有1个簇的大小,在FAT表中等同于小于1个簇的小文件,值显示为FF。

26、第四章 SD卡规范第一节 SD卡概述SD存储卡(Secure Digital Memory Card)是特别为符合新出现的音频和视频等消费电子设备的安全性、容量、性能和环境等设计的一种存储卡。SD存储卡包含符合SDMI标准安全性版权保护机制,速度更快并且存储容量更大。SD存储卡的安全系统使用的是双方认证和“新的密码算法”技术,防止卡的内容被非法使用。它还提供了一种无安全性访问方法来访问用户自己的内容。SD存储卡的物理外形、引脚分配和数据传输协议都向前兼容多媒体卡但是也增加了一些新有的内容。SD存储卡的通信是基于一个高级的9引脚接口(时钟、命令、4条数据线和3条电源线),可以在最高为25MHz频

27、率和低电压范围内进行操作。同时通信协议也是本规范的一部分。SD存储卡的主机接口也会支持常规的多媒体卡操作。也就是说向前兼容多媒体卡。实际上,SD存储卡和多媒体卡的主要区别在于初始化过程。第二节 SD存储卡的系统概念SD存储卡为应用设计人员提供低成本的大容量存储设备(如可移动的卡),支持更高安全等级的版权保护以及相对简单、易于实现的接口。按提供的功能差异化,可将SD存储卡分成几种类型:读写(R/W)卡(Flash、OPT、MTP(可多次编程)。这些卡可作为空的介质售卖,能用于大容量数据存储、终端用户视频、音频或数字影像等的记录。只读存储卡(ROM)。这些卡本身就有固定数据内容。它们典型用于软件、

28、音频、视频等媒体的销售。按工作电压可以将SD存储卡分为两种:支持2.0V3.6V的初始化识别过程的SD存储卡,这个工作电压范围可在CS寄存器内定义。SDLV存储卡低电压的SD存储卡,它能在1.63.6V的电压范围内工作。SDLV存储卡与SD存储卡的标识不一样。第三节 SD存储卡系统包括SD存储卡的总线及其主机应用一、 SD总线拓扑结构SD存储卡绻统定义了两种通信协议:SD和SPI两种。应用可以选择其中一种模式。模式选择相对于主机来说是透明的。卡自动检测复位命令的模式,而且要以后的通信都按相同的通信模式进行。因此,只使用一种通信模式的应用则不需要明白另一种模式,这里主要介绍SD总线。SD总线包含

29、以下信号:CLK: 主机向卡发送时钟信号;CMD: 双向的命令响应的信号;DAT0DAT3: 4个双向数据的信号;VDD、VSS1、VSS2: 电源和地信号。SD卡总线共有一个主机(应用)、多个从机(卡)和同步的星形拓扑结构。所有卡共用的是时钟、电源和地信号。而命令(CMD)和数据(DAT0DAT3)是卡的专用信号,为所有卡提供连续的点对点的连接。在初始化进程中,命令被分别发送到各张卡上,允许应用程序能检测到卡并向物理卡槽分配逻辑的地址。各张卡数据通常独立地发送(接收)。但为了简化卡的成批的处理,在初始化进程以后,所有命令可能会同时发送到所有卡。命令包中提供地址的信息。SD总线允许动态配置数据

30、线数量。在上电以后,SD卡默认只使用DAT0进行数据的传输。初始化后,主机可修改总线的宽度(有效数据线数量)。这个特性允许简单交替选择HW成本和系统性能。注意:SD主机在不使DAT 1 DAT 3时可以使用自己的DAT1DAT3线处于三态(输入模式)。二、 SD总线协议SD总线上的通信是基于以起始位开始、以停止位结束命令和数据位流。命令:命令就是启动一项操作的令牌。命令可从主机发送到一张卡上(寻址命令)或发送到连接的所有卡上(广播命令),命令在CMD线上串行传输。响应:响应则是从被寻址的卡或(同时)从所有连接的卡上发送到主机,可作为对接收到的命令回答的令牌,响应在CMD线上串行传输。 数据:数

31、据可从卡上发送到主机或者相反,数据通过数据线传输。卡的寻址可由会话地址来实现,并在初始化的阶段分配给卡。SD总线基本处理是命令响应处理。这类型总线处理直接在命令或者响应结构中来传输它们的信息。此外,某些操作还有数据令牌。SD卡的数据传输是通过块的形式进行。数据块的后面通常有CRC位。它定义了单块和多块的操作。注意:在快速写操作中使用多块操作模式为最理想。当CMD线出现了停止命令时,多块传输结束。主机可配置数据传输是使用一条还是用多条数据线。如图4.1所示。图4.1 (多)块读操作不管块的写操作是否使用多条数据线来传输数据,它只使用DAT0数据线上写操作忙的信号。如图4.2所示图4.2 (多)块

32、写操作命令令牌的编码策略如下图4.3所示:图4.3 命令令牌的格式每个命令的令牌都以起始位(0)开始,以结束位(1)为结束。令牌的总长度共是48位。每个令牌都有对应的CRC位,这样可以检测传输错误并重复的操作。响应令牌根据其内容4种编码策略。令牌长度是48位或是136位。命令和响应。块的CRC保护算法则是一个16位的CCITT多项式。如图4.4所示:图4.4 响应的令牌格式在CMD线上最先传输的是MSB,最后才是LSB。当用宽总线选项时候,数据一次传输4位。起始位、结束位以及CRC位在每条DAT线各发送一次。每条数据线分别计算并检查CRC位。CRC位状态响应和忙指示信号是由卡通过DAT0发送到

33、主机上的(DAT1DAT3在此期间无关)。如图4.5所示:图4.5 数据包的格式第五章 SD命令及参数及数据格式第一节 SD卡命令描述1.广播命令:给所有的卡都发送, 某些命令需要响应;2.点对点的命令:给指定地址卡发送, 需要响应.一、 SD卡系统有两种工作模式:(一) 卡识别模式主机上电复位后就会处于此模式,它会在总线上等待卡. 卡复位后也会处于此模式, 直到SEND_RCA(CMD3)命令到来.此模式下主机复位总线所有卡, 验证工作的电压, 询问卡地址. 这个模式下所有数据的传输都是只通过CMD线来完成.卡的复位.当卡上电或收到GO_IDLE_STATE (CMD0)命令之后, 卡就进入

34、Idle State状态. 此时卡将其RCA设为0, 相关寄存器设为传输稳定最优的模式.工作电压验证每个卡的最高和最低工作的电压存储在OCR. 只有适当电的压比配时, CID和CSD数据才能正常传输给主机.SD_SEND_OP_COND (ACMD41)命令可用来判断卡的工作电压是否符合, 如不符合的话, 卡应放弃总线操作, 而进入Inactive State状态. 在发送了SD_SEND_OP_COND (ACMD41)命令前记得要先发送APP_CMD (CMD55)。如图5.1所示:图5.1 卡的状态变换图.ACMD41命令响应中BUSY位也用于卡表示其还没准备好, 主机此时应重新发ACM

35、D41命令,直到卡准备好为止.主机在这个阶段的ACMD41命令中是不允许改变工作电压, 如果的确想改变的话, 应该先发送CMD0命令, 然后再发送改变后的ACMD41.GO_INACTIVE_STATE (CMD15)命令是用于使指定地址的卡而进入Inactive State模式.卡识别的过程.ALL_SEND_CID (CMD2)命令可用于获取卡的CID信息, 如果此时卡处于Ready State, 它就会在CMD线上传送它CID信息, 然后就会进入Identification State模式. 紧接着发送CMD3 (SEND_RELATIVE_ADDR)命令, 用于设置卡新地址. 卡收到新

36、的地址后就会进入Stand-by State模式.第二节 数据传输模式 在卡收到SEND_RCA(CMD3)命令后即进入此模式. 主机会识别到卡后也进入此模式.如图5.2所示:图5.2 数据传输模式下卡的状态转变图在进入数据的传输模式后, 主机先不停发送SEND_CSD (CMD9)命令会获取卡的CSD信息.SET_DSR (CMD4)是用于设置卡的DSR寄存器, 包括数据总线的宽度, 总线上卡的数目, 总线频率, 当设置成功后, 卡的工作频率也随之改变. 此步操作是可选的.CMD7命令是用于使指定地址卡进入传输模式, 任何指定的时刻只能有一个卡处于传输模式.传输模式下所有数据传输都是点对点的

37、, 并且所有有地址的命令都需要有响应.当读的命令传输完成后, 卡会进入Receive-data State.所有读命令都可以由CMD12命令停止,之后卡会进入Transfer State. 读命令是包括单块读(CMD17), 多块读(CMD18), 发送写保护(CMD30), 发送scr(ACMD51)和读模式一般命令(CMD56).所有写命令都可由CMD12命令的停止. 写命令会包括单块读(CMD24), 多块读(CMD25), 写CID(CMD26), 写CSD(CMD27),锁和解锁命令(CMD42)和写模式一般命令(CMD56).当写命令传输完成后, 卡会进入Programming S

38、tate(传输成功)或Transfer State(传输失败),如果一个卡写操作被停止,其前面数据的CRC位和块长度正确, 数据还是会被写入的.卡会提供写缓冲, 如果写缓冲已满而且卡处于Programming State, DAT0保持低BUSY.写CID,CSD, 写保护, 擦除命令时没有缓冲, 当这些命令没完时, 不应发送其它的数据传输命令.参数设置的命令在卡被编程时候是不允许发送的, 这些命令包括会设置块长度(CMD16), 擦除块起始(CMD32)和擦除块结束(CMD33).当卡正编程时候读命令是会禁止的.用CMD7命令使另外一个卡能进入Transfer State不会终止当前卡的编程

39、和擦除, 当前的卡会进入Disconnect State并且释放DAT线.Disconnect State模式卡可以通过CMD7的命令重新被选中,此时卡会进入Programming State并且使能busy信号.CMD0或CMD15会终止卡的编程操作, 造成数据的混乱, 此操作应禁止.1) 总线宽度选择命令ACMD6命令用于选择总线宽度, 此命令只在Transfer State有效. 应在CMD7的命令后使用.2) 块读命令块是数据传输最小单位, 在CSD (READ_BL_LEN)中定义的, SD卡为固定512B.每个块传输后面都跟着一个CRC校验位. CMD17命令(READ_SINGL

40、E_BLOCK)用于传输单个块,传输完以后,卡进入Transfer State. CMD18 命令(READ_MULTIPLE_BLOCK)用于多个块传输,直到收到一个CMD12的命令.3) 块写命令与块读命令类似, 每个块传输的后面都跟着一个CRC校验位.卡写数据时会进行CRC校验.多块写比重复的单块写更能够提高效率.如果CSD中的WRITE_BLK_MISALIGN没设置, 并且发送数据不是块对齐的, 卡会设置状态寄存器中ADDRESS_ERROR位,并且进入Receive-data-State的状态等待停止命令.此时写操作也停止, 并且卡会设置其WP_VIOLATION位.如果写缓冲满的

41、话, 卡会停止并接受WRITE_BLOCK命令. 此时主机应该发送SEND_STATUS (CMD13)的命令, 卡返回数据的READY_FOR_DATA位的标志卡是否准备好接受新的数据.在多块写操作中通过事先发送ACMD23的命令可提高写速度. ACMD23用于定义接下来要写数据的块的数目. 每次多块写的操作后, 这个值又被设为默认的1.ACMD22会使卡返回写成功的块数目.4) 擦除命令擦除命令的顺序: ERASE_WR_BLK_START(CMD32), ERASE_WR_BLK_END(CMD33)and ERASE (CMD38).如果(CMD38或(CMD32, 33)接收到的出错

42、信息, 卡会设置状态寄存器中ERASE_SEQ_ERROR 位并且重新等待新的命令时序.如果接收到的时序错误命令, 卡会设置其ERASE_RESET位并且重新等待新命令时序.5) 写保护管理三种机制:a.写保护物理开关;b.卡内部写保护;通过设置CSD中WP_GRP_ENABLE位和WP_GRP_SIZE位, SET_WRITE_PROTCLR_WRITE_PROT的命令用来设置和清除保护机制c. 密码保护.第三节 时钟控制 如果主机要发送1K数据, 但主机缓冲区却只有512B, 那么主机可在发送完前512B后, 可以先停止时钟, 然后把后面512B填充入缓冲区, 再启动时钟, 这样卡并不会检

43、测要两次发送之间的间隔, 认为其是一次完整的数据发送过程.第四节 CRC校验1.CRC7: CRC7用于所有命令, 除R3以外的响应, 以及CID和CSD寄存器.2.CRC16:CRC16用于数据块的校验第五节 错误类型1. CRC错误和命令非法错误命令CRC校验位的出错, 卡设置其状态寄存器的COM_CRC_ERROR位.非法命令的错误, 卡设置其状态寄存器ILLEGAL_COMMAND位.非法命令包括:不支持命令,未定义的命令以及当前状态不支持的命令.2. 读,写和擦除超时.卡应该在指定时间内完成一个命令或返回移动错误信息. 如果在指定的超时时间内主机收不到响应, 就应认为卡停止工作, 应

44、重新复位卡.第六节 命令1. 命令类型:- bc不需要响应广播命令.- bcr需要响应广播命令. 每个卡都会独立接收命令和发送响应.- ac点对点命令, DAT线上没数据- adtc点对点命令, DAT线上有数据 如表5.1所示:表5.1 命令的类型 所有命令均遵守上图中的格式, 总共48位. 首先是1个起始位0, 接着就是1个方向位(主机发送位1), 接下来6个命令位( 0-63 ), 还有32位参数(有些命令需要), CRC7校验位, 1个停止位.第七节 时序图 如图5.3所示: 图5.3 时序图中字母含义一、 命令和应答(一) 卡识别和卡工作电压确认模式:CMD2,ACMD41如图5.4

45、所示: 图5.4卡识别和工作电压(二) 地址分配模式:CMD3如图5.5所示: 图5.5 地址分配方式(三) 数据传输模式:如图5.6所示: 图5.6 数据传输模式(四) 命令结束-下一个命令,如图5.7所示: 图5.7 结束命令到下一个(五) 两个命令直接,如图5.8所示: 图5.8 两个命令二、 数据读unsigned char SD_Read_Sector(unsigned long addr , unsigned char *buffer)/从SD卡的指定扇区中读出512个字节,使用CMD17(17号命令)unsigned long i;unsigned char retry,temp;unsigned char cmd17=0x51,0x00,0x00,0x00,0x00,0xFF; /CMD17的字节序列addr 24);cmd172 = (addr & 0x00FF0000) 16);cmd173 = (addr & 0x0000FF

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com