[STM32F1] 单片机U盘程序问题

[复制链接]
 楼主| flycamelaaa 发表于 2024-7-29 11:15 | 显示全部楼层 |阅读模式
STM32F105 U盘程序问题 单片机刚上电第一次插入U盘进行读写操作会失败但f_open()函数可以成功f_close()也可以成功,调用f_write()和f_read()会显示底层IO错误A hard error occurred in the low level disk I/O layer请问这是怎么回事?就是单片机上电必须插拔一次U盘才可以正常调用f_write和f_read函数

f_mount(),f_open(),f_lseek(),f)close()全都没有问题,只有当调用f_write(),和f_read()会显示A hard error occurred in the low level disk I/O layer,但是插拔完一次f_write(),和f_read()就可以使用了
kzlzqi 发表于 2024-7-29 15:02 | 显示全部楼层
某些U盘在电源上电后,可能需要一些时间来完成自检或初始化,这可能导致在初始化期间的读写操作失败。
范德萨发额 发表于 2024-7-29 15:46 | 显示全部楼层
虽然 f_mount() 成功,但U盘在第一次插入时可能还没有完全准备好,导致 f_write() 和 f_read() 失败。
elephant00 发表于 2024-7-29 21:18 | 显示全部楼层
USB枚举延迟所致?
两只袜子 发表于 2024-7-29 21:19 | 显示全部楼层
在调用f_mount()之后,加入适当的延时(如几百毫秒到一秒),确保USB设备已经完全枚举和准备好。
jcky001 发表于 2024-7-29 21:19 | 显示全部楼层
如果U盘的电源或数据信号在单片机上电时不够稳定,可能会导致首次枚举或通信失败
cr315 发表于 2024-7-29 21:19 | 显示全部楼层
检查电源供应是否稳定,确保USB数据线的质量良好,尝试使用不同的USB线和U盘进行测试。
duo点 发表于 2024-7-29 21:20 | 显示全部楼层
文件系统挂载问题,尽管f_mount()可能返回成功,但实际上文件系统可能还没有完全挂载或准备好。
laocuo1142 发表于 2024-7-29 21:21 | 显示全部楼层
在f_mount()之后,可以尝试通过查询USB设备的状态或使用更详细的调试信息来确认文件系统状态。
 楼主| flycamelaaa 发表于 2024-7-29 21:21 | 显示全部楼层
powerantone 发表于 2024-7-29 21:22 | 显示全部楼层
更新到最新的库版本,或尝试使用不同的库
stormwind123 发表于 2024-7-29 21:23 | 显示全部楼层
USB主机控制器的初始化是否有误
probedog 发表于 2024-7-29 21:23 | 显示全部楼层
重新检查电路设计,必要时进行修改或优化。
classroom 发表于 2024-7-29 21:24 | 显示全部楼层
尝试使用不同类型的U盘进行测试,看问题是否依旧存在。
申小林一号 发表于 2024-7-29 22:36 | 显示全部楼层
感谢分享
学生会那点事ya 发表于 2024-8-31 22:38 | 显示全部楼层
在第一次插入 U 盘时,确保 U 盘的初始化和文件系统挂载完成。如果 U 盘的初始化未完全完成,可能会导致读写操作失败。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

824

主题

4298

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部