The boot options for FX3 are documented in AN76405. When FX3 is configured for the USB boot option through PMODE [2:0] = Z11, it will appear as a Cypress USB bootloader device, which can be only operated in USB 2.0 mode. Because there is no D+/D- associated with the embedded super-speed port, the FX3 cannot be detected in the host. In this scenario, we cannot program the application firmware to the FX3 through USB. Therefore, it is mandatory to use other boot options instead of USB.
Be cautious when using the boot options: I2C boot with USB fallback and SPI boot with USB fallback. In these boot options, FX3 will appear as a USB 2.0 bootloader device in the following scenarios:
- I2C or SPI address cycle or data cycle error
- Invalid signature in FX3 firmware image
- Invalid image type
- Call the CyU3PConnectState API repeatedly to retry the USB 3.0 connection in case of failure.
Refer to the FX3 API Guide for more details of these APIs. The code snippet of the steps is as follows:
/*Disable the USB 2.0 connection*/
/* Connect the USB Pins with super speed operation enabled. */
apiRetStatus = CyU3PConnectState(CyTrue, CyTrue);
if (apiRetStatus != CY_U3P_SUCCESS)
CyU3PDebugPrint (4, "USB Connect failed, Error code = %d\n", apiRetStatus);
CyU3PDebugPrint (4, "USB Connect passed, Error code = %d\n", apiRetStatus);
}while(apiRetStatus != CY_U3P_SUCCESS);