My USB host is k20d72 and MQX3.8 based board while my USB device is powered by k20d50 and MQX4.1. The communication over USB is HID class based. The enumeration is done by soft-attach via applying power to Vbus each time when the communication is needed.
Usually this way of mechanism is working fine except for enumeration failure with rate like one out of a thousand enumerations. Although it can be worked around by a re-try by powering cycling Vbus but I want to dig into it a bit.
With help by a data logger, I can see that when failure happens, USB device is already powered up but doesn't see USB_APP_ENUM_COMPLETE event even though there is one USB bus reset from host.
For some unusual cases, USB host does send out more than one USB bus resets to device to get enumeration done successfully.
My question is, what is the condition for RESET to be sent out more than once? Why for my failure cases, only one bus reset is sent out? Any other reason could prevent enumeration from going through?