打印
[STM32F1]

STM32F105/STM32F205 HOST读写u盘偶尔出现枚举失败

[复制链接]
2406|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
WLS871250WLS|  楼主 | 2015-7-4 09:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
参考的是官网例程STM32_USB-Host-Device_Lib_V2.1.0->USB_Host_Examples->MSC
MCU:STM32F205VB
跟踪发现是USBH_Get_DevDesc(pdev , phost, 8) 函数一直返回USBH_BUSY,而且这种问题只是测试偶尔发生。
沙发
香水城| | 2015-7-23 17:36 | 只看该作者
是一个U盘上偶尔发生?还是多个U盘?

从协议栈的代码分析:Get_DevDesc,获取设备描述符就是请求开始一个控制传输,会进入USBH_CtlReq()。这里一来就把status = USBH_BUSY;然后发出控制命令。随后根据设备的回复,即根据phost->Control.state的值,跳进不同的分支,来给status附上新的值;
case CMD_WAIT:
  if (phost->Control.state == CTRL_COMPLETE )...
  else if (phost->Control.state == CTRL_ERROR)...
  else if (phost->Control.state == CTRL_STALLED)...

如果一直函数返回USBH_BUSY,很可能此时U盘没有任何返回,或者phost->Control.state是以上三个分支之外的值?需要调试才知道

使用特权

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

本版积分规则

3

主题

13

帖子

1

粉丝