这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 为什么用FatFS在SD卡创建文件,在单片机上读写正常,用读卡器插到电脑上就什么

共2条 1/1 1 跳转至

为什么用FatFS在SD卡创建文件,在单片机上读写正常,用读卡器插到电脑上就什么都没有

工程师
2024-11-16 14:41:10     打赏

用的是HC32F4A0+SDIOC+FatFS0.15版本

  • 用之前在电脑上对SD卡格式化为Fat32格式了

  • 为了确定文件真的写入了SD卡,而不是在读取缓存,写入文件后,将文件关闭,再以READ模式打开,进行读取,是可以读到的。
    可读.png

但是把SD卡插到读卡器上,看到的就是空白。有没有大佬知道这是为什么
空白.png

#include "FileEdit.h"#include "ff.h"#include "stdio.h"#include "BSP_Timer_INT_Count.h"FATFS fsobject;
FIL fp;
BYTE work[FF_MAX_SS];const char write_buf[] = "abcdefg";char read_buf[FF_MAX_SS] = "";UINT bw;UINT br;void FatFS_Test(void)
{
	FRESULT res;	/* 挂载文件系统 */
	res = f_mount(&fsobject, "0:", 1);	//挂载fsobject到文件系统、0: 存储器路径,也就是SD卡、1立即挂载
	if(res != FR_OK)
	{
		res = f_mkfs("0:", 0, work, sizeof(work));
		res = f_mount(NULL, "0:", 1);
		res = f_mount(&fsobject, "0:", 1);
	}	/* 打开、创建文件 */
	f_mkdir("0:/dir0");
	res = f_open(&fp, "0:/dir0/qwerpoiu.txt", FA_CREATE_ALWAYS | FA_WRITE | FA_READ);	if(res == LL_OK)
	{
		res = f_write(&fp, write_buf, sizeof(write_buf), &bw);
		f_close(&fp);
		
		res = f_open(&fp, "0:/dir0/qwerpoiu.txt", FA_READ);		if(res==LL_OK)
		{
			f_lseek(&fp, 0);
			res = f_read(&fp, read_buf, f_size(&fp), &br);
			
			__nop();
		}		else
			f_close(&fp);
	}
	f_unmount("0:");
}





关键词: FatFS     单片机    

助工
2024-11-16 14:41:55     打赏
2楼

   1、文件读取时候打开文件不要用创建方式打开。
2、先确认ffconf.h文件配置是否正常。
3、确认的硬件SDIO,通信是否正常。用华大的历程运行下。
4、挂载文件时候格式要正确。
我也用HC32F4A0的运行RT-THREAD系统的。boot和文件系统都能读写。所以你先确认上面几个点

挂载文件不正确。第一次挂载后成功后需要格式化文件系统。而不是挂载失败在格式化

char SDPath[3] = {'0',':', 0};
  MKFS_PARM opt;

  (void)memset(&opt, 0, sizeof(MKFS_PARM));
  (void)memset(&SDFatFs, 0, sizeof(SDFatFs));
  opt.fmt = (BYTE)FM_ANY|FM_SFD;
  if (FR_OK != f_mount(&SDFatFs, (TCHAR const*)SDPath, 0U)){
    (void)printf("FatFs Init Error!\r\n");
  }else{
    printf("FatFs Init Success!\r\n");   
    if (FR_OK != f_mkfs((TCHAR const*)SDPath, &opt, u8WorkBuffer,sizeof(u8WorkBuffer))){
      (void)printf("FatFs Format Error!\r\n");
    }else
    {
      (void)printf("FatFs Format Success!\r\n");
      TestFileWrite();
      TestFileRead();
    }

  } 


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]