OpenEdv-开源电子网

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

哪位做过USB OTG作为host读取U盘的东西?stm32f207,读取设备描述符返回USBH_BUSY

[复制链接]

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-4-14
在线时间
1 小时
发表于 2014-6-27 16:35:10 | 显示全部楼层 |阅读模式
5金钱
RT,插上U盘后,可以检测到U盘插入,可以检测到是全速设备,但是在读取设备描述符的时候,就返回USBH_BUSY了,
然后,就没有然后了。。。

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

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

最佳答案

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

搞出来了,时钟问题,用RCC_Getclock函数串口输出系统时钟,发现都是不对的。  后来在官网下载了一个stm32f2xx专用的时钟配置工具,  配置好后直接生成了system_stm32f2xx.c然后替代原来的就可以正常枚举了。stm32f2xx.h中的外部时钟定义HSE_Value 也要改为实际用的晶振频率 可是插上我的8GU盘,枚举完成后直接进入 Unrecovered error state,还是想找固件的问题, 后来看到有人说兼容性问题,找了 ...
我可以一辈子都呆在家里不出来么?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-4-14
在线时间
1 小时
 楼主| 发表于 2014-6-27 16:35:11 | 显示全部楼层
搞出来了,时钟问题,用RCC_Getclock函数串口输出系统时钟,发现都是不对的。
 后来在官网下载了一个stm32f2xx专用的时钟配置工具,
 配置好后直接生成了system_stm32f2xx.c然后替代原来的就可以正常枚举了。stm32f2xx.h中的外部时钟定义HSE_Value 也要改为实际用的晶振频率

可是插上我的8GU盘,枚举完成后直接进入 Unrecovered error state,还是想找固件的问题,
后来看到有人说兼容性问题,找了个1G的U盘,插上去直接就可以读写文件了。。

这两天正在搞兼容性,还有官方的FATFS没有加长文件名支持,很多小写字母都变大写了,到时候用原子哥的 内存管理让他支持长文件名。
我可以一辈子都呆在家里不出来么?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-6-27 22:42:58 | 显示全部楼层
帮顶.....
回复

使用道具 举报

12

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2014-3-25
在线时间
9 小时
发表于 2014-7-9 14:42:13 | 显示全部楼层
楼主,我也遇到类似的问题了,想请教你是怎么解决的?怎么联系你啊
回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-4-14
在线时间
1 小时
 楼主| 发表于 2014-7-10 12:25:35 | 显示全部楼层
你可以加我QQ2313232916,我自己也是第一次做,不是高手,
但是有问题可以一起探讨,这两天比较忙,还没搞好文件复制的东西。
我可以一辈子都呆在家里不出来么?
回复

使用道具 举报

48

主题

537

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1367
金钱
1367
注册时间
2014-2-13
在线时间
169 小时
发表于 2014-10-30 10:34:49 | 显示全部楼层
楼主项目进展的怎么样了,小弟正看官方程序一头雾水,不知怎么搞下去了。。。
回复

使用道具 举报

16

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-10-11
在线时间
0 小时
发表于 2014-11-27 14:03:09 | 显示全部楼层
楼主,我也遇到相同的问题了,想请教system_stm32f2xx.c与原来有什么不同么?

我用的是107的,外接8M的晶振。就改了下stm32f10x.h中的外部时钟定义HSE_Value 也要改为实际用的晶振频率 
system_stm32f10x.c实在不知要改什么?官网例程放进去还是这问题
回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-4-14
在线时间
1 小时
 楼主| 发表于 2014-12-4 10:13:40 | 显示全部楼层
回复【6楼】solo:
---------------------------------
207上的已经搞定了,我把大概经验发一下,具体还要大家自己搞
我可以一辈子都呆在家里不出来么?
回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-4-14
在线时间
1 小时
 楼主| 发表于 2014-12-4 10:27:23 | 显示全部楼层
回复【7楼】枫飞:
---------------------------------
总结下STM32 USB固件库移植需要注意的地方:
1.需要修改stm32f4xx.c时钟配置,
   这个要看时钟树,搞清楚USB时钟哪里来的,把提供给USB的时钟配置好。
   比如我正在用的stm32f429,他的最高时钟是180Mhz,但是设为180Mhz之后,USB需要的48Mhz就分不出来了,
   所以必须设置为168MHz
   具体的时钟配置,官方有一些图形化工具,可以搜一下,或者仔细对照代码寄存器来修改。

2.需要修改USB.BSP(有的固件库中是hardwareconfig等等,其实意思都一样就是USB的底层初始化)
   这里配置好USB使用的GPIO时钟和复用功能,使能USB_FS等(我没做过USB_HS的)
   然后就是官方有个USB_TIMER,用来获得精确时钟,如果要求不高的话也可以用自己调试的精确的FORDEAY_us/ms等来代
   还要配置USB中断,以及把官方例子中的中断处理函数放进自己的stm32fxx_it.c文件中  
 

3.需要配置USB_CONF.H等头文件,主要配置使用FS,HS,  HOST,DEVICE,  以及一些端点大小(参照库例子来的)
   有的有电源检测等东西,还要配置这个(我没有也就不管了);

4.修改描述符,修改协议,我用msc类做一个NAND_FLASH的U盘,就把msc类的文件放进去,然后修改memory部分的驱动为操作读写自己的nand_flash就好了。

首先要搞好1.2.3这些,让USB设备可以被电脑正确识别,之后在搞4.  
其实很多问题只要搞过一次出来了,以后就很好搞了,第一次开发移植总会有各种各样问题,
搞好了之后,再去移植自然就知道哪里需要改,哪里要怎么改了。
我这里不可能吧每一步都写下来,因为工作比较忙,具体的事情还要大家一步一步来做,自己做的总是最有效的,我写的这些只是个大概的描述。

下面吧我自己的stm32f207上移植好HOST,可以读U盘,copy文件的keil工程传上来,当然很多都是参考原子哥的代码写的。
我可以一辈子都呆在家里不出来么?
回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-4-14
在线时间
1 小时
 楼主| 发表于 2014-12-4 10:31:59 | 显示全部楼层

具体硬件连接方式,大家看代码吧,也就那两个脚,

调试方式我是用串口调试的,大家看串口配置和usb_user中的代码吧。


这个代码可能有点乱,因为只是做调试用的,大家看看做参考吧。

USB_Host_Fatfs.zip

8.03 MB, 下载次数: 6168

我可以一辈子都呆在家里不出来么?
回复

使用道具 举报

14

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-12-6
在线时间
0 小时
发表于 2014-12-6 08:53:30 | 显示全部楼层
回复【3楼】杨帆:
---------------------------------
楼主~~   我现在也在学习USB,  我用的是405,利用官方例程改的,发现。。。似乎没有进行枚举呢, 怎么破  。。。。。。。。
画杯粪,为力量
回复

使用道具 举报

16

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-10-11
在线时间
0 小时
发表于 2014-12-8 15:21:40 | 显示全部楼层
回复【9楼】杨帆:
---------------------------------
恩,才看到,问题解决了,谢谢!

最近想实现两块stm32板子间的usb通信。一块103的,一块107的。不过如果103的不用fat格式的话,真不知道如何通过107的otg修改103板子。前辈你研究过么?有没啥好建议?
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-12-5
在线时间
0 小时
发表于 2015-5-12 17:20:28 | 显示全部楼层
楼主你好,我的也是在枚举的时候一直返回USBH_BUSY。我用RCC_GetClocksFreq()这个函数获取系统时钟,得到十分奇怪的时钟:SYSCLK:536984984Hz; HCLK:134245761Hz; CLK1:134218749Hz; CLK2:134218751Hz. 板子上测试简单的LED程序,输出的时钟:SYSCLK:168000000Hz; HCLK:168000000Hz; CLK1:84000000Hz; CLK2:84000000Hz. 想请教这是什么问题..?
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-12-5
在线时间
0 小时
发表于 2015-5-12 17:20:53 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥你好,我的也是在枚举的时候一直返回USBH_BUSY。我用RCC_GetClocksFreq()这个函数获取系统时钟,得到十分奇怪的时钟:SYSCLK:536984984Hz; HCLK:134245761Hz; CLK1:134218749Hz; CLK2:134218751Hz. 板子上测试简单的LED程序,输出的时钟:SYSCLK:168000000Hz; HCLK:168000000Hz; CLK1:84000000Hz; CLK2:84000000Hz. 想请教这是什么问题..?
回复

使用道具 举报

7

主题

35

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
369
金钱
369
注册时间
2014-4-3
在线时间
30 小时
发表于 2015-5-16 12:35:23 | 显示全部楼层
楼主,我也遇到和你类似的问题,但我的具体问题是:当你把U盘插到STM32F207ZGT6的开发板上,复位单片机,这样可以正常读写,但是当你把优盘拔出来再插进去的时候。USBH_Process(&USB_OTG_Core, &USB_Host);调用就一直是USBH_Status Status = USBH_BUSY;  了。不知道什么原因。。
回复

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-6-23
在线时间
13 小时
发表于 2015-7-9 11:23:44 | 显示全部楼层
回复【15楼】zwh751279833:
---------------------------------
你好
你的问题解决了吗
我正好跟你的问题一样,重新插上U盘再跑文件就卡死
回复

使用道具 举报

7

主题

35

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
369
金钱
369
注册时间
2014-4-3
在线时间
30 小时
发表于 2015-7-11 08:51:06 | 显示全部楼层
回复【16楼】yaoz113:
---------------------------------
请问你是用杜邦线来接U盘模块的吗?我怀疑我的是这个问题
回复

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-6-23
在线时间
13 小时
发表于 2015-7-13 09:01:23 | 显示全部楼层
回复【17楼】zwh751279833:
---------------------------------
你好
不是的我已经打板了,你的问题解决了吗?
我是用FATFS文件系统但是换了个型号
回复

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2015-1-24
在线时间
38 小时
发表于 2015-9-23 19:47:11 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
问下一楼原子哥:
1、STM32F103RCT6可以U盘读取么 如果不可以为什么它的外设有USB FS呢(我看的选型手册STM32F103RC)?
2、我看的选型手册上外设USB FS 和USB FS OTG 有什么不同?我只知道FS是低速 HS是告诉 OTG可以连接两个USB.
3、选型手册上外设USB FS芯片数量上写1 我知道有一个低速得USB接口 但USB FS数量上写 OTG是什么意思呢?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2015-9-25 22:24:13 | 显示全部楼层
回复【19楼】alanke:
---------------------------------
已经回复过你了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2066
金钱
2066
注册时间
2012-5-26
在线时间
291 小时
发表于 2016-1-22 23:08:31 | 显示全部楼层
杨帆 发表于 2014-7-10 12:25
你可以加我QQ2313232916,我自己也是第一次做,不是高手,
但是有问题可以一起探讨,这两天比较忙,还没搞 ...

LZ,请问你当时兼容性的问题是怎么解决的?
QQ加了你
活着才是王道!健康是一切的前提!
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2017-6-13
在线时间
0 小时
发表于 2017-6-13 08:47:48 | 显示全部楼层
本帖最后由 YGkang 于 2017-6-13 08:48 编辑

V2.2.0驱动有问题,尤其是USBH_CORE.C、USB_CORE.C、USB_HCD_INT.C需要按照V2.1.0修改即可我调试了好多天,后来才发现这里有问题,并不一定所有的芯片使用这个驱动都有问题,但是STM32F429BGTx使用这个驱动是有问题的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-2 12:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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