Dear TI staff
I am working on the USB aspects of the EZDsp5535.
I based the USB firmware layer on CSL_USB.
I notice that when enumerating in High-Speed, sometimes (once every 10 or 20 connections) the first GetDeviceDescriptor request from the host (just after the SetAddress request) is not acked. The host transmits 3 GetDeviceDescriptor requests in a row. None are acked. Then the host resets the bus, and starts enumerating again. Most of the time the second attempt, after the USB reset, succeeds.
At first I suspected my code. However, it appears that the Connected-Audio-Framework software does the same thing. To demonstrate, simply rebuild the Connected-Audio-Framework demo, simply comment-out the call to USB_setFullSpeedMode() in csl_usb_iso_fullspeed_example.c, so the demo will enumerate in high-speed.
I know that it is not proper to have an audio-class 1.0 device enumerate in high-speed, but that is irrelevant here because:
- A Windows host will enumerate a high-speed Audio-Class 1.0 device normally (as if it was full-speed)
- The problem occurs at the first GetDeviceDescritor request, just after the initial SetAddress request. At that time the host does not yet know that the device is audio-1.0. All it knows is that it just addressed a new device on the bus, and is trying to read its device descriptor.
Thank you for your help
Regards
Bruno