Micro SD卡

发布时间:2024-05-16 20:48:58 作者:汉语成语

MicroSD卡是一种附带安全元件的大容量标准存储卡,为移动支付和信息安全提供安全保障。可以广泛的应用于手机支付、网上银行、手机银行、语音安全、版权保护等多种行业应用,可以涵盖从远程支付到近场手机支付的全系列应用场景。灵活性源自JavaCard科技功能性和安全性是手机移动安全产品的核心。

描述

MicroSD卡是把有序和随机的存取能力高度结合的闪存卡.通过专用的串行接口有效地进行快速和可靠的数据传输.这个接口允许几种卡通过连接外部装置直接应用.这些MicroSD卡是完全兼容一些新的消费标准的。在MicroSD卡的系统描述中会有MicroSD卡系统标准的定义。

MicroSD卡系统是基于半导体技术革新上的大容量存储系统。它已经发展成为了一种应用于多媒体消费类产品廉价,结实的存储介质.MicroSD卡适适用于那些廉价的播放器和驱动器的设计,不用移动任何一个部分.耗电量低,宽电压范围支持移动,电池电源。可用于音频播放器,万用笔记本,掌上电脑,电子书,电子百科全书,电子词典.用于非常有效的数据压缩方案。比如:MPEG格式,MicroSD卡将为多媒体数据的传输提供足够的容量。

特性

-容量:128MB/256MB/512MB;

-兼容MicroSD卡2.0版本规格;

-物理层的规范部分是2.0版本;

-卡内错误自动纠正;

-电压传输范围:2.7~3.6V;

-耗电量较低:

自动开关电源,自动的管理电源;

-不要求额外的运行电压;

-充电时插入或移除卡都不会造成毁坏;

-数据张力:100k写入/擦除周期;

-便于终端客户处理;

-可信赖的电子结构;

-支持文本信息和图像;

-面积:11mm(W)x15mm(L);

-厚度跨连接区7mm;

卡的厚度.95mm;

-MICROSD卡的插槽可以连接适配器用;

图像1.MICROSD卡的格式

读写单块数据

从MicroSD卡中读取一个数据块只需要主机发送CMD17(MSD_READ_SINGLE_BLOCK)命令,并将起始地址作为参数(此地址必须和介质上一个块的起始位置对齐),然后MicroSD卡会验证这个字节地址,并以一个R1命令作为响应。在完成MicroSD卡读取操作后,先发送一个起始数据命令,接着发送固定数量的数据,是2个字节CRC校验。读取一个数据块由函数u8MSD_ReadBlock(u8*pBuffer,u32ReadAddr,u16NumByteToRead)来完成,pBuffer是一个指针,它指向接受MicroSD卡数据内存缓冲区的地址,ReadAddr是要读取数据在MicroSD卡中的地址,NumByteToRead是要读取的字节数,一般为512B。

从MicroSD卡中写入一个数据块与读取数据块相似。主机发送CMD24(MSD_WRITE_BLOCK)命令启动写操作过程,MicroSD卡将以R1命令响应格式进行应答。如果命令响应,则进行写操作,主机发送起始令牌,然后发送固定数量的数据字节(512B),返回一个数据响应令牌,指示需要写入的数据是否完成,是2个字节的CRC校验,写入一个数据块由函数u8MSD_WriteBuffer(u8*pBuffer,u32WriteAddr,u32Num-ByteToWrite)来完成,向MicroSD卡写数据函数中的参数与向MicrosD卡读数据函数中的参数相同。读/写单块数据流程如图所示。

文件存储

由于需要MicroSD卡上的数据能够在计算机上直接读/写,所以MicroSD卡文件系统必须与计算机的文件系统一致。目前常用的文件系统主要有微软的FATl2,FATl6,FAT32,NTFS,以及Linux系统下的EXT2,EXT3等。由于微软Windows的广泛应用,在当前的消费类电子产品中,用得最多的还是FAT文件系统,如U盘、MP3,MP4,数码相机等,所以找到一款容易移植和使用、占用硬件资源相对较小而功能又强大的FAT开源文件系统,对于单片机系统设计者来说是很重要的。所以在MicroSD卡存储机制上,移植了FATFS文件系统。FATFS是一种完全免费开源的FAT文件系统模块,是专门为小型嵌入式系统而设计的。它完全用标准C语言编写,所以具有良好的硬件平台独立性,可以移植到多种平台而只需做简单的修改。需要使用者编写移植代码的是FATFS提供的底层接口,包括存储介质读/写接口DiskIO和供给文件创建修改时间的实时时钟RTC。

FATFSModule一开始就是为了能在不同的单片机上使用而设计的,所以具有良好的层次结构,如图所示。最顶层是应用层,使用者无需理会FATFSModule的内部结构和复杂的FAT协议,只需要调用Module提供给用户的一系列应用接口函数,如f-open,f-read,f-write,f-Close等就可以像在PC上读/写文件那样简单。

1、文件(或目录)创建

在MicroSD卡上创建文件(或目录)的过程就是在文件目录表中申请登记项的过程。首先程序要检测文件目录表(FDT)中是否已经存在该文件,然后申请空闲的FDT表项。如果存在同名的文件,则返回,创建文件(或目录)失败。申请FDT表项成功后,程序会检测磁盘剩余的空间是否满足新创文件数据长度的需要,而后寻找个空闲的簇号,并修改对应的FDT表项。根据文件的大小,不断循环查找下一个空闲的簇,同时修改当前FAT项目为下一个簇号,直到一个FAT项写入0xFFFFH,以表示文件结束。新建目录时,只需要提供函数CreateDir()函数新建目录的目录名,其过程和创建文件一样,只是不需要提供数据相关的信息。

2、文件的读写

MicroSD卡上的文件都是以簇(Cluster)为单位存取的。当读取MicroSD卡上的文件时,首先要根据文件名查找到文件加目录登记项(F-DT),根据文件中目录登记项中起始簇号即可以找到文件在数据DATA区中的簇内容,并且可以在FAT表中找到第二个簇号。根据第二个簇号又能读取第二簇的数据和FAT中第三个簇号,这样就可以读取全部文件数据。写文件时要保证FAT1和FAT2内容的一致性,即要对两个FAT进行同样的写操作。当要在已有的文件中增添数据时,程序首先要分析原有文件一个扇区还有多少剩余空闲字节数,以便新添加数据与这一个扇区汇合,超过扇区的数据在申请新的空闲FAT表项时,其过程与新建文件类似。在文件的一簇填写0xFFFFH表示文件结束。

3、文件(或目录)的删除

删除文件的操作需要提供函数DeleteFile()删除文件的文件名和扩展名。删除文件时,不涉及数据区的操作,只须在文件的目录登记项(FDT)上做一个删除标记,并把文件在FAT表中所占用的簇标记为“空簇”。

程序先在FDT中查找是否有同名文件,如果存在同名文件,则将在对应的FDT表项中个字节内容改为0xE5H,表示该FDT表项的内容已经被删除,新建文件可以使用该表项。还需要将FAT表中所有文件相关簇项目的内容都改成Ox0000,释放出所对应的MicroSD卡磁盘空间。若未找到同名文件,则返回一个错误值。删除目录的操作只需要提供函数DeleteDir()删除目录的目录名。程序先在FDT中查找是否有同名目录项,如果存在同名目录项,则将对应的FDT表项中个字节内容改为0xE5H。然后读出对应目录的起始簇号,在该簇号中去删除该目录下的所有文件。