Cypress EZ-USB FX3 not detected with USB detection on VBUS pin.

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

cross mob
atrAnon
Level 1
Level 1
First reply posted 5 sign-ins First question asked

Hello,

 

I'm writing to the community about a problem I'm having with the Cypress EZ-USB FX3 controller (CYUSB3014-BZXI). On some controllers (a minority but still a significant number) I am unable to detect the device from my host PC (no enumeration failure or anything, just nothing happens as if it wasn't connected).

The problem is that our voltage on the VBUS pin (which is used for USB detection), at 4.20V, is apparently not sufficient on these controllers to enable USB detection. I have to manually supply the pin with, in some cases, at least 4.31V to enable detection. Once detection is enabled, USB communication is functional.

In our application, we use detection with VBATT which always seems to work (probably because of the wider range of VBATT [3.2-6.0]V). The real problem is with the "Cypress FX3 USB Bootloader Device" which can't be enumerated as I can't force it to use VBATT rather than VBUS.

So the idea was to implement a second stage bootloader using the SDK boot library to have a bootloader using VBATT rather than VBUS. I would then only have to drive the VBUS pin during the first programming to load the second stage bootloader and have a bootloader and application using only VBATT to avoid the problem. However, I can't get the second stage bootloader to work on VBATT rather than VBUS (despite the dedicated function in the boot library).

 

Then I have the following questions:

- Why are some Cypress EZ-USB FX3 controllers unable to detect USB with 4.20V VBUS? According to the electrical specifications, VBUS should be accepted between [4.0-6.0]V. Is this a known defect in the controllers?

- For the second-stage bootloader, I got working firmware which I was able to test properly with working controllers. However, on the problematic controllers, I can see that the VBATT detection doesn't work: I also have to manually bring the voltage to 4.31V, which means it's still using VBUS for detection (confirmed by the fact that if I use the application firmware that uses VBATT, the detection is functional). I use "CyFx3BootUsbVBattEnable( CyTrue )" from "cyfx3usb.h" in the boot library before calling "CyFx3BootUsbConnect( CyTrue, CyTrue )". Have I forgotten something about using VBATT in the second-stage bootloader? Are there any known problems with this?

 

In addition, here is some more information about what was checked:

- Our implementation of the second-stage bootloader is not the reason for the problem because I also used the SDK's second-stage bootloader example ("\Cypress\EZ-USB FX3 SDK\1.3\firmware\boot_fw") with the addition of "CyFx3BootUsbVBattEnable( CyTrue )" and it is not functional.

- I've also taken into account the following errata: "2. USB enumeration fails in USB boot mode when FX3 is self-powered". This is not a self-powered application. We are powering our device from the USB host connection.

- I also considered the following errata: "USB Boot Is Not Stable". We are using the "I2C, On Failure, USB Boot is Enabled" option and although we are booting from the I2C, the USB detection is not functional.

 

Thank you in advance for any help you can provide.

 

Best regards.

 

0 Likes
1 Solution

Hello,

As per the FX3 Technical Reference Manual, the VBUS threshold for it to be detected is 4.4V. So, we recommend you provide 4.4V for VBUS detection.

Please refer to the field VBUS_TH(Bit 12) in the register 10.4.7 GCTL_IOPOWER in the FX3 SDK.

Thanks,
Ajeeth

View solution in original post

0 Likes
5 Replies
Giraffe1492
Level 5
Level 5
25 sign-ins 25 likes received 10 solutions authored

Hello,

It seems you are facing issues with the Cypress EZ-USB FX3 controller (CYUSB3014-BZXI) related to VBUS voltage and USB detection. I'll try to address your questions:

1. Why are some Cypress EZ-USB FX3 controllers unable to detect USB with 4.20V VBUS?

It is possible that there might be some variation in the VBUS voltage tolerance among different controllers. However, as you mentioned, the electrical specifications state that VBUS should be accepted between [4.0-6.0]V. It could be a manufacturing defect or an issue with the specific batch of controllers you have.


2. Have you forgotten something about using VBATT in the second-stage bootloader? Are there any known problems with this?

Based on the information you provided, it seems you are using the correct function \"CyFx3BootUsbVBattEnable( CyTrue )\" from \"cyfx3usb.h\" in the boot library before calling \"CyFx3BootUsbConnect( CyTrue, CyTrue )\". However, it's still not working as expected on problematic controllers. It's possible that there might be an issue with the specific controllers you are using, or there could be an unknown issue with the boot library function.


As you have already tried the SDK's second-stage bootloader example and considered the relevant errata, it is recommended to further investigate the issue with the specific batch of controllers you have. You may want to consider testing with a different batch of controllers or reaching out to Infineon for further assistance on this issue.


Best regards.

https://www.infineon.com/cms/en/product/universal-serial-bus/usb-c-high-voltage-microcontrollers/ez-...
https://www.infineon.com/cms/en/product/universal-serial-bus/usb-c-high-voltage-microcontrollers/ez-...
https://www.infineon.com/cms/en/product/universal-serial-bus/usb-c-high-voltage-microcontrollers/ez-...

 

0 Likes

Hello,

 

Thank you for your reply.

 

I also suspect that these controllers may have a defect in VBUS detection at least. However, as the number of controllers affected is still significant, we are looking for a solution to have some form of bootloader that would work to avoid having to scrap these controllers...

Unfortunately, there seems to be a bug or misunderstanding on my part about how to have VBATT detection with a second stage bootloader. To avoid any impact of a potentially faulty controller, I did an additional test with a tested and working controller: I left the VBUS pin disconnected while VBATT is the only pin left connected for detection. The "Cypress FX3 USB Bootloader Device" remains undetected (which makes sense) but despite using "CyFx3BootUsbVBattEnable( CyTrue )" I can't get a second stage bootloader to be detected via USB unless I manually drive the VBUS pin. I can even say that VBATT is never used because if I stop driving VBUS, USB detection stops. This is tested as previously mentioned with the Cypress example.

 

You mention contacting Infineon for further assistance, do you know where I can contact them? Also, I suspect that "CyFx3BootUsbVBattEnable( CyTrue )" is not working, may I ask where I could report a potential boot library bug?

 

Thank you in advance for your answer.

 

Best regards.

0 Likes
Ajeethkumar_P
Moderator
Moderator
Moderator
50 likes received 500 replies posted 100 solutions authored

Hello,

When the FX3 device is functioning as a USB device, it performs Vbus detection by default; and will connect to the host only when VBus voltage is seen to be above 4.1 V.

Why can't you provide proper Voltage(above 4.1V) for VBUS as you are connecting to the USB host?

To make FX3 detect VBATT instead of VBUS, please use the API "CyU3PUsbControlVBusDetect". "CyFx3BootUsbVBattEnable" is used to configure the USB block on FX3 to work off Vbatt power instead of Vbus and not for detection.

Thanks,
Ajeeth

0 Likes

Hello,

 

Thank you for your reply.

 

We use a higher voltage than 4.1V for VBUS because we supply 4.20V. We are within the electrical specification for VBUS and most controllers agree with such a voltage. Some however do not agree with this, leaving us unable to access any form of bootloader ("Cypress FX3 USB Bootloader Device" or second stage bootloader probably due to a bug, more information in the original post and discussion with Giraffe1492).

However, if we manually drive this VBUS to a higher voltage, we are able to access a bootloader and then load our application firmware. We then effectively use VBATT instead of VBUS thanks to the API. This only works with the application firmware. The problem is that if for some reason our firmware gets corrupted and the controller goes back to the bootloader, we're in a bind.

 

Best regards.

0 Likes

Hello,

As per the FX3 Technical Reference Manual, the VBUS threshold for it to be detected is 4.4V. So, we recommend you provide 4.4V for VBUS detection.

Please refer to the field VBUS_TH(Bit 12) in the register 10.4.7 GCTL_IOPOWER in the FX3 SDK.

Thanks,
Ajeeth

0 Likes