单片机读取U盘 FATFS文件系统 USB MSC STM32f105 GD32f305 读取U盘 exFAT FAT32
在嵌入式系统开发中,使用U盘进行数据存储和传输是一种常见且便捷的方式。本文介绍了如何通过FATFS文件系统和USB MSC协议实现U盘的读写操作,并将其应用于嵌入式系统中。文章详细讲解了FATFS文件系统的基础知识、USB MSC协议的基本概念,以及如何在STM32开发环境中配置和使用FATFS与USB MSC进行U盘操作。通过具体的代码示例和配置步骤,读者可以快速上手实现U盘的数据读写功能。本文
一、引言
在嵌入式系统开发中,使用U盘进行数据存储和传输是一种常见且便捷的方式。最近,我在学习如何通过FATFS文件系统和USB MSC协议实现U盘的读写操作,并将其应用于嵌入式系统中。
---------------------------------------------------------结尾附上源码-----------------------------------------------------
友情提示:本项目目前并不完善,我在开发过程中遇到了一些问题(如经常性读取失败),尽管借鉴了多个平台的资料,但仍未找到解决方案。希望通过这篇博客,能够遇到有经验的开发者给予指导,非常感谢!
为了排除硬件问题,我新购买了一块开发板,并会在后续更新中分享更多内容。
二、FATFS 文件系统基础
FATFS是一个开源的文件系统库,支持FAT12、FAT16和FAT32文件系统(也可通过配置支持exFAT格式,但我在使用的芯片中未找到相关配置选项)
FATFS的配置手册详细介绍了如何根据项目需求进行功能配置,手册地址如下:
来自 < http://elm-chan.org/fsw/ff/doc/config.html#use_expand>
FATFS 的特点及库文件
-
ff.h 和 ff.c:文件系统相关的代码。
-
diskio.h 和 diskio.c:磁盘I/O操作接口代码。
-
ffconf.h:文件系统版本配置代码,通过配置来开启或关闭特定功能。
-
支持多种MCU和操作系统,提供丰富的文件操作接口。
FatFS常用接口
FatFS提供了丰富的文件操作接口,例如打开文件、读取文件、写入文件、关闭文件等。文件的基本操作流程包括挂载、打开、读取/写入和关闭。
三、USB MSC 基础
USB MSC是USB设备类规范之一,用于定义存储设备(如U盘、移动硬盘)与主机之间的通信协议。
在嵌入式系统中,选择USB作为主机设备时,MX_USB_HOST_Process函数会自动生成在main.c中while(1)循环中,用于不断检测USB设备是否插入。
四、软硬件准备
-
核心板:GD32F305VCT6(斥候蜂科技)
-
CUBEMx版本:MX.6.12.0
-
调试工具:sscom串口调试助手
五、CUBEmx配置
本文暂不详细介绍CUBEMx的配置步骤,因为网上资源丰富,大家可以参考以下大佬的配置教程:
六、FATFS 与 USB MSC 的结合应用
通过FATFS,我们可以实现对U盘的读取和写入操作。具体步骤如下:
-
挂载U盘文件系统。
-
打开文件。
-
读取或写入数据。
-
关闭文件。
-
卸载文件系统。
七、代码分析 (详情可以参考源码 已在文末给出)
在main.c函数中循环调用MX_USB_HOST_Process()检测是否有USB设备插入

不断检测USB设备状态,并通过串口打印出来

然后 Appli_state状态为APPLICATION_READY时,调用应用函数,从而实现对U盘 进行数据读写的功能

实验现象

八、源码分享
https://gitee.com/Lucky_17wow/USB-R_W-UDISK
https://gitee.com/Lucky_17wow/USB-R_W-UDISK
友情提示:本项目并不完善,作者借鉴了多个平台的资料,仍然未发现问题(经常性读取失败),借此希望能遇到大哥指导一下,谢谢!为了排除是否硬件有问题,作者又新买了一块开发板,本文会持续更新!!!
作者为即将毕业的大学生,为提升技术水平,最近开始编写技术分享文章。如有问题或建议,欢迎在评论区交流,我会及时回复。感谢您的阅读!
转载声明:如需转载,请标注原作者及出处。
更多推荐


所有评论(0)