打印

请教,OTG中HOST模式向设备端点 0 发送数据的问题。

[复制链接]
2054|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kwell2009|  楼主 | 2011-10-19 13:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
请教:     现在要设置UVC类的摄像头,枚举已经成功,然后得向端点 0 发送数据。例如设置背光。但是老是出现问题,命令为:
0x21 0x01 0x00 0x01 0x00 0x03 0x02 0x00
     然后是数据为:
0x01 0x00
     命令发送是成功的,问题如下:
1.数据发送成功,返回 ACK,但是在等待状态返回时,STM32引发 Channel halted 中断。
2.数据发送失败,返回 STALL。
     周而复始。
     搜索 STM32 的官方 OTG库例子(2.0.0),均没有对端点 0 进行数据发送,请教是否有大虾做过。
     另外请教香主,我是直接用 HID 的例子修改的,用在我的USB摄像头上。也是跟库函数一样调用系统库函数 USBH_CtlReq() 来发起控制传输,怎么得到的结果是错误的呢?
谢谢!
沙发
kwell2009|  楼主 | 2011-10-20 15:41 | 只看该作者
用简易的逻辑分析仪抓了数据(USB 全速),一整天啊:Q,HUB 和摄像头的枚举过程均正常,但是在就在设置摄像头端点0时出现了问题:
在控制传输的前两个阶段(建立阶段,数据阶段)设备都有正常回复,但在状态阶段,主机发出要求设备返回的令牌包后,设备没有回复(正常情况下应该是回复 0 个数据的数据包和 握手包)。故主机程序识别为异常。
此设备在WINDOWS下可以正常工作,在其他平台下(CH374)亦可以正常枚举及工作,就是不知道这是什么情况。
请指教,再次谢谢了!

使用特权

评论回复
板凳
kwell2009|  楼主 | 2011-10-20 21:09 | 只看该作者
补图,当时的时序为:

使用特权

评论回复
地板
kwell2009|  楼主 | 2011-10-31 09:21 | 只看该作者
问题解决了,在设置端点0数据前,有个步骤是 SET_INTERFACE(),在这个步骤之后设置延时即可,我的是80ms,万恶的UVC手册怎么木有说,就此结贴吧。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

1

主题

51

帖子

2

粉丝