打印

求助:STM32F105 HOST 例程 能识别u盘,不能读写u盘

[复制链接]
16322|44
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
最近做了一款STM32F150,运用了他自带的OTG ,HOST 功能,下载了官方例程,可是,发现一个问题,插上u盘,有中断,表示u盘已经连接,拔下u盘,也有中断,表示u盘已经断开。可是,在枚举,读扇区的时候,程序卡在以下部分:
  if(HCD_IsDeviceConnected(&USB_OTG_Core))
  {  

    do
    {
      status = USBH_MSC_Read10(&USB_OTG_Core, buff,sector,512);
      USBH_MSC_HandleBOTXfer(&USB_OTG_Core ,&USB_Host);

      if(!HCD_IsDeviceConnected(&USB_OTG_Core))
      {
        return RES_ERROR;
      }      
    }
    while(status == USBH_MSC_BUSY );


一直是USBH_MSC_BUSY这个状态,不知哪位高手能帮忙分析一下。另,晶振我根据例程,也是用的25MHz,VBUS也给供上了5V的电,DP,DW,分别接下拉电阻,ID接地。谢谢
  }
沙发
liulwn| | 2012-7-26 23:39 | 只看该作者
我也遇到相似的问题,等待高手回复。

使用特权

评论回复
板凳
gaohuating|  楼主 | 2012-7-27 11:29 | 只看该作者
还有一个问题,为什么这个地方,我一个类型也没选,怎么也不报错呢?
/* Uncomment the line below according to the target STM32 device used in your
   application
  */

#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL)
  /* #define STM32F10X_LD */     /*!< STM32F10X_LD: STM32 Low density devices */
  /* #define STM32F10X_LD_VL */  /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */  
  /* #define STM32F10X_MD */     /*!< STM32F10X_MD: STM32 Medium density devices */
  /* #define STM32F10X_MD_VL */  /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */  
  /* #define STM32F10X_HD */     /*!< STM32F10X_HD: STM32 High density devices */
  /* #define STM32F10X_HD_VL */  /*!< STM32F10X_HD_VL: STM32 High density value line devices */  
  /* #define STM32F10X_XL */     /*!< STM32F10X_XL: STM32 XL-density devices */
  //#define STM32F10X_CL     /*!< STM32F10X_CL: STM32 Connectivity line devices */

另,例程中有没有需要特别修改的地方,或者,哪位给个USE_STM3210C_EVAL的原理图,多谢了。

使用特权

评论回复
地板
IJK| | 2012-7-27 12:21 | 只看该作者
“DP,DW,分别接下拉电阻”
不对。DP,DM 这2条USB信号线,对于全速USB应该在DP接上拉(上拉到3.3V)。

STM3210C_EVAL的原理图,可以在STM32的官方网站找到。

使用特权

评论回复
5
gaohuating|  楼主 | 2012-7-27 21:56 | 只看该作者
多谢楼上的指点,等上班了,我试一下。

使用特权

评论回复
6
liulwn| | 2012-7-28 16:24 | 只看该作者
STM32F105和107内部USB带上拉电阻的,貌似不用外接。

使用特权

评论回复
7
gaohuating|  楼主 | 2012-7-30 10:06 | 只看该作者
不行啊,上拉下拉都不用,和在DP接15K上拉,这两种情况都不行。还是停在while(status == USBH_MSC_BUSY );

使用特权

评论回复
8
香水城| | 2012-7-30 10:32 | 只看该作者
1, 对于STM32F105,需要define STM32F10X_CL, 官方代码将这个define放在项目配置里,而不是文件中。


2, 对于代码循环在USBH_MSC_BUSY中,常见的原因是没有选对OTG内核,STM32F105只有OTG_FS内核,需要define USE_USB_OTG_FS,官方代码的这个define也是放在项目配置里,而不是代码里。

看下你项目的配置是否都正确

使用特权

评论回复
9
gaohuating|  楼主 | 2012-7-30 11:22 | 只看该作者
请看这样配置可以吗?楼上老师说的两个都有了,同时也配置了EVAL,是不是只需要配置老师说的这两个?多谢

QQ截图20120730112029.png (30.69 KB )

QQ截图20120730112029.png

使用特权

评论回复
10
香水城| | 2012-7-30 11:28 | 只看该作者
如果你的代码已经执行到了 USBH_MSC_Read10,说明枚举已经通过了,主机已经在读U盘的内容了。这说明硬件是没有问题的

另外,你贴的代码看上去不像是最新版本的,最新的版本是V2.1.0

使用特权

评论回复
11
gaohuating|  楼主 | 2012-7-30 13:09 | 只看该作者
嗯,我的确实不是最新的,我的是V2.0.0.最新的官网上没找到啊?

使用特权

评论回复
12
香水城| | 2012-7-30 13:32 | 只看该作者
怎么可能没有

www.st.com/mcu,选择STM32F1系列,Resources页面,选择firmware,找USB

使用特权

评论回复
13
gaohuating|  楼主 | 2012-7-30 13:34 | 只看该作者
香水城老师,你太帅了,多谢你的指点。确实硬件没有问题,是代码下载的版本有问题,我又下载了一个,这回问题解决了,多谢多谢。

使用特权

评论回复
14
gaohuating|  楼主 | 2012-7-30 13:37 | 只看该作者
对了,补充一点,DP DM 两根线上,什么上拉下拉也没接。

使用特权

评论回复
15
txcy| | 2012-7-30 15:39 | 只看该作者
香水城老师,你太帅了,多谢你的指点。确实硬件没有问题,是代码下载的版本有问题,我又下载了一个,这回问题解决了,多谢多谢。
gaohuating 发表于 2012-7-30 13:34

香版主又多了一个粉丝:lol

使用特权

评论回复
16
yybj| | 2012-7-30 15:52 | 只看该作者
如果你的代码已经执行到了 USBH_MSC_Read10,说明枚举已经通过了,主机已经在读U盘的内容了。这说明硬件是没有问题的

另外,你贴的代码看上去不像是最新版本的,最新的版本是V2.1.0 ...
香水城 发表于 2012-7-30 11:28

香主分析问题真是一针见血:lol

使用特权

评论回复
17
liulwn| | 2012-8-1 00:33 | 只看该作者
我的已经读U盘成功,:victory:,说几点重要的:要用25M的外部晶振,不然要修改时钟。USB口的电源脚直接接5V电源即可。不用接上下拉电阻。读U盘的列程STM网站上有下载。具体接线图STM32F105和107文档都有接线图。文档的USB5V供电还有个接口芯片可以去掉,直接接5V就行。

使用特权

评论回复
18
atgjlc| | 2012-12-5 11:59 | 只看该作者
liulwn 发表于 2012-8-1 00:33
我的已经读U盘成功,,说几点重要的:要用25M的外部晶振,不然要修改时钟。USB口的电源脚直接接5V ...

我想请问下你读写U盘的速度如何,我也是用的例程,写U盘的速度居然是1M用了两分钟,

使用特权

评论回复
19
Luca871250| | 2012-12-10 10:43 | 只看该作者
香水城 发表于 2012-7-30 13:32
怎么可能没有

www.st.com/mcu,选择STM32F1系列,Resources页面,选择firmware,找USB ...

能不能告诉我你的QQ号,有个关于USB host读写U盘出错的问题

使用特权

评论回复
20
Luca871250| | 2012-12-10 11:58 | 只看该作者
Luca871250 发表于 2012-12-10 10:43
能不能告诉我你的QQ号,有个关于USB host读写U盘出错的问题

我测试时发现有个爱国者U盘在写文件时,写到中途会失败。跟踪发现“数据PID错误”,导致通道中止;不知道你是否遇到过?

使用特权

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

本版积分规则

2

主题

268

帖子

2

粉丝