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初始化为什么要操作这么多次,我印象中初始化每次都要等待比较长的时间的。
现在已经能够知道如何调用和运用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初始化为什么要操作这么多次,我印象中初始化每次都要等待比较长的时间的。
...全文
相关推荐
fatfs 源码
fatfs 源码
stm32f4通过spi用fatfs读写sd卡程序
stm32f4通过spi用fatfs读写sd卡程序,已经调通。用的是单片机中B口的B11--CS、B13--SCLK、B14--MISO、B15--MOSI.
带FATFS文件系统的SD卡读写(SPI模式)
完整的SD卡(spi)读写程序,完整的FATFS文件系统移植(支持STM32F4系列)
基于CubeMX配置 FreeRTOS + SD + Fatfs 进行SD卡的读写操作
基于CubeMX配置 FreeRTOS + SD + Fatfs 进行SD卡的读写操作 基于keil编辑器
stm32f103的sdio方式读sd卡,带fatfs文件系统
STM32F103的SD卡读取,移植的是fatfs文件系统,串口输出,需要把串口配置成自己板子上的,就可以用了,还有设计printf函数里的串口选择,别忘记了,绝对可以用,已经测试过了!


单片机/工控
