大学生
最后登录1970-1-1
在线时间 小时
注册时间2020-1-15
|
1火花
flash 是 w25q128,用命令读取和写入正常,加入CUBE MX的 fatfs后 mount 可以创建,但是open 之后返回代码13 FR_NO_FILESYSTEM,说没有文件系统。这是哪里有问题,下面是串口错误图和代码
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");
}
|
|