USBH_Get_DevDesc fails to return unless extended wait before reset
Hello All,
I am using the usbh_core module to enumerate mass storage devices as a host. I have had it work for plenty of USB 2.0 sticks (not for 3.0), but suddenly, a large batch of USB 2.0 sticks fail to work. After extending all of my delays, this seems to work more consistently, but I am still having issues, especially when inserting an extension cord.
I understand that this may be electrical, but if anyone has any good resources that outline exactly what sequence of events occur in the enumeration sequence, that would be very helpful. I have already started looking through the USB 2.0 specification, and I can see some of the critical timing requirements, but it doesn't then actually provide a complete example of exactly what needs to happen in order in terms of control requests to get from the default state to the configured state.
To me it seems like the first interrupt happens when DP goes high, then the BSP for the host waits 200ms. Then it pulls the DP line low for 100ms. Then brings it back up and waits 10ms, then it tries to communicate with the get device descriptor. Am I missing any part of this? Also, is there any issue with asking for the device descriptor repeatedly without performing a device reset in between?
Any suggestions are appreciated.
Thanks!
