• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 基于MCF51QE128的SD卡文件系统设计

基于MCF51QE128的SD卡文件系统设计

录入:edatop.com     点击:

FATl6初始化子程序中调用了底层SD卡读数据块函数SD_ReadBlock。其函数声明为byte SD_ReadBlock(dword sector,byte*buffer),用于读入地址为sector扇区中的数据,暂存入buffer中。预编译函数from_BE_32和from_BE_16分别实现由高位向低位读取4字节和2字节数据。

FATl6初始化子程序声明为byte Init_FAT(FArl6_t*FAT,byte*buffer),部分代码如下:

\

2.3 打开和创建文件

打开和创建文件采用一个函数来实现。首先根据读入的文件名查找根目录,若有匹配项则打开文件,否则创建一个新文件。流程如图6所示。

\

打开和创建文件子程序声明为byte Open_File(FILE_t*FILE,FATl6_t*FAT,byte*buffer,byte*name)。部分代码如下:

\

在根目录中查找是否有文件项匹配,从根目录的第1个扇区开始读扇区。

\

根据文件起始簇号和根目录的记录项号,计算文件FAT表、根目录和数据区的相关信息。对于根目录和数据区的信息,已有文件和新文件的计算一致。如果是新文件,还需修改FAT表和根目录记录项。

2.4 多扇区数据读写

多扇区数据的读写是在打开文件的基础上,以扇区为单位读写文件,可连续读写多个扇区数据,同时写入文件的属性、日期和时间。写数据的流程如图7所示,读数据与之类似。多扇区数据的写子程序声明为byte Write_File(FILE_t*FILE,FATl6_t*FAT, byte attribute,word time,word date,dWOEd size_s,byte*buffer),根据写入扇区数size_s,设置文件的写入位置。首先将写入扇区数与文件剩余扇区数进行比较,若写入扇区数小于等于剩余扇区数,则新写入扇区数、簇数均为0,文件结束簇、写簇号不变,不需要修改FAT表,仅修改根目录中的文件长度。否则,需要计算新写入扇区数和簇数。若有增加簇,则需修改FAT表,包括FATl和FAT2、根目录的文件记,录项。最后,将数据写入文件数据区。

结语

本文基于FREESCALE公司MCF51QEl28微控制器,深入探讨了SD卡上FATl6文件系统的存储原则,给出了实现方案。软件算法上,对单扇区数据读写进行改进,实现了连续多个扇区数据的读写,大大提高了文件的读写效率,特别适用于数据量较大的视频、音频数据采集系统的文件存储。随着SD卡的快速流行,在此类存储设备中引入文件系统将得到更加广泛的应用。

来源:维库开发网

上一篇:楼宇设备测控系统的无线数据采集与传输模块设计
下一篇:基于SVPWM的航空高功率因数整流器设计

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图