Hello,
I have LPC2368 controller which supports USB 2.0 full speed device.
While enumeration, I noticed the below request sequence from Host to device:
1. Device Descriptor 2. Set Address 3. Device Descriptor 4. Device Configuration 5. String descriptor 6. String descriptor 7. Device Configuration 8. Device Qualifier 9. String descriptor 10. String descriptor 11. String descriptor
Since my device is 2.0 full speed device so I returned request error by setting status to STALL for Device Qualifier request.
But the problem I am facing is, that the device receives next request(i.e step 9 string descriptor) after a delay of 4-5 seconds.
That makes enumeration very slow and takes around 7 seconds to complete it.
Could anybody suggest me any solution to solve this.
Thanks. VAIGO
Thanks for your reply.
I've made many full-speed devices assigned to USB2.0, I've never seen WinXP SP2 delays the enumeration of these devices. It's most likely the firmware side problem.
==> We checkced with the USB analyzer, the stall command from device reaches host after 5 seconds. I believe this could be the main reason for the delay.
Are you using a USB ARM example from KEIL as the base code? OR did you make your code from scratch by yourself? In the first place, which MCU or USB peripheral are you using?
==> We are using LPC2368 controller and we got the client code from LPC.
Thanks VAIGO
"the stall command from device reaches host after 5 seconds."
In our device, bus analyzer shows that STALL is issued by the device at the IN transaction just after the SETUP which specifies Get_Descriptor( Device Qualifier ). The interval is just one frame (1 ms) - I observed it on UHCI controller.
If it takes so long, the device respond nothing to the IN transaction(s), and the host repeats SETUP again and again (up to three times).
Maybe the firmware doesn't set STALL to the engine correctly.
"we got the client code from LPC"
What do you mean LPC? LPCUSB by Bertrik?
Tsuneo