OpenEdv-开源电子网

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

STM32F107 USB HOST U盘

[复制链接]

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2067
金钱
2067
注册时间
2012-5-26
在线时间
292 小时
发表于 2016-1-8 18:43:04 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 lison0103 于 2016-1-8 19:48 编辑

使用stm32F107主控做usb host连接U盘
参考了原子F407的例子,外接8M的晶振,改了stm32f10x.h中的外部时钟定义HSE_Value 为实际用的晶振频率
用RCC_GetClocksFreq()这个函数获取系统时钟,SYSCLK:23040000Hz; HCLK:23040000Hz; PCLK1:11520000Hz; PCLK2:23040000Hz ADCCLK:11520000Hz

现在插U盘,状态机可以检测到插入和断开,但是枚举不成功。
枚举函数进入第一步USBH_Get_DevDesc(pdev , phost, 8) 就失败了,返回状态USBH_BUSY
然后USBH_Process函数就一直在HOST_CTRL_XFER状态。
不知道有没有人遇到过,或者有什么方法思路。谢谢!





usb host部分电路

usb host部分电路

最佳答案

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

可以试试st最新的库, STM32_USB-Host-Device_Lib_V2.2.0
活着才是王道!健康是一切的前提!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-1-8 18:43:05 | 显示全部楼层
可以试试st最新的库,
STM32_USB-Host-Device_Lib_V2.2.0
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-1-10 23:46:40 | 显示全部楼层
帮顶
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2067
金钱
2067
注册时间
2012-5-26
在线时间
292 小时
 楼主| 发表于 2016-1-22 11:51:38 | 显示全部楼层
本帖最后由 lison0103 于 2016-1-22 11:57 编辑

修改时钟后,U盘可以枚举了,但是还有问题:
1、插入一个8GU盘,一直进入USBH_Process-->HOST_CLASS-->USBH_MSC_BOT_USB_TRANSFERS,没有进入USBH_MSC_DEFAULT_APPLI_STATE
2、插入一个4GU盘,连插入都检测不到
3、用自己做的一个USB模拟U盘的设备连接,可以进入USBH_MSC_DEFAULT_APPLI_STATE,但是设备那边一会就识别没连接上,断开了
4、插入另外一个4GU盘,可以正常读写
是兼容性问题还是什么?
有人遇到吗?
活着才是王道!健康是一切的前提!
回复

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-10-6
在线时间
9 小时
发表于 2016-1-24 16:58:34 | 显示全部楼层
楼主能把程序上传一下,看一下?
回复

使用道具 举报

46

主题

101

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
434
金钱
434
注册时间
2015-2-24
在线时间
5 小时
发表于 2016-2-1 23:20:51 | 显示全部楼层
我的也是 只能识别插入 拔插 识别不了具体设备  
我的电路没有1.5k下拉 不知道是不是这个的原因
图像处理、物联网、fpga、stm32研究 我的店铺:ccjt.taobao.com
回复

使用道具 举报

46

主题

101

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
434
金钱
434
注册时间
2015-2-24
在线时间
5 小时
发表于 2016-2-1 23:21:22 | 显示全部楼层
为何要用8M晶振,我直接是原装的25M晶振
图像处理、物联网、fpga、stm32研究 我的店铺:ccjt.taobao.com
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2067
金钱
2067
注册时间
2012-5-26
在线时间
292 小时
 楼主| 发表于 2016-2-1 23:29:22 | 显示全部楼层
shenyae86 发表于 2016-2-1 23:21
为何要用8M晶振,我直接是原装的25M晶振

25M好呀,官方的代码直接可以用
硬件不是我设计的
活着才是王道!健康是一切的前提!
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2067
金钱
2067
注册时间
2012-5-26
在线时间
292 小时
 楼主| 发表于 2016-2-1 23:29:48 | 显示全部楼层
shenyae86 发表于 2016-2-1 23:20
我的也是 只能识别插入 拔插 识别不了具体设备  
我的电路没有1.5k下拉 不知道是不是这个的原因

我的只试过一个U盘可以用
活着才是王道!健康是一切的前提!
回复

使用道具 举报

46

主题

101

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
434
金钱
434
注册时间
2015-2-24
在线时间
5 小时
发表于 2016-2-2 11:03:10 | 显示全部楼层
其他U盘能识别么 进入到了哪个环节
图像处理、物联网、fpga、stm32研究 我的店铺:ccjt.taobao.com
回复

使用道具 举报

46

主题

101

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
434
金钱
434
注册时间
2015-2-24
在线时间
5 小时
发表于 2016-2-2 11:03:36 | 显示全部楼层
我的现在只能识别有无  不能读到id  不知道还有哪里可能有问题
图像处理、物联网、fpga、stm32研究 我的店铺:ccjt.taobao.com
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2067
金钱
2067
注册时间
2012-5-26
在线时间
292 小时
 楼主| 发表于 2016-2-18 09:51:19 | 显示全部楼层
今天又试了另外一个U盘,也是4G的,也可以正常识别读写
活着才是王道!健康是一切的前提!
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2067
金钱
2067
注册时间
2012-5-26
在线时间
292 小时
 楼主| 发表于 2016-2-18 21:11:53 | 显示全部楼层
正点原子 发表于 2016-2-18 20:09
可以试试st最新的库,
STM32_USB-Host-Device_Lib_V2.2.0

好的,谢谢原子哥,我试试
活着才是王道!健康是一切的前提!
回复

使用道具 举报

10

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
319
金钱
319
注册时间
2017-1-20
在线时间
51 小时
发表于 2017-2-10 14:49:18 | 显示全部楼层
请问最后解决了么?
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2067
金钱
2067
注册时间
2012-5-26
在线时间
292 小时
 楼主| 发表于 2017-2-10 19:49:23 | 显示全部楼层
tt朝花夕拾 发表于 2017-2-10 14:49
请问最后解决了么?

用最新的库文件
活着才是王道!健康是一切的前提!
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-4-17
在线时间
7 小时
发表于 2018-4-18 23:44:38 | 显示全部楼层
LZ,我最近也遇到着类似问题,我是使用F207的USB HOST的CDC类与外设的导航模块的USB做设备进行通信,结果初始化时进入枚举后返回BUSY,USBH_Process函数就一直在HOST_CTRL_XFER状态。系统我是外接8M的晶振,部时钟定义HSE_Value 也修改为8M了。请教楼主最后这个问题是如何解决的?修改时钟可以枚举成功是指换外部晶振吗?谢谢
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2067
金钱
2067
注册时间
2012-5-26
在线时间
292 小时
 楼主| 发表于 2018-4-19 17:42:21 | 显示全部楼层
哈哈,这个老帖子也被翻出来了。

修改的是系统时钟,F107代码默认使用的是25M的晶振配置,实际使用了8M,需要修改相应的时钟配置。

修改后,可以通过RCC_GetClocksFreq()函数,确认系统时钟是否倍频到了72M。
活着才是王道!健康是一切的前提!
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-4-17
在线时间
7 小时
发表于 2018-4-26 22:21:25 | 显示全部楼层
多谢楼主提醒,确实时钟设置有问题,外部8M时钟输入后经过默认的倍频分频转出来的系统时钟也有38.4M,但USB工作的时钟必须为48M。修改分频参数后就可以了。
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2019-5-22
在线时间
47 小时
发表于 2019-6-17 10:59:15 | 显示全部楼层
楼主能否分享下,谢谢。我现在用的stm32f105,工程要求有pc时,usart1或者usb跟pc通信;没pc时,插U盘,AD采集的数据存到U盘
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 18:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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