加载中 ...
基于MSP430F449和SD卡的FAT16文件系统的设计与实现论文
图2SD卡初始化流程图
SD卡的部门初始化代码及子程序如下:
while(status!=0)//若是返回非空,则有错误发生或者SD卡将被再次初始化
{
status=initSD();//SD卡初始化
timeout++;
if(timeout==50)//若是有错误,则重试50次
{
printf("NoSD-cardfound!!%xn",status);//无SD卡发现
break;
}
}
while((SD_ping()!=SD_SUCCESS));//等候,直到卡插入
charinitSD(void)
{
inti;
initSPI();//初始化SPI接口及功效
CS_HIGH();
for(i=0;i<=9;i++)
spiSendByte(0xff);
return(SD_GoIdle());//返回SD卡的状态信息
}
charSD_GoIdle()
{
charresponse=0x01;
CS_LOW();//CS置低SDSendCmd(SD_GO_IDLE_STATE,0,0x95);//发送死令0使SD卡处于SPI模式
if(SDGetResponse()!=0x01)//等候准备好响应
returnSD_INIT_ERROR;//若是响应不准确,则返回SD卡错误
while(response==0x01)
{
CS_HIGH();//CS置高
spiSendByte(0xff);//SPI发送一个字节
CS_LOW();//CS置低
SDSendCmd(SD_SEND_OP_COND,0x00,0xff);//发送CMD1下令
response=SDGetResponse();//获取SD卡的响应
}
CS_HIGH();//CS置高
spiSendByte(0xff);//SPI发送一个字节
return(SD_SUCCESS);//返回SD卡初始化乐成信息
}
2.3FAT16文件系统软件设计
现在,在PC机DOS/Windows的治理下,普遍使用的是FAT12、FAT16、FAT32、NTFS文件系统,FAT12一样平常用于软盘,FAT16、FAT32和NTFS则用于硬盘。PC机FAT文件系统分配数据是以簇为单元的,一样平常来说,NTFS支持大于4G单个文件,治理很是庞大;FAT32的簇要比FAT16小得多,但治理也比FAT16庞大,因此容量大于512M的接纳FAT32,容量小于512M的使用FAT16。在磁盘上现实的文件分配表中每个记载所占的位数差别,FAT12占12位,FAT16占16位,FAT32则占32位。每个记载中的数据均根据低字节在前,高字节在后排列。
本系统接纳FAT16文件系统。和其他FAT文件系统一样,FAT16文件系统的数据信息一样平常由MBR、DBR、FAT、FDT和数据区5个部门组成。
MBR(MasterBootRecord),即主指导记载,位于0柱面0磁头1扇区。DBR(DOSBootRecord)系统指导记载扇区位于逻辑0扇区。主要完成DOS/Windows的自举,占一个扇区,又被称为DOS指导扇区或BOOT区,其中,该区的BPB(BiosParameterBlock)参数块记载着分区的起始扇区、竣事扇区、文件存储花样、硬盘介质形貌符、根目录巨细、FAT个数,分配单元巨细等主要参数。文件分配表FAT紧随DBR之后,从逻辑1扇区最先,它是文件治理系统用来给每个文件分配磁盘物理空间的表格,FAT文件分配表由表标识和簇映射的荟萃组成,一个完全相同的镜像副本一连存储在主FAT表后,FAT的所有目的就是跟踪文件,详细形貌即需要说明整个磁盘分区中的每个存储单元(簇)的使用情形、文件数据的簇存储情形(一连或碎片)以及树型目录结构的形貌。FAT现实上就是一个卷中所有簇使用情形的映射表,每个文件、目录都同表中的若干项对应联系,并在目录中举行索引。FAT之后就是根目录,记载整个磁盘上所有文件的有用信息,其中每一个文件占32个字节,包罗文件名、文件
式中,选中的SD卡总响应下令,而不是超时。
图2SD卡初始化流程图
SD卡的部门初始化代码及子程序如下:
while(status!=0)//若是返回非空,则有错误发生或者SD卡将被再次初始化
{
status=initSD();//SD卡初始化
timeout++;
if(timeout==50)//若是有错误,则重试50次
{
printf("NoSD-cardfound!!%xn",status);//无SD卡发现
break;
}
}
while((SD_ping()!=SD_SUCCESS));//等候,直到卡插入
charinitSD(void)
{
inti;
initSPI();//初始化SPI接口及功效
CS_HIGH();
for(i=0;i<=9;i++)
spiSendByte(0xff);
return(SD_GoIdle());//返回SD卡的状态信息
}
charSD_GoIdle()
{
charresponse=0x01;
CS_LOW();//CS置低SDSendCmd(SD_GO_IDLE_STATE,0,0x95);//发送死令0使SD卡处于SPI模式
if(SDGetResponse()!=0x01)//等候准备好响应
returnSD_INIT_ERROR;//若是响应不准确,则返回SD卡错误
while(response==0x01)
{
CS_HIGH();//CS置高
spiSendByte(0xff);//SPI发送一个字节
“沈阳软件公司”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与
我们联系删除或处理,客服QQ:55506560,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同
其观点或证实其内容的真实性。