FX3 Bootloader occasionally enters compliance mode when connected to PC

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

cross mob
mialc_1106291
Level 4
Level 4
10 questions asked 50 sign-ins 50 replies posted

Hi,

We have developed a custom PCB with the CYUSB3014-BZXC and we've noticed that sometimes when we connect the board to the PC using a USB 3 C to C or USB 3 A to C cable Windows fails to detect it. In such cases Windows does not make the new device connected sound nor does it report an error.

According to my coworkers this happens randomly, typically after the board has been disconnected from the PC for a long period of time. They tried disconnecting the board from the PC, discharging the onboard capacitors, and then reconnecting it to see if they could reproduce what seems to be a random issue that occurs after long periods of the board being unpowered  but they weren't able to reproduce it this way. My coworkers are using laptops that come with Intel 3.1 host controllers.

I added UART debug logging to our bootloader and yesterday I noticed something similar occur. I had been testing our bootloader and application firmware on an Apple M1 Mac Mini, then disconnected the board (left unpowered) for a while (maybe 20 minutes), and then connected it to the Intel 3.0 USB A port on my Windows 10 desktop PC. Windows did not make the new device connected noise, nor did it display any messages. Fortunately I had a USB UART connected to the board and managed to capture the USB events via the output, which were as follows:

Initializing FX3 Boot Firmware 1.10
Boot FW Event: CY_FX3_BOOT_USB_IN_SS_DISCONNECT
Boot FW Event: CY_FX3_BOOT_USB_CONNECT
Boot FW Event: CY_FX3_BOOT_USB_COMPLIANCE

We have a button attached to RESET#. I tried resetting the MCU using this button and didn't see anything different in the UART log, nor was the FX3 identified by Windows. The problem only resolved after I disconnected the board from my PC and plugged it back in. I'm not sure if this is the same issue that randomly occurs for my coworkers, as they didn't manage to capture the UART logs.

I'm not sure if this issue is caused by something in the hardware design or something in the firmware but it would be great if we could figure that out before the next PCB revision, which is about 3 weeks out.

Thanks,
Michael

0 Likes
1 Solution

EDITTED

Hello Michael,

No, you only need to check the register if the controller enters compliance mode. Please note that the controller usually enters compliance mode without any firmware intervention. It is entered automatically after the expiration of the timer mentioned in the USB3 specification. So, we strongly believe that the issue here is not from the device side.

Also, as it is a type C design, you can refer to the following KBA to check if the hardware of your board is proper or not:

https://community.infineon.com/t5/Knowledge-Base-Articles/Designing-Type-C-products-based-on-EZ-USB-...

Best Regards,
Jayakrishna

View solution in original post

0 Likes
8 Replies
JayakrishnaT_76
Moderator
Moderator
Moderator
First question asked 1000 replies posted 750 replies posted

Hello Michael,

Do you have a hardware analyzer like Lecroy at your end? If yes, then can you please share the Lecroy traces so that we can debug this issue faster?

Based on my understanding, the issue happens only on your custom bootloader which is invoked by the ROM bootloader. Please correct me if my understanding is not correct. Also, does the issue occur with the Application firmware? 

In addition to this, please confirm that you are using FX3 SDK 1.3.4 for development.

Best Regards,
Jayakrishna
0 Likes

Hi Jayakrishna,

I have an Ellisys USB Explorer 350 hardware analyzer but unfortunately I have not yet managed to capture the bus traffic when this issue occurs. My colleagues who have seen this issue more often than me do not have a hardware analyzer and they are located in another country. Further, I don't think we have budget to purchase another analyzer so if we are going to get a packet capture it'll require me to replicate the issue with the analyzer running.

You are correct, we've seen this behavior with our custom bootloader which is stored in a 32KB EEPROM and loaded by the ROM bootloader at power on. The PMODE pins are set for the I2C with USB fallback mode. I do not know if this issue occurs with the application firmware, as the device only has a 32KB EEPROM, which is not large enough to store the 141KB application firmware. Our PC side libraries download the latest application firmware the first time an application opens a handle against the device.

I am using FX3 SDK 1.3.4 for development.

Has there been any update regarding finding an FAE so we can get an NDA in place and share the source code?

Thanks,
Michael

0 Likes

Hello Michael,

The device will go into compliance mode if the first LFPS exchange times out. We need to examine the traces to understand more on the failure. So, can you please share the traces captured using a hardware analyzer?

Regarding the NDA, my colleague is still working to find an FAE. He will let you know on the updates over e-mail.

Best Regards,
Jayakrishna
0 Likes

Hi Jayakrishna,

I spent a couple of hours trying to capture this with the hardware analyzer yesterday but haven't seen the device go into compliance mode. I will provide the traces when and if I manage to get the device to go into compliance mode when attached through the Ellisys EX 350.

Thanks,
Michael

0 Likes

Hello Michael,

Sure, please take your time and share the traces with us. Meanwhile,  please perform the following test for me:

1. Read the contents of the register 0xE0033014 and print it after each of the following events are received:

Boot FW Event: CY_FX3_BOOT_USB_CONNECT
Boot FW Event: CY_FX3_BOOT_USB_COMPLIANCE

This will help us to track PHY and Link errors if any occurred.

Best Regards,
Jayakrishna
0 Likes

Hello Michael,

Can you please update this thread by providing the details that were requested in my previous response?

Best Regards,
Jayakrishna
0 Likes

Hi Jayakrishna,

We've been unable to replicate this issue. Do you still want me to read register 0xE0033014 even when the USB controller isn't entering compliance mode?

Thanks,
Michael

0 Likes

EDITTED

Hello Michael,

No, you only need to check the register if the controller enters compliance mode. Please note that the controller usually enters compliance mode without any firmware intervention. It is entered automatically after the expiration of the timer mentioned in the USB3 specification. So, we strongly believe that the issue here is not from the device side.

Also, as it is a type C design, you can refer to the following KBA to check if the hardware of your board is proper or not:

https://community.infineon.com/t5/Knowledge-Base-Articles/Designing-Type-C-products-based-on-EZ-USB-...

Best Regards,
Jayakrishna
0 Likes