教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 基础教育 >

在STM32中移植FATFS文件系统

来源:网络收集 时间:2026-09-12
导读: . . STM32的FATFS文件系统移植笔记 一、序言 经常在网上、群里看到很多人问关于STM32的FATFS文件系统移植的问题,刚好自己最近也在调试这个程序,为了让大家少走弯路,我把我的调试过程和方法也贡献给大家。 二、FATFS简介 FatFs Module是一种完全免费开源的

.

. STM32的FATFS文件系统移植笔记

一、序言

经常在网上、群里看到很多人问关于STM32的FATFS文件系统移植的问题,刚好自己最近也在调试这个程序,为了让大家少走弯路,我把我的调试过程和方法也贡献给大家。

二、FATFS简介

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

三、移植准备

1、FATFS源代码的获取,可以到官网下载:966c28fbbdd126fff705cc1755270722182e59ed/fsw/ff/00index_e最新版本是R0.09版本,我们就移植这个版本的。

2、解压文件会得到两个文件夹,一个是doc文件夹,这里是FATFS的一些使用文档和说明,以后在文件编程的时候可以查看该文档。另一个是src文件夹,里面就是我们所要的源文件。

3、建立一个STM32的工程,为方便调试,我们应重载printf()底层函数实现串口打印输出。可以参考已经建立好的printf()打印输出工程:.viewtool./bbs/foru ...

d=77&extra=page%3D1

四、开始移植

1、在已经建立好的工程目录User文件夹下新建两个文件夹,FATFS_V0.09和SPI_SD_Card,FATFS_V0.09用于存放FATFS源文件,SPI_SD_Card用于存放SPI的驱动文件。

2、如图1将ff.c添加到工程文件夹中,并新建diskio.c文件,在diskio.c文件中实现五个函数:

1.DSTATUS disk_initialize (BYTE);//SD卡的初始化

2. DSTATUS disk_status (BYTE);//获取SD卡的状态,这里可以不用管

3. DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);//从SD卡读取数据

4. DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE);//将数据写入SD

卡,若该文件系统为只读文件系统则不用实现该函数

5. DRESULT disk_ioctl (BYTE, BYTE, void*);//获取SD卡文件系统相关信息

6.

复制代码

.

图1

3、初步实现以上五个函数

FATFS初始化函数:

1.DSTATUS disk_initialize (

2. BYTE drv /* Physical drive nmuber (0..) */

3. )

4. {

5. switch (drv)

6. {

7. case 0 :

8. return RES_OK;

9. case 1 :

10. return RES_OK;

11. case 2 :

12. return RES_OK;

13. case 3 :

14. return RES_OK;

15. default:

16. return STA_NOINIT;

17. }

18. }

复制代码

.

. 1.DSTATUS disk_status (

2. BYTE drv /* Physical drive nmuber (0..) */

3. )

4. {

5. switch (drv)

6. {

7. case 0 :

8. return RES_OK;

9. case 1 :

10. return RES_OK;

11. case 2 :

12. return RES_OK;

13. default:

14. return STA_NOINIT;

15. }

16. }

复制代码

FATFS底层读数据函数:

1.DRESULT disk_read (

2. BYTE drv, /* Physical drive nmuber (0..) */

3. BYTE *buff, /* Data buffer to store read data

*/

4. DWORD sector, /* Sector address (LBA) */

5. BYTE count /* Number of sectors to read (1..255) */

6. )

7. {

8. if( !count )

9. {

10. return RES_PARERR; /* count不能等于0,否则返回参数错误 */

11. }

12. switch (drv)

13. {

14. case 0:

15. if(count==1) /* 1个sector的读操作

*/

16. {

17. return RES_OK;

18. }

.

. 19. else /* 多个sector的读操作

*/

20. {

21. return RES_OK;

22. }

23. case 1:

24. if(count==1) /* 1个sector的读操作

*/

25. {

26. return RES_OK;

27. }

28. else /* 多个sector的读操作

*/

29. {

30. return RES_OK;

31. }

32.

33. default:

34. return RES_ERROR;

35. }

36. }

复制代码

FATFS底层写数据函数:

1.DRESULT disk_write (

2. BYTE drv, /* Physical drive nmuber (0..)

*/

3. const BYTE *buff, /* Data to be written */

4. DWORD sector, /* Sector address (LBA) */

5. BYTE count /* Number of sectors to write (1..255) */

6. )

7. {

8. if( !count )

9. {

10. return RES_PARERR; /* count不能等于0,否则返回参数错误 */

11. }

12. switch (drv)

13. {

14. …… 此处隐藏:8701字,全部文档内容请下载后查看。喜欢就下载吧 ……

在STM32中移植FATFS文件系统.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/339144.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)