硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2821|回复: 3
收起左侧

[FatFs] fatfs 创建问题

[复制链接]

16

主题

62

回帖

110

积分

初级会员

积分
110
发表于 2020-4-11 13:17:34 | 显示全部楼层 |阅读模式
flash 是 w25q128,用命令读取和写入正常,加入fatfs后 mount 可以创建,但是open 之后返回代码13 FR_NO_FILESYSTEM,说没有文件系统。这是哪里有问题,下面是串口错误图和代码
微信截图_20200411131714.png
void fatfs_test(void)
{
       
        if(SPI_FLASH_ReadID() == 0xEF4018);
        /*文件系统对象注册到Fatfs模块*/
        fs_ret = f_mount(&fs,"",0);
        if(fs_ret == FR_NO_FILESYSTEM)
        {
                printf(">>flash 还没有文件系统,即将进行格式化..\r\n");
                fs_ret = f_mkfs("",0,4096,&fs,4096);
                if(fs_ret == FR_OK)
                {
                        fs_ret = f_mount(NULL,"",1);
                        fs_ret = f_mount(&fs,"",1);
                }
                else
                {
                        printf("格式化失败\r\n");
                        while(1);
                }
        }
        else if(fs_ret !=FR_OK)
        {
                printf("外部 Flash 挂载文件系统失败。(%d)\r\n",fs_ret);
                printf("可能原因:SPI Flash 初始化不成功。\r\n");
                //while(1);
        }
        if(fs_ret)
                printf("mount error:%d\r\n",fs_ret);
        else
                printf("mount success\r\n");
        /*创建或打开有写权限的新text文件*/
        fs_ret = f_open(&fil,"test.txt",FA_CREATE_ALWAYS | FA_WRITE);
        if(fs_ret)
                printf("open file error:%d\r\n",fs_ret);
        else
                printf("open file success\r\n");
       
        /*写数据到text文件*/
        fs_ret = f_write(&fil,wtest,sizeof(wtest),(void *)&byteswritten);
        if(fs_ret)
                printf("write file error:%d\r\n",fs_ret);
        else
        {
                printf("write file success\r\n");
                printf("write Data: %s \r\n",wtest);
        }
        /*关闭打开的text文件(必须)*/
        fs_ret = f_close(&fil);
        if(fs_ret)
                printf("close file error:%d\r\n",fs_ret);
        else
                printf("close file success\r\n");
        /*打开 有读权限的text文件*/
        fs_ret = f_open(&fil,"test.txt",FA_READ);
        if(fs_ret)
                printf("open file error:%d\r\n",fs_ret);
        else
                printf("open file success\r\n");
        /*从text文件读取数据*/
        fs_ret = f_read(&fil,rtest,sizeof(rtest),(UINT*)&bytesread);
        if(fs_ret)
                printf("read file error:%d",fs_ret);
        else
        {
                printf("read file success\r\n");
                printf("read Data:%s \r\n",rtest);
        }
        /*关闭打开的text文件(必须)*/
        fs_ret = f_close(&fil);
        if(fs_ret)
                printf("close error:%d\r\n",fs_ret);
        else
                printf("close success\r\n");
       
        if((bytesread == byteswritten)&& (fs_ret == FR_OK))
                printf(" fatfs is working well\r\n");
}


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2020-4-11 14:26:32 | 显示全部楼层
文件系统格式化没有成功。
回复

使用道具 举报

16

主题

62

回帖

110

积分

初级会员

积分
110
 楼主| 发表于 2020-4-11 14:30:31 | 显示全部楼层
eric2013 发表于 2020-4-11 14:26
文件系统格式化没有成功。

那我应该怎么做,单独在函数外先用f_mkfs 格式化一次吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2020-4-11 14:35:29 | 显示全部楼层
opsd999 发表于 2020-4-11 14:30
那我应该怎么做,单独在函数外先用f_mkfs 格式化一次吗

基于V6板子的SPI Flash文件系统+SPI Flash虚拟U盘例子下载
http://www.armbbs.cn/forum.php?m ... 0006&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 18:09 , Processed in 0.207733 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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