OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10381|回复: 8

STM32F407 USB host 做U盘读写,识别不了U盘

[复制链接]

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2018-7-18
在线时间
21 小时
发表于 2018-9-27 14:31:35 | 显示全部楼层 |阅读模式
20金钱
插上U盘后,可以检测到U盘插入,可以检测到是全速设备,但是在读取设备描述符的时候,就返回USBH_BUSY了,
然后,就没有然后了。。。

是根据官方的库里的例子改的。

仿真调试,因为库里面都是状态机,也不太好找问题,哪位大哥做过这方面东西,知道的话,给我指指路吧?


USBH_Status USBH_CtlReq     (USB_OTG_CORE_HANDLE *pdev,
                             USBH_HOST           *phost,
                             uint8_t             *buff,
                             uint16_t            length)
{
  USBH_Status status;
  status = USBH_BUSY;

  switch (phost->RequestState)
  {
  case CMD_SEND:
    /* Start a SETUP transfer */
    USBH_SubmitSetupRequest(phost, buff, length);
    phost->RequestState = CMD_WAIT;
    status = USBH_BUSY;
    break;

  case CMD_WAIT:
     if (phost->Control.state == CTRL_COMPLETE )
    {
      /* Commands successfully sent and Response Received  */      
      phost->RequestState = CMD_SEND;
      phost->Control.state =CTRL_IDLE;  
      status = USBH_OK;      
    }
    else if  (phost->Control.state == CTRL_ERROR)
    {
      /* Failure Mode */
      phost->RequestState = CMD_SEND;
      status = USBH_FAIL;
    }   
     else if  (phost->Control.state == CTRL_STALLED )
    {
      /* Commands successfully sent and Response Received  */      
      phost->RequestState = CMD_SEND;
      status = USBH_NOT_SUPPORTED;
    }
    break;

  default:
    break;
  }
  return status;
}


在这个函数里,返回的状态一直处于USBH_BUSY,能进入case CMD_SEND,但是phost->RequestState 得状态值不改变,一直是1,求高手指点啊,拜托啦

在开发板历程中是好用的,能够识别U盘 ,  加入了自己项目的工程,就有问题了




最佳答案

查看完整内容[请看2#楼]

找到问题了,链接U盘的线接触不好
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2018-7-18
在线时间
21 小时
 楼主| 发表于 2018-9-27 14:31:36 | 显示全部楼层

找到问题了,链接U盘的线接触不好
回复

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2018-7-18
在线时间
21 小时
 楼主| 发表于 2018-9-27 15:30:05 | 显示全部楼层
偶尔可以识别一次,但是多数是不识别的
回复

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2018-7-18
在线时间
21 小时
 楼主| 发表于 2018-9-27 16:30:40 | 显示全部楼层
找到问题了,链接U盘的线接触不好
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2015-11-13
在线时间
131 小时
发表于 2018-12-12 14:05:20 | 显示全部楼层
老铁我也卡在这里了  可是检查线也没问题啊
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2015-11-13
在线时间
131 小时
发表于 2018-12-12 14:08:56 | 显示全部楼层
程序进USBH_SubmitSetupRequest(phost, buff, length);里面就把这个状态赋值为7  phost->gState = HOST_CTRL_XFER;  返回USBH_Process(USB_OTG_CORE_HANDLE *pdev , USBH_HOST *phost)扫描就不进枚举函数了 case HOST_ENUMERATION:   
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-12-10
在线时间
3 小时
发表于 2019-5-7 14:06:01 | 显示全部楼层
直接把优盘拆了,从引脚飞线也一个尿性
回复

使用道具 举报

1

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2020-3-7
在线时间
25 小时
发表于 2022-1-23 14:39:33 | 显示全部楼层
我也碰到这个问题了,怎么解决啊楼主
回复

使用道具 举报

1

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2020-3-7
在线时间
25 小时
发表于 2022-1-23 14:40:39 | 显示全部楼层
不良苏 发表于 2018-12-12 14:08
程序进USBH_SubmitSetupRequest(phost, buff, length);里面就把这个状态赋值为7  phost->gState = HOST_CTR ...

我也是同样的问题,兄弟你解决了吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-6 10:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表