STM32的FATFS文件系统

这篇具有很好参考价值的文章主要介绍了STM32的FATFS文件系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STM32的FATFS文件系统

一、FATFS简介

  文件系统是为了存储和管理数据,而在存储介质建立的一种组织结构,这些结构包括操作系统引导区、目录和文件。常见的 windows 下的文件系统格式包括 FAT32、NTFS、exFAT。在使用文件系统前,要先对存储介质进行格式化。格式化先擦除原来内容,在存储介质上新建一个文件分配表和目录。这样,文件系统就可以记录数据存放的物理地址,剩余空间。
   使用文件系统时,数据都以文件的形式存储。写入新文件时,先在目录中创建一个文件索引,它指示了文件存放的物理地址,再把数据存储到该地址中。当需要读取数据时,可以从目录中找到该文件的索引,进而在相应的地址中读取出数据。具体还涉及到逻辑地址、簇大小、不连续存储等一系列辅助结构或处理过程。
   文件系统的存在使我们在存取数据时,不再是简单地向某物理地址直接读写,而是要遵循它的读写格式。如经过逻辑转换,一个完整的文件可能被分开成多段存储到不连续的物理地址,使用目录或链表的方式来获知下一段的位置。
  FATFS 是一个完全免费开源的 FAT/exFAT 文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准 C 语言(ANSI C C89)编写,所以具有良好的硬件平台独立性,只需做简单的修改就可以移植到 8051、PIC、AVR、ARM、Z80、RX 等系列单片机上。它支持 FATl2、FATl6 和FAT32,支持多个存储媒介;有独立的缓冲区,可以对多个文件进行读/写,并特别对 8 位单片机和 16 位单片机做了优化。
   FATFS 的特点有:
1.Windows/dos 系统兼容的 FAT/exFAT 文件系统
2. 独立于硬件平台,方便跨硬件平台移植
3. 代码量少、效率高
4.多种配置选项
(1)支持多卷(物理驱动器或分区,最多 10 个卷)
(2)多个 ANSI/OEM 代码页包括 DBCS
(3)支持长文件名、ANSI/OEM 或 Unicode
(4)支持 RTOS
(5)支持多种扇区大小
(6)只读、最小化的 API 和 I/O 缓冲区等
(7)新版的 exFAT 文件系统,突破了原来 FAT32 对容量管理 32Gb 的上限,可支持更巨大的存储

1.使用SPI FLASH直接存储数据
   可以把这些文字转化成ASCII码,存储在数组中,然后调用SPI_FLASH_BufferWrite函数,把数组内容写入到SPI Flash芯片的指定地址上,在需要的时候从该地址把数据读取出来,再对读出来的数据以ASCII码的格式进行解读。

缺点:
(1)难以记录有效数据的位置
(2)难以确定存储介质的剩余空间
(3)不明确应以何种格式来解读数据

2.磁盘分区表
  Windows操作系统为了便于用户对磁盘的管理。加入了磁盘分区的概念,即将一块磁盘逻辑划分为几块,它会把磁盘的分区信息记录到硬盘分区表中。
  在硬盘分区表中,描述了各个逻辑分区的属性,如分区开始和结束位置所在的物理地址(柱面号、扇区号),空间大小等信息。
单片机的文件系统,嵌入式,stm32,单片机,嵌入式硬件
3.文件系统
文件系统的空间示意图
单片机的文件系统,嵌入式,stm32,单片机,嵌入式硬件
目录示意图
单片机的文件系统,嵌入式,stm32,单片机,嵌入式硬件
文件分配表
单片机的文件系统,嵌入式,stm32,单片机,嵌入式硬件
  文件 a.txt 我们根据目录项中指定的 a.txt 的首簇为 2,然后找到文件分配表的第 2 簇记录,上面登记 的是 3,就能确定下一簇是 3。找到文件分配表的第 3 簇记录,上面登记的 是 4,就能确定下一簇是 4…直到指到第 11 簇,发现下
一个指向是 FF,就是结束。文件便读取完毕。

举例:
(1)文件系统的空间示意图
单片机的文件系统,嵌入式,stm32,单片机,嵌入式硬件

(2)删除B.TXT文件,创建D.TXT文件后的空间示意图
单片机的文件系统,嵌入式,stm32,单片机,嵌入式硬件
(3)原目录示意图
单片机的文件系统,嵌入式,stm32,单片机,嵌入式硬件
(4)删除B.TXT文件,创建D.TXT文件后的目录示意图
单片机的文件系统,嵌入式,stm32,单片机,嵌入式硬件
(5)原文件分配表示意图
单片机的文件系统,嵌入式,stm32,单片机,嵌入式硬件
(6)删除B.TXT文件,创建D.TXT文件后的文件分配表示意图
单片机的文件系统,嵌入式,stm32,单片机,嵌入式硬件

二、FATFS 层次结构图

单片机的文件系统,嵌入式,stm32,单片机,嵌入式硬件
   最顶层是应用层,使用者无需理会FATFS的内部结构和复杂的FAT协议,只需要调用FATFS模块提供给用户的一系列应用接口函数,如 f_open,f_read,f_write 和 f_close 等,就可以像在PC 上读/写文件那样简单。
   中间层 FATFS 模块,实现了 FAT 文件读/写协议。FATFS 模块提供的是 ff.c 和 ff.h。除非有必要,使用者一般不用修改,使用时将头文件直接包含进去即可。
   需要我们编写移植代码的是 FATFS 模块提供的底层接口,它包括存储媒介读/写接口(diskI/O)和供给文件创建修改时间的实时时钟。

三、应用接口(FatFs为应用程序提供各种文件系统功能,如下所示)

单片机的文件系统,嵌入式,stm32,单片机,嵌入式硬件
文件访问
f_open-打开/创建文件
f_close-关闭打开的文件
f_read-从文件读取数据
f_write-将数据写入文件
f_lseek-移动读/写指针,扩展大小
f_truncate-截断文件大小
f_sync-刷新缓存的数据
f_forward-将数据转发到流
f_expand-将连续块分配给文件
f_gets-读取字符串
f_putc-写一个字符
f_puts-写一个字符串
f_printf-编写格式化的字符串
f_tell-获取当前的读/写指针
f_eof-测试文件结尾
f_size-获取大小
f_error-测试错误

目录访问
f_opendir-打开目录
f_closedir-关闭打开的目录
f_readdir-读取目录项
f_findfirst-打开目录并读取匹配的第一项
f_findnext-阅读下一个匹配的项目

文件和目录管理
f_stat-检查文件或子目录是否存在
f_unlink-删除文件或子目录
f_rename-重命名/移动文件或子目录
f_chmod-更改文件或子目录的属性
f_utime-更改文件或子目录的时间戳
f_mkdir-创建一个子目录
f_chdir-更改当前目录
f_chdrive-更改当前驱动器
f_getcwd-检索当前目录和驱动器

卷管理和系统配置
f_mount-注册/注销卷的工作区
f_mkfs-在逻辑驱动器上创建FAT卷
f_fdisk-在物理驱动器上创建分区
f_getfree-获取卷上的可用空间
f_getlabel-获取卷标
f_setlabel-设置卷标
f_setcp-设置活动代码页

四、介质访问接口

  由于FatFs模块是独立于平台和存储介质的文件系统层,因此它与物理设备(例如存储卡,硬盘和任何类型的存储设备)完全分开。 低级设备控制模块不是FatFs模块的任何部分,需要由实施者提供。 FatFs通过如下所示的简单媒体访问界面访问存储设备。 下载中还提供了某些平台的示例实现。 此处提供了用于低级磁盘I / O模块的功能检查器。

单片机的文件系统,嵌入式,stm32,单片机,嵌入式硬件
disk_status-获取设备状态
disk_initialize-初始化设备
disk_read-读取扇区
disk_write-写入扇区
disk_ioctl-控制设备相关的功能
get_fattime-获取当前时间文章来源地址https://www.toymoban.com/news/detail-674295.html

到了这里,关于STM32的FATFS文件系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机项目分享 stm32机器视觉的口罩佩戴检测系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(83)
  • stm32毕设分享 Stm32酒驾检查系统 - 单片机 嵌入式 物联网

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月23日
    浏览(76)
  • stm32毕设分享 stm32实现车牌识别系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(63)
  • 单片机毕设分享 基于STM32单片机的老人防摔倒报警系统 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月02日
    浏览(71)
  • stm32毕设分享 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(77)
  • 【项目设计】基于STM32人脸识别系统 - 单片机 物联网 嵌入式

    项目设计主要是对于所学知识的整体回顾,需要结合各个学科,才能做出达到符合标准的设计。 文章的目的在分享优质的项目以及项目经验,提供设计思路,欢迎交流与指正不足之处。 由于人脸识别技术具有无需接触、安全性高、可靠性高等优点,在身份认证领域具有广阔

    2024年01月21日
    浏览(69)
  • stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(62)
  • 【毕业设计】基于单片机的智能鱼缸系统设计与实现 - 嵌入式 物联网 stm32 51单片机 智能鱼缸

    Hi,大家好,今天向大家介绍一个 单片机项目, 大家可用于 课程设计 或 毕业设计 基于单片机的智能鱼缸系统设计与实现 🔥 项目分享与指导: https://gitee.com/sinonfin/sharing 近年以来,随着我国综合实力飞速飙升,人们对物质和精神生活质量的要求也不断提升,各式各样的智能

    2024年02月04日
    浏览(90)
  • stm32毕设分享 stm32单片机酒精浓度酒驾检测系统 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(70)
  • 单片机项目分享 Stm32 WIFI智能家居温湿度和烟雾检测系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包