你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 USB HUB 求助

[复制链接]
louisignal 提问时间:2015-12-2 16:40 /
最近的项目中需要使用STM32F105通过USB HUB连接多个USB Key。
HUB芯片选用台湾汤铭科技的FE2.1
STM32F105已经成功枚举了HUB芯片,设置了地址、读出了设备描述字、配置描述字、接口描述字、端点描述字。
枚举过程如下:

case ENUM_IDLE:                                 // 初始化,读端点0的MPS
case ENUM_GET_FULL_DEV_DESC:      // 读完整的设备描述字
case ENUM_SET_ADDR:                        // 设置地址
case ENUM_GET_CFG_DESC:                //  读配置描述字前8字节
case ENUM_GET_FULL_CFG_DESC:       //  读全部配置描述字  
case ENUM_GET_MFC_STRING_DESC:  //  读字符串
case ENUM_GET_MFC_STRING_DESC:  //  读字符串
case ENUM_GET_SERIALNUM_STRING_DESC:    //   读字符串
case ENUM_SET_CONFIGURATION:       //  设置HUB配置------卡住
case ENUM_GET_HUB_DESC:                 //  读HUB描述字------卡住
case ENUM_DEV_CONFIGURED:             //  枚举结束

USB2.0标准上说HUB需要使用USB 标准配置命令Set Configuration配置以后才能正常工作,我配置如下:
       phost->Control.setup.b.bmRequestType = 0;
       phost->Control.setup.b.bRequest = USB_REQ_SET_CONFIGURATION;
       phost->Control.setup.b.wValue.w = 1;
       phost->Control.setup.b.wIndex.w = 0;
       phost->Control.setup.b.wLength.w = 0;  


HUB芯片给我的回复是STALL,意思是不支持此项配置!同样是USB 标准命令,为什么Set Address就可以,Set Configuration不可以。


我又试着读取HUB描述字,结果回来都是0!

FE2.1搞死我算了,枚举就卡在倒数第2、3项设置HUB配置、读HUB描述字。


插上USB KEY以后,读HUB的变化字,也是都是0,根本检测不出端口插上的USB设备。
收藏 评论7 发布时间:2015-12-2 16:40

举报

7个回答
mark0668 回答时间:2015-12-2 20:09:15
我也想弄个,但无从下手.对这个HUB 不了解如何工作的.
louisignal 回答时间:2015-12-2 21:22:54
自问自答吧:问题解决了
在USB2.0协议文档中,关于Set Address和Set configuration是这么说的:
关于地址设置:设为0,则设备处于Default state;设成非0地址,则设备处于Address state
>>Default state: If the address specified is non-zero, then the device shall enter the Address state;
otherwise, the device remains in the Default state (this is not an error condition).
>>Address state: If the address specified is zero, then the device shall enter the Default state;
otherwise, the device remains in the Address state but uses the newly-specified
address.
>>Configured state: Device behavior when this request is received while the device is in the Configured
state is not specified.

关于Set Configuration:对处于Default state下的设备Set Configuration是错误的。
>>Default state: Device behavior when this request is received while the device is in the Default state
is not specified.
>>Address state: If the specified configuration value is zero, then the device remains in the Address
state. If the specified configuration value matches the configuration value from a
configuration descriptor, then that configuration is selected and the device enters the
Configured state. Otherwise, the device responds with a Request Error.
>>Configured state: If the specified configuration value is zero, then the device enters the Address state.
If the specified configuration value matches the configuration value from a
configuration descriptor, then that configuration is selected and the device remains in
the Configured state. Otherwise, the device responds with a Request Error.

SO,只要设置一个非0的地址就什么都好了!
louisignal 回答时间:2015-12-2 21:26:04
本帖最后由 louisignal 于 2018-1-18 15:18 编辑

大家在研究STM USB主机 USB设备 CH340等遇到问题的时候请参阅USB协议2.0或询问厂商技术支持

le062 回答时间:2015-12-3 12:38:52
可以参考vsfusbh协议栈,里面有hub驱动
http://github.com/versaloon/vsf/ ... /usb/class/host/HUB
suole 回答时间:2016-1-8 00:08:53
le062 发表于 2015-12-3 12:38
可以参考vsfusbh协议栈,里面有hub驱动
http://github.com/versaloon/vsf/tree/master/vsf/stack/usb/clas ...

请问你有这个包的说明文档吗,里面有stm32f4的库,可是里面的文件有点乱,不知道怎么用
leesheep_300833 回答时间:2018-8-17 00:43:54
楼主,可以学习一下你怎么通过USB host枚举挂载在HUB上的设备吗?
我自己已经搞定,USB HOST枚举和控制HUB,但是不知道怎么通过HOST去枚举HUB上的设备。
Herr_Phy 回答时间:2020-4-8 21:14:05
请问有做出来么

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版