大家好,我初次接触USB,用的是ATmel公司的AT90USB162单片机作为USB设备,希望将设备配置成鼠标,这样可以避免驱动的编写,但是在枚举过程出现问题,以下是用Bus Hound抓取到的设备插入USB接口后的枚举过程:
Bus Hound 6.01 capture on Windows XP Service Pack 3 (x86). Complements of www.perisoft.net
Device - Device ID (followed by the endpoint for USB devices)
(18) JTAGICE mkII
(19) USB 人体学输入设备
(20) USB 人体学输入设备
(21) HID-compliant mouse
Phase - Phase Type
CTL USB control transfer
IN Data in transfer
USTS USB status
Data - Hex dump of the data transferred
Descr - Description of the phase
Cmd... - Position in the captured data
Device Phase Data Description Cmd.Phase.Ofs(rep)
------ ----- -------------------------------------------------- ---------------- ------------------
19.0 CTL 80 06 00 03 00 00 ff 00 GET DESCRIPTOR 1.1.0(2)
19.0 IN 04 03 09 04 .... 1.2.0
19.0 CTL 80 06 02 03 09 04 ff 00 GET DESCRIPTOR 2.1.0(2)
19.0 IN 16 03 69 00 53 00 43 00 4f 00 50 00 45 00 20 00 ..i.S.C.O.P.E. . 2.2.0
55 00 53 00 42 00 U.S.B. 2.2.16
19.0 CTL 80 06 00 01 00 00 12 00 GET DESCRIPTOR 5.1.0
19.0 IN 12 01 00 02 00 00 00 40 eb 03 13 20 00 01 01 02 .......@... .... 5.2.0
03 01 .. 5.2.16
19.0 CTL 80 06 00 02 00 00 09 00 GET DESCRIPTOR 6.1.0
19.0 IN 09 02 22 00 01 01 00 80 64 ..".....d 6.2.0
19.0 CTL 80 06 00 02 00 00 22 00 GET DESCRIPTOR 7.1.0
19.0 IN 09 02 22 00 01 01 00 80 64 09 04 00 00 01 03 00 ..".....d....... 7.2.0
02 00 09 21 11 01 00 01 22 34 00 07 05 81 03 08 ...!...."4...... 7.2.16
00 02 .. 7.2.32
19.0 CTL 00 09 01 00 00 00 00 00 SET CONFIG 8.1.0
19.0 CTL 21 0a 00 00 00 00 00 00 SET IDLE 9.1.0
19.0 CTL 81 06 00 22 00 00 74 00 GET DESCRIPTOR 10.1.0(3)
19.0 USTS c0000004 stall pid 10.2.0
我又特意用一个USB鼠标作为对比,以下是鼠标的枚举数据:
Bus Hound 6.01 capture on Windows XP Service Pack 3 (x86). Complements of www.perisoft.net
Device - Device ID (followed by the endpoint for USB devices)
(18) JTAGICE mkII
(19) USB 人体学输入设备
(20) USB 人体学输入设备
(21) HID-compliant mouse
Phase - Phase Type
CTL USB control transfer
IN Data in transfer
USTS USB status
Data - Hex dump of the data transferred
Descr - Description of the phase
Cmd... - Position in the captured data
Device Phase Data Description Cmd.Phase.Ofs(rep)
------ ----- -------------------------------------------------- ---------------- ------------------
20.0 CTL 80 06 00 03 00 00 ff 00 GET DESCRIPTOR 1.1.0(2)
20.0 IN 04 03 09 04 .... 1.2.0
20.0 CTL 80 06 02 03 09 04 ff 00 GET DESCRIPTOR 2.1.0(2)
20.0 IN 24 03 55 00 53 00 42 00 20 00 4f 00 50 00 54 00 $.U.S.B. .O.P.T. 2.2.0
49 00 43 00 41 00 4c 00 20 00 4d 00 4f 00 55 00 I.C.A.L. .M.O.U. 2.2.16
53 00 45 00 S.E. 2.2.32
20.0 CTL 80 06 00 01 00 00 12 00 GET DESCRIPTOR 5.1.0
20.0 IN 12 01 10 01 00 00 00 08 3a 09 10 25 00 01 01 02 ........:..%.... 5.2.0
00 01 .. 5.2.16
20.0 CTL 80 06 00 02 00 00 09 00 GET DESCRIPTOR 6.1.0
20.0 IN 09 02 22 00 01 01 04 a0 32 ..".....2 6.2.0
20.0 CTL 80 06 00 02 00 00 22 00 GET DESCRIPTOR 7.1.0
20.0 IN 09 02 22 00 01 01 04 a0 32 09 04 00 00 01 03 01 ..".....2....... 7.2.0
02 00 09 21 11 01 00 01 22 3e 00 07 05 81 03 04 ...!....">...... 7.2.16
00 0a .. 7.2.32
20.0 CTL 00 09 01 00 00 00 00 00 SET CONFIG 8.1.0
20.0 CTL 21 0a 00 00 00 00 00 00 SET IDLE 9.1.0
20.0 USTS c0000004 stall pid 9.2.0
20.0 CTL 81 06 00 22 00 00 7e 00 GET DESCRIPTOR 10.1.0
20.0 IN 05 01 09 02 a1 01 05 09 19 01 29 03 15 00 25 01 ..........)...%. 10.2.0
95 03 75 01 81 02 95 01 75 05 81 03 05 01 09 01 ..u.....u....... 10.2.16
a1 00 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 ...0.1..%.u..... 10.2.32
c0 09 38 15 81 25 7f 75 08 95 01 81 06 c0 ..8..%.u...... 10.2.48
20.0 CTL 80 06 00 01 00 00 12 00 GET DESCRIPTOR 11.1.0
20.0 IN 12 01 10 01 00 00 00 08 3a 09 10 25 00 01 01 02 ........:..%.... 11.2.0
00 01 .. 11.2.16
20.0 CTL 80 06 00 02 00 00 09 00 GET DESCRIPTOR 12.1.0
20.0 IN 09 02 22 00 01 01 04 a0 32 ..".....2 12.2.0
20.0 CTL 80 06 00 02 00 00 22 00 GET DESCRIPTOR 13.1.0
20.0 IN 09 02 22 00 01 01 04 a0 32 09 04 00 00 01 03 01 ..".....2....... 13.2.0
02 00 09 21 11 01 00 01 22 3e 00 07 05 81 03 04 ...!....">...... 13.2.16
00 0a .. 13.2.32
20.0 CTL 00 09 01 00 00 00 00 00 SET CONFIG 14.1.0
20.0 CTL 21 0a 00 00 00 00 00 00 SET IDLE 15.1.0
20.0 USTS c0000004 stall pid 15.2.0
20.0 CTL 81 06 00 22 00 00 7e 00 GET DESCRIPTOR 16.1.0
20.0 IN 05 01 09 02 a1 01 05 09 19 01 29 03 15 00 25 01 ..........)...%. 16.2.0
95 03 75 01 81 02 95 01 75 05 81 03 05 01 09 01 ..u.....u....... 16.2.16
a1 00 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 ...0.1..%.u..... 16.2.32
c0 09 38 15 81 25 7f 75 08 95 01 81 06 c0 ..8..%.u...... 16.2.48
20.1 IN 00 f1 01 00 .... 17.1.0
我比较了两者的数据,发现自己的设备在进行到USTS c0000004 stall pid 这个步骤就停止了,很奇怪不知道怎么回事?也不清楚USTS c0000004 stall pid是什么意思?请哪位高手指点一下,告诉我是哪里的问题?应该如何修改我的固件程序?谢谢了! |