关于利用MAX3420E在PC上扩展USB口遇到的问题,急急如律令!!!
这两周利用公司的微控制器操作MAX3420E枚举成PC上的设备,遇到问题,利用BUS HOUND软件抓到调试信息如下:
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)
(29) USB 人体学输入设备
(31) USB 人体学输入设备
(33) Unknown Device
(34) USB 人体学输入设备
(35) HID-compliant mouse
Address - FireWire async address or channel number
Length - Total transfer length
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
Delta - Elapsed time from the previous phase to the current phase
Cmd... - Position in the captured data
Driver - Driver that submitted the command
usbhub : Default Hub Driver for USB 5.1.2600.5512 (xpsp.080413-2108)
hidusb : USB Miniport Driver for Input Devices 5.1.2600.5512 (xpsp.080413-2108)
Cmd.Phase
Device Address Length Phase Data Description Delta .Ofs(rep) Driver
------ ------- ----- ----- ------------------------ -------------- ----- --------- ------
31.0 CTL 80 06 00 03 00 00 ff 00 GET DESCRIPTOR 29mn 1.1.0(2) usbhub
31.0 4 IN 04 03 09 04 .... 4.6ms 1.2.0
31.0 CTL 80 06 02 03 09 04 ff 00 GET DESCRIPTOR 18us 2.1.0(2) usbhub
31.0 24 IN 18 03 4d 00 41 00 58 00 ..M.A.X. 4.9ms 2.2.0
33 00 34 00 32 00 30 00 3.4.2.0. 2.2.8
45 00 20 00 45 00 6e 00 E. .E.n. 2.2.16
31.0 CTL 80 06 00 01 00 00 12 00 GET DESCRIPTOR 16ms 5.1.0 hidusb
31.0 18 IN 12 01 10 01 00 00 00 40 .......@ 3.3ms 5.2.0
6a 0b 46 53 34 12 01 02 j.FS4... 5.2.8
03 01 .. 5.2.16
31.0 CTL 80 06 00 02 00 00 09 00 GET DESCRIPTOR 16us 6.1.0 hidusb
31.0 9 IN 09 02 22 00 01 01 00 80 .."..... 3.9ms 6.2.0
32 2 6.2.8
31.0 CTL 80 06 00 02 00 00 22 00 GET DESCRIPTOR 16us 7.1.0 hidusb
31.0 34 IN 09 02 22 00 01 01 00 80 .."..... 7.9ms 7.2.0
32 09 04 00 00 01 03 00 2....... 7.2.8
00 00 09 21 10 01 00 01 ...!.... 7.2.16
22 1d 00 07 05 83 03 40 "......@ 7.2.24
00 0a .. 7.2.32
31.0 CTL 00 09 01 00 00 00 00 00 SET CONFIG 17us 8.1.0 hidusb
31.0 CTL 21 0a 00 00 00 00 00 00 SET IDLE 19ms 9.1.0 hidusb
31.0 USTS c0000004 stall pid 3.0ms 9.2.0
31.0 CTL 81 06 00 22 00 00 5d 00 GET DESCRIPTOR 19us 10.1.0(3) hidusb
31.0 USTS c0000005 no response 8.9ms
由上面的信息可以看到,枚举到了最后也就是获取报告描述符这块就进行不下去了。直接报“no response”的错!!
枚举十次只能成功一两次,七八次都是这样,超级不稳定。按理说,我前面在响应主机获取设备,配置等描述符的时候都成功了,为什么这次发送29个字节就不稳定不响应了呢???我通过点灯调试看到设备这边确实发出了报告描述符啊!!求大侠指点啊!
[解决办法]
你发出report descriptor是多久呢 host端等待有时间限制的
[解决办法]
你的这个设备用得是什么系统?是把设备插到PC机上,枚举不出来吗?
[解决办法]
其实是微控制器通过MAX3420E在PC上扩展USB口。MAX3420E提供了D+,D-个引脚,因此可以拿一根USB线连接,既给MAX3420E和微控制器供电,又连接MAX3420E的D+,D-个引脚。微控制器与MAX3420E之间通过SPI通信。可以枚举出来,但是不稳定。不稳定时通过USB HOUND看到的调试信息如帖。
[解决办法]
看你的时钟,如果真如你所言,,肯定没有问题
工作电流不稳定,漂移严重
导致偶尔能枚举成功,,多数情况下枚举不OK了。。。。
还有就是D+, 还是D- 那边有电阻注意一下,好像要13K,还是3K的
记不清了
[解决办法]
要枚举成hid设备?在回应hid报告描述时为什么pDdata = (u8 *)RepD;强制转化下,前面设备和配置为什么没呢?