野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12549|回复: 0

FATFS移植

[复制链接]
发表于 2020-7-6 19:13:16 | 显示全部楼层 |阅读模式

我是将FATFS移植到F1板子上的,FLASH是W25Q128,我将整个FLASH芯片格式化为文件系统后读取空余扇区,代码如下所示,但为啥返回来的扇区数是1979而不是4096个扇区?W25Q128不是一共有4096个扇区吗?

下图是串口助手打印的调试信息。还望各位有才之人请教。

图片.png






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);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-25 15:24 , Processed in 0.041804 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表