OTG 接 HUB,端口设备枚举

[复制链接]
 楼主| kwell2009 发表于 2011-10-14 10:05 | 显示全部楼层 |阅读模式
请教各位:
现象:
     现在用105接HUB(GL850A),枚举设备。
     HUB 是可以正常枚举,也通过查询HUB端口状态,找到了在端口上的设备,并对HUB 的端口进行了复位以及清除标志位。
     然后调用 USBH_Init()对已定义好并分配空间的新的 USB_OTG_CORE_HANDLE 和 USBH_HOST 结构重新初始化,并与新的设备挂钩。
     但是对端口设备进行枚举则不成功,设置主机访问地址为0,并已设置对应的 端口速度(与HUB一致均为FULL SPEED),在对设备发数据要求获取设备描述符后,无产生主机通道中断,无数据返回。发出数据为
     0x80 0x06 0x00 0x01 0x00 0x00 0x08 0x00
     抓信号检查,确定数据正确。
环境:3.5.0的STM32函数库,2.0.0的OTG库
请教:在为 HUB 端口的设备初始化时调用 USBH_Init()中,除了没有对OTG端口进行RESET动作,其他的动作均与初始化HUB 时一样,结果为何会有不同。
谢谢!
 楼主| kwell2009 发表于 2011-10-14 15:15 | 显示全部楼层
晕,重新抓了次数据,对HUB的设备枚举根本没有信号~~~:(
其实是在用USBH_Init()对结构体初始化时出问题了,试过直接用HUB 的那一套结构体来枚举设备是正常的,返回数据也正常,继续除错。
请教做过的大侠,这个结构体的初始化需要注意虾米呢?
 楼主| kwell2009 发表于 2011-10-18 13:23 | 显示全部楼层
自问自答吧:
如硬件外接HUB,程序中需要对两个或以上的设备进行枚举的话,需要对新的设备重新定义一套完整的结构:USB_OTG_CORE_HANDLE,来保存此设备的信息,以及更改对应的 USBH_HOST 内容来进行新的设备的枚举,需修改的内容目前为止如下:
USB_Host.gState = HOST_DEV_ATTACHED;               
USB_Host.EnumState = ENUM_IDLE;
USB_Host.device_prop.address = 0;
USB_Host.RequestState = CMD_SEND;
USB_Host.class_cb = &UVC_cb;
然后根据自己设备的需求可以选择重写USBH_Process()即可。
putron09 发表于 2014-5-21 18:56 | 显示全部楼层
freeman9507 发表于 2014-6-22 17:05 | 显示全部楼层
哥们给个信息,咨询USB相关问题,我的qq:13188123,谢谢呀!!!
freeman9507 发表于 2014-6-27 00:07 | 显示全部楼层
求教,方便留个信息!
freeman9507 发表于 2014-6-27 00:08 | 显示全部楼层

求教,方便留个信息!我的邮箱是:13188123@qq.com
louisignal 发表于 2015-11-28 14:52 | 显示全部楼层
目前正在做STM32F105 USB HUB扩展,MARK一下。楼主能留个QQ或者邮箱就好了。
louisignal 发表于 2015-12-9 20:30 | 显示全部楼层
你好,楼主能给个联系方式吗?有关于STM32+USB Hub的问题请教!QQ或者 邮箱都可以的
eeprom3 发表于 2017-9-14 09:17 | 显示全部楼层
你好,能给个联系方式么?请教一下问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:堆码,调试,抓狂...

1

主题

51

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部