我是将FATFS移植到F1板子上的,FLASH是W25Q128,我将整个FLASH芯片格式化为文件系统后读取空余扇区,代码如下所示,但为啥返回来的扇区数是1979而不是4096个扇区?W25Q128不是一共有4096个扇区吗?
下图是串口助手打印的调试信息。还望各位有才之人请教。
FILINFO fno;
int main(void)
{
FRESULT res ;
DWORD fre_elust,fre_sect,tot_sect;
FATFS* pfs ;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200); //串口初始化为115200
res = f_mount(&fsobject, "1:", 1); //挂载文件系统
printf("这是一个FATFS文件系统移植实验\r\n");
printf("res = %d\r\n",res);
if(res == FR_NO_FILESYSTEM)
{
printf("res = %d\r\n",res);
res = f_mkfs("1:",0,work,sizeof(work));
printf("f_mkfs is over\r\n");
printf("res = %d\r\n",res);
res = f_mount(NULL, "1:", 1); //取消文件系统
res = f_mount(&fsobject, "1:", 1); //挂载文件系统
}
printf("res = %d\r\n",res);
printf("hello word......\r\n");
/**********获取设备信息和空簇大小****************************/
res_flash = f_getfree("1:", &fre_elust,&pfs);
/***计算得到的总得扇区个数和空扇区个数***/
tot_sect = (pfs ->n_fatent - 2)* pfs ->csize ; //n_fatent就是簇的数目加2
fre_sect = fre_elust * pfs->csize ;
/*打印信息(4096字节/扇区)*/
printf("\r\n",fre_elust);
printf("\r\n",(pfs ->n_fatent - 2));
printf("\r\n",tot_sect);
printf("\r\n",fre_sect);
printf("\r\n一个簇有%d 个扇区 \n\r>>",pfs ->csize);
printf("\r\nfree_clst=%d 个扇区 \n\r>>",pfs ->free_clst);
}
|