I am facing a USB 3.0 connect issue. My FX3 will loop on the Connect 1 USB Event.
I have that issue with my custom firmware as well as with the USBBulkSourceSink Cypress code example. I am puzzled by this issue and i don't seems to find the cause. I am facing the issue when unpluging the USB from the FX3 SuperSpeed Explorer Kit and pluging in back again. The FX3 is externally powered to keep the firmware loaded via USB running. I go between 2 host, a desktop ( Renesas XHCI ) and a laptop ( Intel XHCI ). Sometime I am able to reconnect the FX3, i.e the device is listed in the device manager of Windows. Once the connection fails, i am not able to achieve any USB connection.
I am attaching the debug log of the USBBulkSourceSink code.
The connect 1 loop has the following event :
USB EVENT: 0 1
USB LOG: 4
USB LOG: 6
USB LOG: 88
USB LOG: 12
USB LOG: 89
USB LOG: 8A
USB LOG: 80
Disabling the debug of the USBBulkSourceSink has the same behavior, the device no longer enumerates.
What would be wrong ? How can I recover from such a state ?
Apparently the issue is my USB analyser causing USB 3.0 Termination/RxDetect issues. When using Manual configuration of the Analyzer port, termination OFF leads to USB 2.0 only and termination ON lead to USB 3.0 connection with which i am able to connect/disconnect and change computer.
Analyzer : Teledyne LeCroy Advisor T3 FW Ver 1.18, Bus Engine version 2.25. USB Protocol Analyzer 7.35 Build 2274.
Further testing does show the issue comes from connecting the host side of the Analyzer last instead of first. The user manual does recommend connecting the host side first.
Using termination manual mode lead me to another handling situation :
When forcing termination on, USB 3.0 is enable between the Analyzer and the Device (FX3). If the host side of the Analyzer is a USB 2.0 only, the FX3 goes into compliance mode : USB USB Evt : SS_COMP_ENTRY and not USB connection occurs on USB 2.0.
I have seen issue with USB 3.0 devices where SS pairs were not crossed correctly ( Micro USB 3.0 connector as a Host connector, USB 3.0 "OTG" adapter does not cross SS pairs. After all there is not such thing as 3.0 OTG cable specification ), the host controller would go into compliance mode. Out of the 6 USB 3.0 Thumb Drive I tested, only 1 would do a fallback to USB 2.0 upon detection of SS compliance state.
How I can trigger a fallback to USB 2.0 in the FX3 once I get the Compliance Entry Event ?
I tried to use CyU3PConnectState to change the connection to USB 2.0 but doing so disable USB 3.0 and Compliance Exit Event is received. I would like to have Compliance Entry => Fallback and Compliance Exit => Restore SS. Changing the connect state triggers the compliance exit event which ends creating a loop.