微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于MSP430和SD卡的FAT16文件系统的设计

基于MSP430和SD卡的FAT16文件系统的设计

时间:06-01 来源:电子技术应用 点击:

单位存储,但是同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,往往会分成若干簇,FAT表就是记录文件存储中簇与簇之间连接信息的,这就是文件的链式存储。FAT16以2个字节(即16位)表示1个簇,起始2个字节为F8FFH、FFFFH,FFFFH表示终止,0000H时表示未使用。

紧跟在FAT表之后的是文件目录表FDT(File Directory Table),它固定占32个扇区,每个扇区可以容纳16个登记项,每个登记项的长度为32B。登记项的内容包括文件名、文件属性、文件修改时间和文件长度等。

文件目录表之后就是数据区,用来存放文件数据,占用大部分磁盘空间。

3 FAT16文件系统的实现

单片机对SD卡底层的读写,按照FAT16的格式对SD卡上数据进行操作,就可在SD卡上创建文件、读写文件和删除文件,从而实现文件的管理。

为了程序的可移植性和易用性,将整个文件系统分为3层,第1层是SD卡驱动层,第2层是FAT16文件系统层,第3层是应用层,提供给用户的接口函数。

SD卡驱动层完成SD卡控制器中相应寄存器的设置和向SD卡发送命令,实现SD卡初始化、读、写等操作,目的是为FAT16文件系统层提供相应的功能函数,屏蔽直接对硬件的具体操作。

FAT16文件系统层向应用层提供对文件和目录进行操作的API接口函数,使写入SD卡的数据能够在被装有Windows操作系统的上位机中得到正确访问。

应用层直接使用文件系统层的接口函数完成对数据的操作,而不需要考虑使用函数的细节问题以及底层硬件的相关问题。

FAT16文件系统向应用层提供的接口函数有:CreateFile(),创建文件;OpenFile(),打开文件;WriteFile(),写文件;ReadFile(),读文件;DelFile(),删除文件等。其中创建、读写、删除文件是应用程序使用的主要函数接口,下面对其作详细介绍。

(1) 文件的创建

在SD卡上创建文件或目录的过程就是在文件目录表FDT中申请登记项的过程,流程如图4所示。登记项包括文件名、文件长度、起始簇号等内容。

(2) 文件的读/写

SD卡上文件都是以簇为单位存取的。读SD卡上的文件,首先要根据文件名查找到该文件的目录登记项,根据目录登记项中的起始簇号既可找到文件在数据区中第1簇的内容,又可在FAT表中找到第2个簇号,根据第2个簇号又能找到第2簇的内容和FAT表中第3个簇号,依此类推,可以读取全部文件数据。向SD卡写文件,要保证FAT1和FAT2中内容的一致性,即对两块都要进行同样的写操作。

(3)文件的删除

删除文件时,不涉及数据区的操作,只须在文件目录登记项上作一个删除标记,并把文件在FAT表中所占有的簇标记为"空簇"。

通过对SPI模式下SD卡读写和文件系统的研究,实现了单片机对SD卡FAT16文件的管理,包括文件的创建、读写、删除等操作。该方法为数据采集系统提供了一种非易失性存储器的解决方案,采集到的数据会以标准文件的格式记录到SD卡上,数据可在Windows下用读卡器读取,在保证高性价比的同时,又方便了数据的进一步分析、处理。通过长时间在心电图监测系统中的实际应用,证明了该方法的可行性。该文件系统的分层结构使得只需对底层驱动进行简单的修改就可以移植到闪存卡等其他存储介质上。该方案也可以应用到如MP3等与Windows有交互的移动存储设备中,便于文件的统一管理。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top