FATFS

FATFS

FATFS 是一个完全免费开源的 FAT/exFAT 文件系统模块,专门为小型的嵌入式系统而设计。

分区

当你需要对你的存储 设备进行 分区的时 需要在以下两个函数 中实现地址的偏移

DRESULT TM_FATFS_FLASH_SPI_disk_read(BYTE *buff, DWORD sector, UINT count)
DRESULT TM_FATFS_FLASH_SPI_disk_read(BYTE *buff, DWORD sector, UINT count)

DRESULT TM_FATFS_FLASH_SPI_disk_read(BYTE *buff, DWORD sector, UINT count)
{
	FLASH_DEBUG_FUNC();
	if ((TM_FATFS_FLASH_SPI_Stat & STA_NOINIT)) 
	{
		return RES_NOTRDY;
	}
	sector+=512;//扇区偏移,外部Flash文件系统空间放在外部Flash后面6M空间
	SPI_FLASH_BufferRead(buff, sector <<12, count<<12);
	return RES_OK;
}
DRESULT disk_read (
	BYTE pdrv,		/* Physical drive nmuber (0..) */
	BYTE *buff,		/* Data buffer to store read data */
	DWORD sector,	/* Sector address (LBA) */
	UINT count		/* Number of sectors to read (1..128) */
)
{
	DRESULT status = RES_PARERR;
	switch (pdrv) {
		case ATA:	/* SD CARD */
			#if FATFS_USE_SDIO == 1
				status = TM_FATFS_SD_SDIO_disk_read(buff, sector, count);	/* SDIO communication */
			#endif
			break;
		case SPI_FLASH:
			#if	FATFS_FLASH_SPI ==1
			status = TM_FATFS_FLASH_SPI_disk_read(buff, sector, count);	/* SDIO communication */
			#endif
		break;
		default:
			status = RES_PARERR;
	}
	return status;
}

f_mkfs()

在设备没有文件系统是需要 在设备上建议文件系统,如没有建立文件系统可能倒是挂载失败
参数中的扇区大小需要和设备匹配 不匹配可能会导致 数据丢失等问题
f_mount
没有文件系统就格式化创建创建文件系统

f_Write

写操作时候 可能需要擦除设备 需要自己在接口中实现

f_unlink

删除操作,此函数并不是真正的删除即擦除FLASH而是在文件系统中的将此链接地址删除实际的内容还是存在的

Cubemx生成代码

Cubemx生成的代码MX_FATFS_Init();中有链接驱动的函数retUSER = FATFS_LinkDriver(&USER_Driver, USERPath),此函式是将用户的驱动函数和FatfS的中的函数进行链接,
需要自己在USER_Driver 完成驱动的编写

参考

https://blog.csdn.net/qq_42900996/article/details/108106655
https://www.bilibili.com/video/BV13F4m1K78y/?spm_id_from=333.788&vd_source=67f62f634c89be94a320f5d320af02f8
https://blog.csdn.net/weixin_44502943/article/details/120690072
https://blog.csdn.net/qq_45217381/article/details/136385786?spm=1001.2014.3001.5502
https://blog.csdn.net/qq_45217381/article/details/136443239?spm=1001.2014.3001.5502

注意点
1.我们在使用文件操作前,需要用 f_mount 函数挂载磁盘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值