加载中 ...
首页 > 新闻资讯 > 软件开发 正文

基于MSP430F449和SD卡的FAT16文件系统的设计与实现论文

2019-03-23 08:39:28 来源:沈阳软件公司 作者:沈阳软件开发


  
  图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,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同

其观点或证实其内容的真实性。