你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

fatfs 统计容量函数 f_getfree疑惑

[复制链接]
小李的她 提问时间:2018-3-21 15:11 /
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 发布时间:2018-3-21 15:11

举报

3个回答
小李的她 回答时间:2018-3-22 08:20:21
是我的底层驱动 disk_write有bug,修复后已不存在该问题

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2 结贴奖励

查看全部评分

北北北北 回答时间:2022-7-28 00:46:05
小李的她 发表于 2018-3-22 08:20
是我的底层驱动 disk_write有bug,修复后已不存在该问题

底层write具体是什么问题呀?同样遇到了一直没解决

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版