发表于 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多秒时间,这谁受得了???
一周热门 更多>