打印
[STM32F4]

用CubeMX生成的USB MassStorage Host代码,部分U盘不能访问

[复制链接]
2955|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
戈卫东|  楼主 | 2015-9-3 02:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一些得到“FR_DISK_ERR”,一些得到“FR_NOT_READY”,还有一些可以成功读写。
不知道究竟有哪些限制,和怎么才能访问所有类型的U盘。。。。
MCU是STM32F407ZG,CubeMX版本是4.9
求指导。。。。。
沙发
全速前行| | 2015-9-3 15:57 | 只看该作者
这种问题还真没遇到过,楼主是干什么遇到这种情况啊,可以详细说明一下吗?

使用特权

评论回复
板凳
香水城| | 2015-9-9 12:16 | 只看该作者
首先,跑的高速还是全速的USB通信?

然后,对于这类问题两个思路:

1. STM32CubeFx library里面现成的MSC Host能否正常操作这些失败的U盘。使用现成的MSC Host Demo,USB引脚部分应该不要修改,最多改一下是时钟和系统时钟。

2. 从错误信息倒推。我从STM32CubeF4 library里面的MSC Host Demo来看,FR_NOT_READY的返回都是在disk_initializate()之后状态信息stat&STA_NOINIT。但是disk_initialization是个直接返回的函数。是不会出现FR_NOT_READY这种情况的,你的CubeMX生成的代码里,disk_initialiation是怎样实现的?

使用特权

评论回复
地板
戈卫东|  楼主 | 2015-9-9 22:00 | 只看该作者
香水城 发表于 2015-9-9 12:16
首先,跑的高速还是全速的USB通信?

然后,对于这类问题两个思路:

你说的对。
比较新的支持USB3.0的U盘(只测试了少数几个),f_mount()就会返回FR_DISK_ERR;
其它的非3.0的,f_mount返回的是FR_OK,f_open也返回FR_OK,但是f_write返回FR_NOT_READY。

使用特权

评论回复
5
戈卫东|  楼主 | 2015-9-9 22:03 | 只看该作者
我用的是全速。电路参照ST的407评估板

使用特权

评论回复
6
戈卫东|  楼主 | 2015-9-9 22:03 | 只看该作者
当然,也有完全可以成功写文件的。

使用特权

评论回复
7
戈卫东|  楼主 | 2015-12-25 19:41 | 只看该作者
这个问题没有解决。
看来不懂USB的用户没有简单有效的办法解决这个问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

136

主题

11708

帖子

75

粉丝