FX3 not getting connected with USB3.0

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
amjoc_3854616
Level 3
Level 3

Hi,

I'm using Custom FX3 board (made with reference to FX3 DVK board). Cypress FX3 Bootloader and all the example firmware images runs in USB2.0 but not in USB3.0 speed. Even in 3.0port , fx3 device is enumerated as 2.0

I tried the steps mentioned in trouble shooting guide, "Disable LPM in the firmware using CyU3PUsbLPMDisable API and check for the issue. Call this API after the CyU3PConnectState with 10 us delay" In code i tried to get the speed and sent through UART, in which it shows 3 but does not get enumerated in Control center utility nor device manager.

Is there any other driver for usb3.0 ?

What would be the possible reason for this?

I need clarification on another point :

Will there be any problem if the SSRXP and SSRXM is interchanged in connector,i.e, SSRXM & SSRXP from cypress to SSRX+ & SSRX- of the USB3.0 connector?

0 Likes
1 Solution

Hi,

The problem is solved, when tried with another host. FX3 got enumerated with USB3.0 with another host.

Thank you.

View solution in original post

0 Likes
7 Replies
KandlaguntaR_36
Moderator
Moderator
Moderator
25 solutions authored 10 solutions authored 5 solutions authored

Please check this Trouble Shooting Guide for the FX3/FX3S/CX3 Enumeration - KBA222372 and USB Differential Pair Pin Inversion - KBA218753

The polarity can be swapped on USB 3.0 differential pairs. Polarity detection is done automatically by the USB 3.0 PHY during link training (called TSEQs), as defined in the USB 3.0 specification section 6.4.2. This does not require any additional change in device firmware. In the design of the PCB layout, SSRX_N and SSRX_P (or the TX pairs) may cross with each other. Inversion is recommended to avoid this crossing.

However, inversion is not allowed with USB 2.0 differential pair since inversion detection is not implemented in USB 2.0.

0 Likes

Hi,

I checked the trouble shooting page, FX3 bootloader gets enmerated with usb3.0 port but with the following description :

FriendlyName="Cypress FX3 USB BootLoader Device"

Manufacturer="Cypress"

Product="WestBridge "

SerialNumber="0000000004BE"

Configurations="1"

MaxPacketSize="64"

VendorID="04 B4"

ProductID="00 F3"

Class="00h"

SubClass="00h"

Protocol="00h"

BcdDevice="01 00"

BcdUSB="02 00"

When firmware with the following changes are programmed to the fx3, then the device is not getting enumerated.

/*Disable the USB 2.0 connection*/

    CyU3PUsbControlUsb2Support(CyFalse);

    do {

    /* 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);

    CyFxAppErrorHandler(apiRetStatus);

    }

    else

    {

    CyU3PDebugPrint (4, "USB Connect passed, Error code = %d\n", apiRetStatus);

    }

    CyU3PBusyWait (10);

    apiRetStatus = CyU3PUsbLPMDisable ();

    if (apiRetStatus != CY_U3P_SUCCESS)

    {

    CyU3PDebugPrint (4, "USB LPM Disable, Error code = %d\n", apiRetStatus);

    CyFxAppErrorHandler(apiRetStatus);

    }

    else

    {

    CyU3PDebugPrint (4, "USB LPM Disable, Error code = %d\n", apiRetStatus);

    }

    } while(apiRetStatus != CY_U3P_SUCCESS);

What could be the possible reason?

0 Likes

The FX3 ROM Bootloader enumerates only in USB 2.0.

After modifying the code (above), are you seeing any debug prints that you have set?

Please load the USB Bulk Source Sink example firmware built in Debug Mode and collect the UART logs and share here.
We can see what is happening on USB 3.0 PHY.

0 Likes
lock attach
Attachments are accessible only for community members.

Hi,

The debug prints seen after modifying the code:

USB Connect passed, Error code = 0

USB LPM Disable, Error code = 0

USB Speed : 3Loopback thread: 1

After programinng USB Bulk Source Sink example have attached with the comment.

0 Likes

As per the Logs, the link is trying to connect in USB 3.0. It enters to U0 state, later entering into the recovery state. Then goes to SSinactive state.
It is not even entering into Low Power State (U1, U2 and U3 - 91, 92, 93 are the logs for these states respsetively).

It looks like there is a signal integrity issue w.r.t super speed signals. Please check the Hardware guidelines Application Note (AN70707) and ensure that you have followed all the recommended guidelines.

Please check with different hosts. If you have USB SuperSpeed explorer kit, please connect it to the same host and check the USB 3.0 enumeration. If the explorer kit enumerates in USB 3.0 with the same host, we can isolate the issue with USB host.

For your information - Signal integrity issue can be caused due to USB 3.0 trace on the device, cable, and trace on host.

Please let me know how many boards you have made, is this issue happening with all the boards?

0 Likes

Hi,

The problem is solved, when tried with another host. FX3 got enumerated with USB3.0 with another host.

Thank you.

0 Likes

Looks like there is some issue with previous host which is degrading the signal integrity.

0 Likes