打印

Bus Hound IN 问题

[复制链接]
3102|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
想问大家一个问题。

我的设备会不停地向主机(PC)发送数据。

我现在用Bus Hound来监控传来的数据, 发现有时候在一次批量输入传输中, 一次IN Token后设备竟然向PC传输了100多个字节的数据。

我觉得奇怪的是我所用的设备的端点最大的SIZE已经定义为64个字节,一个IN Token后只会向PC返回一个数据包,怎么可能一次会传输大于100个字节的数据呢?

我觉得数据的传输应该是:

IN + PID + DATA0 + CRC + EOP
IN + PID + DATA1 + CRC + EOP
IN + PID + DATA0 + CRC + EOP
IN + PID + DATA1 + CRC + EOP
。。。。。。。

DATA0和DATA1所用的端点最大长度是64个字节。

如果一次IN Token后接收100多个字节,

难道会有这样的情况出现:
IN + PID + DATA0 + DATA1+ CRC + EOP

谢谢大家。

相关帖子

沙发
whydo| | 2012-8-4 22:50 | 只看该作者
本帖最后由 whydo 于 2012-8-4 22:58 编辑

DATA0/1是交替的
不会出现IN + PID + DATA0 + DATA1+ CRC + EOP

端点64字节,一个IN令牌,可以返回多个包的,

使用特权

评论回复
板凳
coolJoe|  楼主 | 2012-8-6 11:17 | 只看该作者
谢谢回答。还想请问一下。

如果一个IN令牌可以返回多个包,那么也应该是DATA0与DATA1交替的。
具体的传输是不是这个样子的:
IN + PID + DATA0 + CRC + EOP
        PID + DATA1 + CRC + EOP
        PID + DATA0 + CRC + EOP
        .......

只有一个IN令牌,但是返回多个DATA0/1交替的数据包?

使用特权

评论回复
地板
insignal| | 2012-8-6 22:17 | 只看该作者
IN + PID + DATA0 + CRC + EOP
IN + PID + DATA1 + CRC + EOP
IN + PID + DATA0 + CRC + EOP
每一个IN Token只能发一个IN Packet

使用特权

评论回复
5
insignal| | 2012-8-6 22:18 | 只看该作者
“发现有时候在一次批量输入传输中, 一次IN Token后设备竟然向PC传输了100多个字节的数据。”
bushound是看不出来到底发了多少个IN Token的

要想查这个问题,最直接的方法就是用usb分析仪,如果没有,那就只能在固件中加入debug print,看到底来了多少个In Token

使用特权

评论回复
6
insignal| | 2012-8-6 22:27 | 只看该作者
好吧 我承认今天有点罗嗦
干脆给你一个usb分析仪的抓图 看这个就更能明白IN的过程

In_Token.JPG (170.77 KB )

In_Token.JPG

使用特权

评论回复
7
coolJoe|  楼主 | 2012-8-7 14:13 | 只看该作者
非常感谢回复。但是我用Bus Hound看到的是一个In Token后的输入批量传输后竟然传给了PC有200多个字节的数据。(请见附图)但是实际上端点应该只有64个字节。

请问你所说的“bushound是看不出来到底发了多少个IN Token的” 具体是指什么?我在Bus Hound中还是可以从Phase中看到IN Token的。

再次谢谢。

D:\Software\USB.png

使用特权

评论回复
8
insignal| | 2012-8-8 08:40 | 只看该作者
本帖最后由 insignal 于 2012-8-8 08:50 编辑

那个是IN的phase,不是对应链路上的IN Token
你看看usb 分析仪的截图就能明白了
bushound上一个IN Phase对应了1个或多个物理链路上的IN Token

In Token就是host向device发送的PID=IN 包

使用特权

评论回复
9
coolJoe|  楼主 | 2012-8-8 21:45 | 只看该作者
非常感谢!结贴给分!

使用特权

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

本版积分规则

4

主题

9

帖子

0

粉丝