use_id
驱动中牛
驱动中牛
  • 注册日期2002-03-11
  • 最后登录2006-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:998回复:5

为什么不响应了?

楼主#
更多 发布于:2003-02-17 19:45
 当我收到 80 06 00 01 00 00 40 00 GET DESCR 后。
给FIFO发送数据, 然后置发送位标志和相关的操作。 可我发现我不然收到下一个请求的响应了。

说明, 在响应上面的请求时, 我只给了 12H 长字节。
我想问一下是不是我给少了它就不运行了?  还是出在其它问题(我没有置好响应)?


use_id
驱动中牛
驱动中牛
  • 注册日期2002-03-11
  • 最后登录2006-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-17 21:21
upup
dacongtou
驱动中牛
驱动中牛
  • 注册日期2002-11-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-18 11:49
你看看你发送的方法对不对,或者读一下“最后处理状态”寄存器,看是否发送成功。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-18 12:23
有几种情况:
1。可能是你的描述符有问题,我的是12 01 00 02 00 00 00 40 cc 04 49 1b 00 00 00 00 00 01 我的是2。0的,通过了,如果是1。1的,把第三和第四字节改为10 01
2。你的数据根本就没写到fifo里,你可以跟踪一下试试。
3。可能是你写数据到了fifo里,但是没有使数据生效,不满的包要手动生效,或者写一个寄存器让设备自动计数。
4。你的状态阶段没完成,在状态阶段,按协议规定应该发送一个空的数据包给主机(有的是通过写一个寄存器自动完成的),然后主机才会发送下一个SetAddress命令来。

以上是我觉得可能出现的情况,要注意的一点是发送上字节的描述符时要先发低字节,再发高字节。你可以检查一下子。
use_id
驱动中牛
驱动中牛
  • 注册日期2002-03-11
  • 最后登录2006-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-19 19:28
to: jinghuiren & dacongtou
   先谢谢两位的回复。

我得这个问题决解了, 可决解的有点不可思义。
我不知道是不是上位host对回复响应有一定的时间限制还是什么。
我把断点制到下一个请求的回应处(SetAddress),这样就可以了。

对这个我还不是很清楚, 我会去搞清楚的。 这是我第一次写usb方面的mcu, 也是第一次写mcu。

谢谢两位的支持。
 ;)
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-02-19 22:58
你早说呀,是有时间限制的,对于没有数据阶段的请求必须在50ms内完成,对于有数据阶段的请求必须在5s内完成。
游客

返回顶部