fatfs 统计容量函数 f_getfree疑惑

2019-07-20 09:03发布

发表于 1 分钟前 | 只看该作者 |倒序浏览 |阅读模式
  CPU:STM32F407IGHT
FLASH:SST38VF6401
fatfs R0.13A 最新
开发环境:mdk

目前已经格式化成功,可以挂载、创建文件、读写等。
但是通过f_getfree函数测试容量,发现可用容量只有总容量的一半。跟踪f_getfree代码,发现代码如下(ff.c  L4663):

if(fs->fs_type == FS_FAT16)  //FAT16文件格式
{
         if(ld_word(fs->win + i) == 0) //数据为0x0000
         {
                 nfree++; //空闲扇区数加1
         }
        
        i %= 512;
}

代码如上,可以看到其从第一个数据扇区到最后一个扇区,检测指定位置的数据是不是0,如果是0,空闲扇区数就增1。首先我不太明白这样是什么机制,不过按照它的这个处理流程,我将flash全片写为0,然后再调用该接口,发现总可用扇区数和空闲扇区数相等了。这什么情况?难道我拿到一个新存储芯片 ,首先要将其全部写0?写0也没啥问题,真正的问题是,SST38VF6401字编程典型时间是7us,按照8M字节来算,大概需要50多秒时间,这谁受得了???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
lxut2018
1楼-- · 2019-07-20 14:57
 精彩回答 2  元偷偷看……
peng1554
2楼-- · 2019-07-20 15:14
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-20 19:24
FATFS应该不会有错,可能你给的数据有问题。你可以参考下我们的 例程。

一周热门 更多>