STM32-FATFS文件系统

一、FATFS文件系统介绍:

FATFS 是一个完全免费开源的 FAT/exFAT 文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准 C 语言(ANSI C C89)编写,所以具有良好的硬件平台独立性,只需做简单的修改就可以移植到 8051、PIC、AVR、ARM、Z80、RX 等系列单片机上。它支持 FATl2、FATl6 和FAT32,支持多个存储媒介;有独立的缓冲区,可以对多个文件进行读/写,并特别对 8 位单片机和 16 位单片机做了优化。

二、FATFS的源码说明:

diskio.h:FATFS 和 diskI/O 模块公用的包含文件;

ff.c:FATFS 模块;

ff.h:FATFS 和应用模块公用的包含文件;

ffconf.h:FATFS 模块配置文件,宏定义对应的功能,代码中都有说明,具体的配置范围可以见官方配置说明;

ffsystem.c:根据是否有操作系统来修改这个文件;

ffunicode.c:可选,根据 ffconf.h 的配置,进行Unicode编码转换;

diskio.c:FATFS 和 diskI/O 模块接口层文件,需要根据硬件修改这部分的代码。

备注:diskio.c与硬件平台有关,其它与硬件平台无关

1.FATFS模块的所有配置项都是存放在 ffconf.h说明

_FS_TINY:选择FATFS或者TinyFATFS;

_FS_READONLY:只读或读写方式配置;

_FS_MINIMIZE:配置FATFS功能优化级别;

_USE_STRFUNC:配置是否支持字符串操作函数宏定义;

_USE_MKFS:配置用来定时是否使能格式化;

_USE_FASTSEEK:配置使能快速定位;

_CODE_PAGE:设置语言类型;

_USE_LFN:设置是否支持长文件名;

_LFN_UNICODE:使能或禁用Unicode编码;

_FS_RPATH:是否开启相对路径;

_VOLUMES:设置FATFS支持的逻辑设备数目;

_MAX_SS:扇区缓冲的最大值;

_MULTI_PARTITION:配置分区设置;

_USE_ERASE:配置扇区擦除功能;

_WORD_ACCESS:配置字节或者字访问方式;

_FS_REENTRANT:配置文件系统是否支持重入;

_FS_TIMEOUT:超时时间设置;

_FS_SHARE:设置文件支持的共享数目。

三、FATFS的移植:

1.数据类型:在 integer.h 里面去定义好数据的类型。这里需要了解你用的编译器的数据类型,并根据编译器定义好数据类型。

2.配置:通过 ffconf.h 配置 FATFS 的相关功能,以满足你的需要。

3.函数编写:打开 diskio.c,进行底层驱动编写,一般需要编写 5 个接口函数。

①.disk_initalize函数:初始化磁盘驱动器;

②.disk_status函数:返回当前磁盘驱动器的状态;

③.disk_read函数:从磁盘驱动器上读取扇区;

④.disk_write函数:向磁盘写入一个或多个扇区;

⑤.disk_iotcl函数:控制设备指定特性和除了读/写外的杂项功能。

四、FATFS模块开放函数 :

  1. f_mount - 注册/注销一个工作区域(Work Area)
  2. f_open - 打开/创建一个文件
  3. f_close - 关闭一个文件
  4. f_read - 读文件
  5. f_write - 写文件
  6. f_lseek - 移动文件读/写指针
  7. f_truncate -截断文件
  8. f_sync - 冲洗缓冲数据 Flush Cached Data f_forward - 直接转移文件数据到一
    个数据流
  9. f_stat - 获取文件状态
  10. f_opendir - 打开一个目录
  11. f_closedir -关闭一个已经打开的目录
  12. f_readdir - 读取目录条目
  13. f_mkdir - 创建一个目录
  14. f_unlink -删除一个文件或目录
  15. f_chmod - 改变属性(Attribute)
  16. f_utime -改变时间戳(Timestamp)
  17. f_rename - 重命名/移动一个文件或文件夹
  18. f_chdir - 改变当前目录
  19. f_chdrive - 改变当前驱动器
  20. f_getcwd - 获取当前工作目录
  21. f_getfree - 获取空闲簇 Get Free Clusters
  22. f_getlabel - Get volume label
  23. f_setlabel - Set volume label
  24. f_mkfs - 在驱动器上创建一个文件系统
  25. f_fdisk - Divide a physical drive
  26. f_gets - 读一个字符串
  27. f_putc - 写一个字符
  28. f_puts - 写一个字符串
  29. f_printf - 写一个格式化的字符串
  30. f_tell - 获取当前读/写指针
  31. f_eof - 测试文件结束
  32. f_size - 获取文件大小
  33. f_error - 测试文件上的错误
相关推荐
国科安芯41 分钟前
低成本抗辐照MCU控制板
单片机·嵌入式硬件·fpga开发·安全威胁分析
小昭在路上……1 小时前
探秘 IIC 与 SPI:软件模拟与硬件接口的抉择之谜
stm32·单片机·嵌入式硬件
优信电子3 小时前
STM32软件IIC驱动TCA9548A多路测量AHT10
stm32·iic·aht10·tca9548a·i2c拓展
TNT_TT4 小时前
一、STM32MP257开发板初体验
linux·stm32·单片机·嵌入式硬件·yocto
嵌入式大圣4 小时前
嵌入式电机驱动开发
驱动开发·单片机·嵌入式硬件
lanhuazui104 小时前
江科大笔记—DMA数据转运&DMA+AD多通道
stm32·单片机
旅行者星期日6 小时前
01-51单片机硬件基础
单片机·嵌入式硬件·51单片机
@@庆6 小时前
Stream– ESP8266物联网应用,(客户端向服务器发送数据信息& 客户端向服务器请求数据信息)
服务器·单片机·嵌入式硬件·物联网
蓝本生7 小时前
STM32标准库学习之环境搭建
stm32·嵌入式硬件·学习