- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
大容量辅助存储系统的设计
文件分配表的作用是记录磁盘上簇的分配情况。一个文件一般需要占用很多 簇。同一个文件不一定会完整地存放在一个连续存储空间内,而是分成若干段,像链子一样 的存放。在文件名记录中,首先指向文件存储的链头所在文件分配表簇,而该簇的文件分配 表存放下一个链子的文件分配表簇值,如果是文件结尾,使用一个文件结束标志,表示到达 链尾,这样就标识了文件的链式存储,FAT表就是记录文件存储中簇与簇之间连接信息的。
紧接在FAT表之后的是文件目录表FDT,占32个扇区,每个扇区可以容纳16个登记项,每 个登记项的长度是32字节。文件目录表记录文件的名称,通过目录表查找已存在的文件名, 从而找到指定的文件进行操作。每个文件对应一个描述其属性的结构,定义如表1。
文件目录项结构实现如下:
Struc direntry
{
Unsigned char fName[8];
Unsigned char fExtension[3];
Unsigned char fAttributes;
Unsigned char fLowerCase;
Unsigned char fCHundredth;
Unsigned char fCTime[2];
Unsigned char fCDate[2];
Unsigned char fADate[2];
Unsigned char fHighClust[2];
Unsigned char fMTime[2];
Unsigned char fMDate[2];
Unsigned char fLowCluster[2];
Unsigned char fFileSize[4];
}
文件目录表之后就是数据区DATA,用来存放文件数据,占用大部分的磁盘空间。数据的 读写以扇区为单位,一个簇所包含的扇区数由BPB参数来决定,通过根目录找到对应的文件 名,格式化完成或进行写操作时,就要新建对应文件名的文件分配表区和根目录区,通过文 件分配表区中的保存的簇号,完成对应的数据读写,完成一个簇的操作后,根据文件分配表 的链式结构,找到文件的待操作的下一个簇的簇号,进行相应的操作,直到文件结束。
2.3 数据块的写操作
完成SD卡的初始化之后即可进行它的读写操作。SD卡的读写操作都是通过发送SD卡命令 完成的。SPI总线模式支持单块(CMD24)和多块(CMD25)写操作。单块写操作的数据块长 度只能是512字节。单块写入时,命令为CMD24,当应答为0时说明可以写入数据。SD卡对每 个发送给自己的数据块都通过一个应答命令确认,它为1个字节长,当低5位为00101时,表 明数据块被正确写入SD卡。多块写是单块连续写的循环操作,只是写单块和写多块开始时的 令牌包有所不同,多块操作是从指定位置开始写下去,直到SD卡收到一个停止命令CMD12时 才停止。多块数据写时序如图3所示。
3 结束语
通过对SPI模式下SD卡写操作和文件系统的研究,实现了单片机对SD卡FAT32文件的操 作,包括文件的创建、写操作等。该课题研究在数据采集系统方面有着广泛的应用前景,项 目实施以来直接经济效益20万元。本文创新点:为数据采集系统提供了一种非易失性存储的 解决方案,采集到的大量数据会以标准数据文件的格式记录到SD卡上。
来源:维库开发网


