STM32高级篇:Fatfs-0.09移植教程详解

版权申诉
0 下载量 166 浏览量 更新于2024-07-02 收藏 972KB PDF 举报
《零死角玩转STM32-高级篇2:文件系统(Fatfs-0.09 图解移植过程)》是一份针对STM32微控制器的高级教程,特别关注于文件系统的实现和移植。该教程由《零死角玩转STM32》系列教程的升级版构成,目标是帮助初学者逐步掌握STM32开发,从基础入门到深入理解,包括裸机编程到系统集成。 主要内容包括: 1. **系列教程介绍** - 该系列教程共分初级篇、中级篇、高级篇和系统篇,以野火STM32开发板为基础,经过优化编排,适合不同层次的学习者。 2. **Fatfs-0.09** - 实验使用了FATFS R0.09文件系统,这是一个用于MicroSD卡的通用文件系统,支持简体中文和长文件名。新版本还引入了SDIO的4bit+DMA模式,提高了数据传输性能。 3. **实验步骤** - 实验涉及在MicroSD卡上创建文本文件,并通过串口将其内容发送到电脑终端,展示如何利用STM32的GPIO、RCC、USART、SDIO和DMA模块进行硬件连接。关键库文件如`startup/start_stm32f10x_hd.c`、CMSIS库等都参与了这一过程。 4. **用户代码结构** - 用户需要编写`main.c`、`stm32f10x_it.c`、`usart1.c`、`sdio_sdcard.c`等核心驱动程序,以及与文件系统交互的`diskio.c`、`ff.c`和`cc936.c`。 5. **硬件连接** - 实验中,SDIO接口的引脚被用于连接MicroSD卡,包括CMD、CMD、DATA0-DATA3线,以及相应的中断处理。 6. **实验前提** - 前提条件是已经成功完成了上一讲关于SDIO(4bit+DMA)的实验,确保SDIO功能能够正常工作。 这份教程不仅提供了实践操作的步骤,还有详细的图解,便于理解和移植文件系统到实际项目中。此外,野火团队还计划在10月份发布《STM32库开发实战指南》,这本书将作为学习STM32的实用参考工具,进一步提升读者的技能。 通过阅读和实践这份教程,学习者将能深入理解STM32的文件系统管理和硬件通信机制,提升其在实际应用中的编程能力。
2021-04-21 上传
声明:该设计资料来自啊德Blog文章,希望给需要的朋友带来帮助。 一、序言 经常在网上、群里看到很多人问关于STM32的FATFS文件系统移植的问题,刚好自己最近也在调试这个程序,为了让大家少走弯路,我把我的调试过程和方法也贡献给大家。 二、FATFS简介 FatFs Module是一种完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C语言编写,所以具有良好的硬件平台独立性,可以移植到8051、PIC、AVR、SH、Z80、H8、ARM等系列单片机上而只需做简单的修改。它支持FATl2、FATl6和FAT32,支持多个存储媒介;有独立的缓冲区,可以对多个文件进行读/写,并特别对8位单片机和16位单片机做了优化。 三、移植准备 1、FATFS源代码的获取,可以到官网下载:https://elm-chan.org/fsw/ff/00index_e.html最新版本是R0.09版本,我们就移植这个版本的。 2、解压文件会得到两个文件夹,一个是doc文件夹,这里是FATFS的一些使用文档和说明,以后在文件编程的时候可以查看该文档。另一个是src文件夹,里面就是我们所要的源文件。 3、建立一个STM32的工程,为方便调试,我们应重载printf()底层函数实现串口打印输出。可以参考已经建立好的printf()打印输出工程:https://www.viewtool.com/bbs/foru ... d=77&extra=page=1(或者“相关附件”下载) 四、开始移植 在已经建立好的工程目录User文件夹下新建两个文件夹,FATFS_V0.09和SPI_SD_Card,FATFS_V0.09用于存放FATFS源文件,SPI_SD_Card用于存放SPI的驱动文件。 将ff.c添加到工程文件夹中,并新建diskio.c文件,在diskio.c文件中实现五个函数: DSTATUS disk_initialize (BYTE);//SD卡的初始化 DSTATUS disk_status (BYTE);//获取SD卡的状态,这里可以不用管 DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);//从SD卡读取数据 DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE);//将数据写入SD卡,若该文件系统为只读文件系统则不用实现该函数 DRESULT disk_ioctl (BYTE, BYTE, void*);//获取SD卡文件系统相关信息 如截图: FATFS初始化函数: FATFS状态获取函数: FATFS底层读数据函数: 注意:更多相关代码下载,见“相关附件”下载