|
Message
From: a.zaretsky@z...<a.zaretsky@z...>
Date: Fri Nov 26 13:40:00 CET 2004
Subject: [usb] Enumeration...
----- Original Message ----- From: info@s...<info@s...> To: Date: Wed Nov 17 11:59:38 CET 2004 Subject: [usb] Enumeration...
> hello, > now i got the USB1.1 function core working with the SMSC GT3200 PHY > chip. (little changings in usb1_utmi_if.v and usb_pa.v, because the > tx- > ready signals have different length) > but windows dont accepts the enumeration :-( > it asks for 64Byte device-descriptor, but since this is only 18Byte > long, i > am sending these 18 bytes (the original usb1_ctrl.v does so) > after PC had recieved these 18 bytes it sends again an IN-Token, to > wich the fpga replies with Zero-length-packet. > a lot of miliseconds later the PC sets an USB-RESET and asks again > for > 64 byte device-descriptor... > this repeats 3 times.. then it stops... > what do i have to do? > sending these 18 bytes only in packets a 8 byte? > sending 64 bytes? wich bytes? > or could it be, that my device-descriptor is wrong? > 7'h00: dout <= #1 8'd18; // this descriptor length > 7'h01: dout <= #1 8'h01; // descriptor type > 7'h02: dout <= #1 8'h10; // USB version low byte > 7'h03: dout <= #1 8'h01; // USB version high byte > 7'h04: dout <= #1 8'hff; // device class > 7'h05: dout <= #1 8'hff; // device sub class > 7'h06: dout <= #1 8'hff; // device protocol > 7'h07: dout <= #1 8'd64; // max packet size > 7'h08: dout <= #1 8'h34; // vendor ID low byte > 7'h09: dout <= #1 8'h12; // vendor ID high byte > 7'h0a: dout <= #1 8'h78; // product ID low byte > 7'h0b: dout <= #1 8'h56; // product ID high byte > 7'h0c: dout <= #1 8'h10; // device rel. number low byte > 7'h0d: dout <= #1 8'h00; // device rel. number high byte > 7'h0e: dout <= #1 8'h00; // Manufacturer String Index > 7'h0f: dout <= #1 8'h00; // Product Descr. String Index > 7'h10: dout <= #1 8'h00; // S/N String Index > 7'h11: dout <= #1 8'h01; // Number of possible config. > thank you very much! > best regards > Suheel > >
I have got exactly the same problem. Do you send the 18 bytes device descriptor in chunks of 8 bytes packets? I realised that you also should transmit the zero len packet after each 8 byte packet. How do you send the last 2 bytes? Do you receive the reset command from the host after sending the 1rst 8 bytes? Do you receive the SET_ADDRESS request?
|
 |