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

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上的设备。
antoniofay 回答时间:2020-4-8 21:14:05
请问有做出来么

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版