当前位置: 代码迷 >> 单片机 >> Fatfs 关于sd卡初始化有关问题请问
  详细解决方案

Fatfs 关于sd卡初始化有关问题请问

热度:52   发布时间:2016-04-28 15:42:01.0
Fatfs 关于sd卡初始化问题请教?
Fatfs 关于sd卡初始化问题请教,小弟最近在学习fatfs 这个据说很优秀的文件系统,用的是最新的0.08版本。
现在已经能够知道如何调用和运用fatfs来做一些简要的操作。
但是我有个问题,关于系统如何调用sd卡初始化的,我通过仔细看了后发现调用sd卡初始化的函数是 
1、chk_mounted 没有任何条件直接 调用stat = disk_initialize(fs->drv);
2、f_mkfs  调用 stat = disk_initialize(drv);

关于f_mkfs 我不是很了解,但是 关于chk_mounted 这个函数是检查
/* Check if the file system object is valid or not  */
关于它的调用就很多了...
....................................................................................................
f_open    mode &= FA_READ | FA_WRITE | FA_CREATE_ALWAYS | FA_OPEN_ALWAYS | FA_CREATE_NEW;
        res = chk_mounted(&path, &dj.fs, (BYTE)(mode & ~FA_READ));
...................................................................................................
f_chdir
      res = chk_mounted(&path, &dj.fs, 0);
...................................................................................................
f_getcwd 
            res = chk_mounted((const TCHAR**)&path, &dj.fs, 0); /* Get current volume */
...................................................................................................
FRESULT f_opendir 
            res = chk_mounted(&path, &dj->fs, 0);
...................................................................................................
FRESULT f_stat 
         res = chk_mounted(&path, &dj.fs, 0);
...................................................................................................
FRESULT f_getfree 
                  res = chk_mounted(&path, fatfs, 0);
...................................................................................................
FRESULT f_unlink
                 res = chk_mounted(&path, &dj.fs, 1);
................................................................................................
FRESULT f_mkdir 
              res = chk_mounted(&path, &dj.fs, 1);
.................................................................................................
FRESULT f_chmod
res = chk_mounted(&path, &dj.fs, 1);
...............................................................................................
FRESULT f_utime 
    res = chk_mounted(&path, &dj.fs, 1);
...............................................................................................
FRESULT f_rename
res = chk_mounted(&path_old, &djo.fs, 1);

以上是我一一罗列出来 关于最终调用sd卡初始化的相关函数,我有一个很大的疑问?为什么每次操作这些函数都要初始化一次sd卡呢?为什么不是开始的时候初始化一次就完成了呢?
在我印象中sd卡重要初始化一次,后面的都可以直接操作读写了

还有一点要说明的是这个fatfs 文件系统在网上评价很高,而且我也亲自测试了,这个确实是很优秀的。

望各位熟悉的能够给我指点,关于这个sd初始化为什么要操作这么多次,我印象中初始化每次都要等待比较长的时间的。

------解决方案--------------------
好像没人回答啊
------解决方案--------------------