Is normal PC(host) <=> FX3 communication possible without a connection to 5V usb rail -> Vbus pin

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

cross mob
maVa_1182686
Level 3
Level 3
Welcome!

I have a design that uses USB type C power delivery.

5V rail USB is not 5V guaranteed, it can be as high as 20V(-Vdrop over cable) and as low as 5V(-Vdrop over cable)

We can not connect straight to the FX3 for this reason, enabling PD would instantly destroy the FX3.

I would like to power the USB PHY with 3.5V

This is too low for the Vusb pin, but it's okay for the Vbatt pin.

Firmware will start up normally from FLASH (this has been confirmed by cypress employees)

BUT...

I'm not sure if normal communication (for example, the bulk loop example) relies on ever seeing Vbus >= 4V.

It could be that the powering via Vbatt only allows OTG functionality where the FX3 is host and that there is no way to have the FX3 function in the more general sense:

= PC (host) <=> FX3

I find the documentation very confusing and the newer DEVKIT does not allow you to test this use case!

Thank You!

0 Likes
1 Solution
YashwantK_46
Moderator
Moderator
Moderator
100 solutions authored 50 solutions authored 50 likes received

Hello,

This thread is a continuation of the thread: Fx3 Enumeration on Vbatt pin, Vbus unconnected (Power Delivery - PD related)

VBUS at 3.5-3.7V can be connected to the VBAT pin of FX3 and this will be able to communicate with the host.

In the firmware, there have to be minor changes to enable the system to be powered up using VBAT using CyU3PUsbControlVBusDetect() API available in the cyu3usb.h file provided with the FX3 SDK.

The information of the API is given below (Please read the second paragraph that is your case):

pastedImage_1.png

Regards,
Yashwant

View solution in original post

0 Likes
8 Replies
YashwantK_46
Moderator
Moderator
Moderator
100 solutions authored 50 solutions authored 50 likes received

Hello,

This thread is a continuation of the thread: Fx3 Enumeration on Vbatt pin, Vbus unconnected (Power Delivery - PD related)

VBUS at 3.5-3.7V can be connected to the VBAT pin of FX3 and this will be able to communicate with the host.

In the firmware, there have to be minor changes to enable the system to be powered up using VBAT using CyU3PUsbControlVBusDetect() API available in the cyu3usb.h file provided with the FX3 SDK.

The information of the API is given below (Please read the second paragraph that is your case):

pastedImage_1.png

Regards,
Yashwant

0 Likes

Is there example code for this use-case somewhere?

The old devkit has the ability to only use Vbatt, if i'm not mistaken?

Is there a way to get this behavior in the bootloader, so that we are able to write to RAM from the host?

Should we be worried about other complications when Vbus is not connected?

Will JTAG work as expected for example?

0 Likes

Hello,

There is no code example as such to use the VBUS -> VBATT configuration.
Just calling the API that I pointed to in my first response in the firmware would enable the use of VBUS -> VABTT connection at 3.3V.


But this won't help in case of the device to enumerate on host since there is a necessity of 4.1V on the USB rails for the Cypress Bootloader Device to enumerate on the host.

There should be 4.1V provided to see the bootloader device to be able to program the device for once and later can be changed to 3.3V by connecting VBUS -> VBATT


Here's what you can do in your application for the device enumerate on host:

1.) Connect both VBUS and VBAT to the same USB rail with a switch in order to switch the supply later.

2.) Provide 4.1V from the host VBUS rail and see device enumeration as Cypress USB Bootloader Device.

3.) Program the device to either FLASH or EEPROM with the CyU3PUsbControlVBusDetect() API implemented in the firmware.

4.) Once finished you can change the boot-mode (using PMODE) to boot from FLASH or EEPROM which will load the firmware into FX3's RAM.

5.) You can reset the device and then change the switch position to be powered from VBATT instead of VBUS - this will enable you to get the voltage down to 3.3V and achieve normal operation at the required voltage.

The old devkit has the ability to only use Vbatt, if i'm not mistaken?

-> CYUSB3KIT-001 had the DC power jack which allowed the device to be powered by an external source and work as a self-powered device. The same can't be achieved with CYUSB3KIT-003 since the VBATT pin is not taken out from the FX3 IC onto the kit.

You will have to make your own custom board to evaluate the working of VBATT.

Will JTAG work as expected for example?

->JTAG block will irrespective of the supply voltage for VBUS or VBAT since the internal voltage supplied to the JTAG block is powered by VIO5 which is derived from V3P3 outputted from the onboard LDO.

To ensure all the other blocks, you will have to take care of all the other voltage conversions on the board to power-up the different blocks in FX3 (1.2V, 1.8V or 3.3V) using LDO's and supply it appropriately to the responding blocks.


Regards,

Yashwant

0 Likes

Hi,

Thanks for your response.

If I program the FX3 with a JTAG the first time, won't that allow me to not have to make the switch to a higher voltage?

I assume it is possible to include functionality in my firmware to write and updated firmware to the flash memory, from within that firmware.

I would then never need the bootloader.

Is that correct?

Is there an example of code that writes to SPI flash?

0 Likes

Hello,

Apologies for the delayed response.

It is not possible to program the FX3 with JTAG without the device enumerating as Cypress USB Bootloader Device on the host because the Eclipse J-LInk Utility programs the device only when there is a Cypress USB Bootloader Device and the bootloader device won't come up unless provided with 4.1V on the VBUS pin.

You will need to provide the device with 4.1V regardless of the interface for the bootloader device to enumerate and be able to program the RAM, EEPROM or FLASH on the device.


Regards,
Yashwant

0 Likes

Hi ,

thanks!

Is it correct to assume that IF we work with preprogrammed flash, we don't need to ever get the voltage at Vbus pin to be >4.1V?

This would imply that the firmware needs it's own mechanism to update the flash.

Is that possible?

Best Regards,

Mattijs

0 Likes

Hello Mattijs,

Theoretically, it should work as expected with a pre-programmed FLASH but you would have to make sure the image in the FLASH is a valid firmware image generated from the FX3 SDK.

Unfortunately, we don't have a way to test it and can't confirm it.

Yes, you would need to implement a firmware mechanism to update the contents of the FLASH.


Regards,
Yashwant

0 Likes