FATS文件管理系统STM32移植

前言:本人移植的FATS的STM32F1代码已经上传到我的资源,如果有需要的可以点击下面链接:https://download.csdn.net/download/qq_40831778/11916818

一、 概述

1、 文件系统简介:

(1)文件系统:管理和存储文件信息的软件机构。

(2)常用的文件系统:

  •      FAT/FATFS
  •      NTFS(基于安全性的文件系统,是Wundow NT采用的独特的文件系统结构。
  •      CDFS:CDFS是大部分光盘的文件系统

2、 FATFS文件系统简介:

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

3、 FATFS文件系统特点:

  •      Window兼容的FAT文件系统(支持FAT12/FAT16/FAT32)。
  •      代码量少、效率高。
  •      与平台无关、移植简单,全部通过C语言编写。
  •      多种配置选项:支持多卷(物理驱动器或分区,最多10个卷)、多个ANSI/OEM代码页、支持长文件名、支持RTOS、支持多种扇区大小等。
     

4、 文件系统主要文件介绍:

文件名

功能

说明

ffconf.h

FATFS模块配置文件

需要根据需求来配置参数

ff.h

FATFS和应用模块公用的包含文件

不需要修改

ff.c

FATFS模块源码

不需要修改

diskio.h

FATFS和disk I/O模块公用的包含文件

不需要修改

diskio.c

FATFS和disk I/O模块接口层文件

与平台相关的代码,需要用户根据存储介质来编写函数

interger.h

数据类型定义

与编译器有关

二、开始移植

1、我们打开下载好的FATS源码,正常来说会有两个文件夹,我们打开src文件夹,此文件夹里面都是我们需要的FATS源码,

 2、大家注意到src里面还有一个文件夹,这个是可选的外部功能(比如支持中文等)。一般我们使用中文的话,将cc926.c添加到工程里面就好了。

3、我们需要将源码添加到STM32文件里,正常来说,我们只要将ff.c,cc936.c,diskio.c,添加到工程里面就好了。,之后配置好头文件 。

4、ffconf.h配置说明

这 ffconf.h 的头文件里面是关于 FATFS 的各种设置,我们可以根据自己的需 要来裁剪 FATFS,已达到自己想要的标准。我们来看一下它都有那些设置:

1)              _FS_TINY

这个设置是配置是使用标准模式,还是微小模式。我们使用标准模式, 这里设置为:0。

2)              _FS_READONLY

是否使用只读模式,我们选择可读可写。设置为:0。

3)              _FS_MINIMIZE

这个设置是选择是否裁剪掉一些函数,具体裁剪那些,大家可以查看下 面的设置说明,我们这里使用的全功能模式。设置为:0。

4)              _USE_STRFUNC

这个用来设置是否支持字符串类操作,我们选择使用。设置为:1。

5)              _USE_MKFS

使用使用格式化,我们这里选择使用。设置为:1。

6)              _USE_FASTSEEK

使用使能快速定位,我们选择使用。设置为:1。

7)              _USE_LABEL

是否启用磁盘卷标功能。使用也可以,不使用也可以。我们这里使用。 设置为:1。

8)              _USE_FORWARD

这个是在 TINY 模式下的设置,我们这里使用标准模式,不理它。

9)              _CODE_PAGE

这个用于设置语言类型。我们使用的中文。设置为:936

10) _USE_LFN

该选项用于设置是否支持长文件名(还需要_CODE_PAGE 支持),取值 范围为 0~3。0,表示不支持长文件名,1~3 是支持长文件名,但是存储地方 不一样。我们这里就默认使用 FATFS 本身的存储方式了。设置为:1。

11) _MAX_LFN

设置最大文件名长度,我们直接设置最大。设置为:255。

12) _LFN_UNICODE

是否使用 FATFS 的字符编码。我们不使用。设置为:0

13) _FS_RPATH

这里也是一些函数裁剪,我们这里设置为:1。

14) _VOLUMES

这里设置的是支持的卷轴数量,我们挂载 SD 卡,有时候可以挂载下

FLASH,所以这里我们设置为两个:2。

15) _MAX_SS

这里是设置扇区缓冲的最大值,我们设置为:512。

16) _MULTI_PARTITION

是否使用多重分区分配。我们这里设置为:0。

17) _USE_ERASE 使用使用扇区擦除。我们这里不那么麻烦,想使用的时候在设置。设置 为:0。

18) _WORD_ACCESS

这里定义使用权限。一般不使用。我们设置为:0。

19) _FS_REENTRANT

20) _FS_TIMEOUT

21) _SYNC_t

22) _FS_LOCK

这几个设置,我们都没有使用到,所以直接保持默认状态就好。

4、 diskio.c 函数介绍

(1)disk_initialize()函数

2)              disk_status()函数

3、disk_read()函数

4)              disk_write()函数

5)              disk_ioctl()函数

6)              get_fattime()函数 

三、fats的使用

我们首先需要添加SPI通信协议,之后我们根据自己所要使用的模块,更改ffconf.h文件,以及 diskio.c 里面的函数就可以正常使用了。

最后,看到我这篇文章的朋友,如果我的文章真的帮助到了你,记得帮我点个赞,如果希望和我共同学习,共同交流,可以关注我一下。本人QQ:2992789432

发布了45 篇原创文章 · 获赞 96 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40831778/article/details/102737382