阅读:1319回复:10
关于usb枚举的一个问题,请教大家
我用的是D12芯片,MCU是MSP430F147,按照周立功推荐的结构用汇编写的固件程序,插入USB电缆后,按说应该收到读取描述符的建立包,然后返回16字节的设备描述符,主机确认,然后主机设置地址。
但是我用BUS HOUND截取的数据中,好像只返回了8个字节,然后就超时了。 我对比别的USB设备枚举截取的数据,好像也只有8个,和书上说的先收16个,再收18个的说法是不是不符合,下面是截取的数据,请高手指教:) 9.0 CTL a3 00 00 00 - 02 00 04 00 GET STATUS 515ms 1.1.0 9.0 DI 03 01 00 00 .... 24us 1.2.0 9.0 CTL 23 03 04 00 - 02 00 00 00 SET FEATURE 15us 2.1.0 9.1 DI 04 . 85ms 3.1.0 9.0 CTL a3 00 00 00 - 02 00 04 00 GET STATUS 15us 4.1.0 9.0 DI 03 01 10 00 .... 16us 4.2.0 9.0 CTL 23 01 14 00 - 02 00 00 00 CLEAR FEATURE 6us 5.1.0 9.0 CTL 80 06 00 01 - 00 00 40 00 GET DESCRIPTOR 26ms 6.1.0 9.0 DI 12 01 00 01 - dc 00 00 10 ........ 5.0sc 6.2.0 9.0 CTL a3 00 00 00 - 02 00 04 00 GET STATUS 514ms 7.1.0 9.0 DI 03 01 00 00 .... 23us 7.2.0 9.0 CTL 23 03 04 00 - 02 00 00 00 SET FEATURE 16us 8.1.0 9.1 DI 04 . 85ms 9.1.0 9.0 CTL a3 00 00 00 - 02 00 04 00 GET STATUS 11us 10.1.0 9.0 DI 03 01 10 00 .... 12us 10.2.0 9.0 CTL 23 01 14 00 - 02 00 00 00 CLEAR FEATURE 6us 11.1.0 9.0 CTL 80 06 00 01 - 00 00 40 00 GET DESCRIPTOR 26ms 12.1.0 9.0 DI 12 01 00 01 - dc 00 00 10 ........ 3.3sc 12.2.0 9.0 CTL 23 01 01 00 - 02 00 00 00 CLEAR FEATURE 514ms 1.1.0 下面是一个安装了驱动的USB设备的枚举截取数据: 13.0 CTL a3 00 00 00 02 00 04 00 GET STATUS 36ms 1.1.0 13.0 DI 01 01 00 00 .... 24us 1.2.0 13.0 CTL 23 03 04 00 02 00 00 00 SET FEATURE 14us 2.1.0 13.1 DI 04 . 84ms 3.1.0 13.0 CTL a3 00 00 00 02 00 04 00 GET STATUS 14us 4.1.0 13.0 DI 03 01 10 00 .... 18us 4.2.0 13.0 CTL 23 01 14 00 02 00 00 00 CLEAR FEATURE 6us 5.1.0 13.0 CTL a3 00 00 00 02 00 04 00 GET STATUS 26ms 6.1.0 13.0 DI 03 01 00 00 .... 22us 6.2.0 13.0 CTL 80 06 00 01 00 00 40 00 GET DESCRIPTOR 113us 7.1.0 13.0 DI 12 01 00 01 dc 00 00 10 ........ 14ms 7.2.0 13.0 CTL a3 00 00 00 02 00 04 00 GET STATUS 24us 8.1.0 13.0 DI 03 01 00 00 .... 17us 8.2.0 13.0 CTL 23 03 04 00 02 00 00 00 SET FEATURE 11us 9.1.0 13.1 DI 04 . 59ms 10.1.0 13.0 CTL a3 00 00 00 02 00 04 00 GET STATUS 18us 11.1.0 13.0 DI 03 01 10 00 .... 17us 11.2.0 13.0 CTL 23 01 14 00 02 00 00 00 CLEAR FEATURE 6us 12.1.0 13.0 CTL 00 05 02 00 00 00 00 00 SET ADDRESS 26ms 13.1.0 13.0 CTL 80 06 00 01 00 00 12 00 GET DESCRIPTOR 12ms 14.1.0 13.0 DI 12 01 00 01 dc 00 00 10 ........ 4.5ms 14.2.0 13.0 CTL 80 06 00 02 00 00 09 00 GET DESCRIPTOR 12us 15.1.0 13.0 DI 09 02 2e 00 01 01 00 60 .......` 3.9ms 15.2.0 17.0 CTL 80 06 00 01 00 00 12 00 GET DESCRIPTOR 9.6ms 16.1.0 17.0 DI 12 01 00 01 dc 00 00 10 ........ 4.3ms 16.2.0 17.0 CTL 80 06 00 02 00 00 09 02 GET DESCRIPTOR 26us 17.1.0 17.0 DI 09 02 2e 00 01 01 00 60 .......` 6.9ms 17.2.0 17.0 CTL 00 09 01 00 00 00 00 00 SET CONFIG 27us 18.1.0 谢啦 |
|
最新喜欢:jxchen...
|
沙发#
发布于:2003-12-10 10:15
下面安装了驱动的USB设备,读取设备描述符和配置描述符,怎么也都只返回了8个字节呢??
|
|
|
板凳#
发布于:2003-12-10 11:11
你用的bushound还是试用版(抓取数据有限)的吧? 在这个论坛搜一下会发现好东东的。
|
|
地板#
发布于:2003-12-10 11:39
我用的是5。0啊,刚下的,我觉得确实有问题,因为到不了设置地址那一步。。。 :(
|
|
|
地下室#
发布于:2003-12-10 12:54
我用的是5。0啊,刚下的,我觉得确实有问题,因为到不了设置地址那一步。。。 :( 5.0只能抓8个byte,用3.3\\4.0。设置地址那步不一定能抓到。 |
|
5楼#
发布于:2003-12-10 13:51
我试了,4。01,结果一样,在收到八个字节后有
9.0 NSTS 20 01 00 c0 cancelled 5us 12.3.0 是不是等待超时,pc终止传输了?? |
|
|
6楼#
发布于:2003-12-10 14:37
注意这2步:
9.0 CTL 80 06 00 01 - 00 00 40 00 GET DESCRIPTOR 26ms 6.1.0 9.0 DI 12 01 00 01 - dc 00 00 10 ........ 5.0sc 6.2.0 9.0 CTL 80 06 00 01 - 00 00 40 00 GET DESCRIPTOR 26ms 12.1.0 9.0 DI 12 01 00 01 - dc 00 00 10 ........ 3.3sc 12.2.0 一次5秒,一次3.3秒,时间太长了。看看正常的: 13.0 CTL 80 06 00 01 00 00 40 00 GET DESCRIPTOR 113us 7.1.0 13.0 DI 12 01 00 01 dc 00 00 10 ........ 14ms 7.2.0 17.0 CTL 80 06 00 01 00 00 12 00 GET DESCRIPTOR 9.6ms 16.1.0 17.0 DI 12 01 00 01 dc 00 00 10 ........ 4.3ms 16.2.0 比你的快千倍哦。再看看长度,你的始终是0x40,好像host并没有接收到你的描述符大小。 |
|
7楼#
发布于:2003-12-10 15:44
clementzhao:
赫赫,我也觉得这儿有问题,你能把完整的截取数据贴给我么?你的好像也只截到8个字节呀,你用的是哪个版本的BUS HOUND?? |
|
|
8楼#
发布于:2003-12-10 16:25
我是引用你的数据!我的可以抓全部的,版本是3.0或4.0都行。
|
|
9楼#
发布于:2003-12-10 18:18
我现在也能接收到全部数据了,我的16个字节设备描述符发出去了,可是主机没有响应,直接cancel了,谁能告诉我到底怎么回事?? 9.0 CTL 80 06 00 01 - 00 00 40 00 GET DESCRIPTOR 122us 36.1.0 9.0 DI 12 01 00 01 - dc 00 00 10 ........ 5.0sc 36.2.0 71 04 66 06 - 00 01 00 00 q.f..... 36.2.8 9.0 NSTS 20 01 00 c0 cancelled 6us 36.3.0 9.0 CTL a3 00 00 00 - 02 00 04 00 GET STATUS 515ms 37.1.0 9.0 DI 03 01 00 00 .... 23us 37.2.0 |
|
|
10楼#
发布于:2003-12-11 08:43
看来你确实发出去了,但是时间太长了,改一下程序。5sec太不可思议了,做到1sec以下看看。
|
|