单片机/MCU论坛
直播中

云端吃番茄

4年用户 5经验值
擅长:嵌入式技术
私信 关注
[问答]

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

用的是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:");
}

回帖(3)

游天云

2024-9-30 13:11:49

最佳答案

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

游天云

2024-10-9 09:59:55
挂载文件不正确。第一次挂载后成功后需要格式化文件系统。而不是挂载失败在格式化
举报

游天云

2024-10-9 10:03:19
  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();
    }

  }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分