STM32F4 USB FATFS U盘读写

本文档详细介绍了如何使用FatFs模块R0.10版本进行USB设备的适配,包括硬件连接、工作模式设置、内存管理、文件系统挂载及常见问题解决。特别关注了在不同文件系统格式下U盘容量读取的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.硬件连接
在这里插入图片描述
2.工作模式:HOST Full-Speed

3.FatFs - FAT file system module R0.10 ©ChaN, 2013

4.注意事项:

1.Fs File申请内存,否则后续会返回莫名其妙的错误;
  my_mem_init(SRAM1);			//³õʼ»¯ÄÚ²¿ÄÚ´æ³Ø
  fs[0] = (FATFS*)mymalloc(SRAM1, sizeof(FATFS));	
  file  = (FIL*)mymalloc(SRAM1, sizeof(FIL));
  内存管理如果报错超限,将数组改小一点。
2.在USB Init之前调用f_mount文件系统:
   f_mount(fs[0], "0:", 1) 立即挂载,返回3
   改为 f_mount(fs[0], "0:", 0)  返回0
3.移植注意diskio.c内的内容,需要时USB读写;
4.本例采用USB检测到,再挂载文件系统;
5.写文件时,注意看门狗;
6.U盘文件系统问题,FAT32 每单元4096字节,读出容量数据正常;
                    格式化成exFAT 每单元4096字节,读出容量数据异常;
                    格式化成NTFS 每单元4096字节,未验证;

在这里插入图片描述

一直想弄USB来着,今天就调试了下读U程序,自己测试了三个U和一个读卡器(U为4G、16G、16G,内存卡为2G)均可正常读取。废话不多说,介绍下实现的功能(各功能通过User键切换): 首先来张靓照,屏幕摔了两块,不敢买第三块了,索性拆了以前山寨机上的屏幕,自己做了个转接板,驱动成功(嘿嘿!) 1、读U信息,包括PID、VID和制造商等信息,如图: 2、读取U容量,用电脑看了下,容量一点不错。还有就是读取文件目录(这里暂时只做了两级显示) 3、创建一个TXT文件,并写入“STM32 Connectivity line Host Demo application using FAT_FS ”,在电脑端打开该TXT文件,其写入字符串正确。 4、显示一张BMP格式的图片(BMP图片显示最直接,就先弄它了),来自于ST 可实际发现,其图片竟然被镜像了,原因还在寻找中(估计是驱动有问题)。不管怎样,U读成功之后,以后玩Discovery就爽多了,各种图片、音乐甚至是AVI视屏都有可能实现啦!还是那句老话,独乐乐不如众乐乐,代码必须得传上来,嘿嘿! 总结: 欢迎各位坛友在此基础之上完成新的功能,例如MP3格式音乐解码播放(WAV格式音乐毕竟非主流,播放一会主芯片还发热,就不搞WAV了)。还有emWin,我目前只是移植成功了,还没学会如何结合自己的需求进行应用,并且FPU功能的异常中断问题还没解决,只能不使用FPU演示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值