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多秒时间,这谁受得了??? |
评分
查看全部评分
底层write具体是什么问题呀?同样遇到了一直没解决