Electrical – How to use an USB port with 3.3v power output

socusb

I am trying to use an USB port on a development board that doesn't provide a standard A socket. Instead, it provides 4 pins: 3.3V, two data pins and ground. Looking at the datasheet of the SoC, there is a pin AVDD33_USB described as "USB analog power", which provides 3.3v instead of the expected 5v. So, I assumed the board designer simply exposed the 4 pins from the SoC directly, and that is why I measured 3.3v instead of 5. Looking through the dataseet, I found a section called "Typical Application", with the following diagram:

diagram

So, it seems I can't use the USB port directly, and I need this "charge pump" thing. So, questions:

  • What is the simplest way I can use the USB port? Can a powered USB hub be directly connected to the board pins?
  • What is a charge pump?
  • Do I need an external 5v source?
  • Is this the typical way USB controllers are exposed in SoC?
  • Where does the AVDD33_USB pin enters in this diagram? If not used, why does it exists?

The SoC is a Hi3516A. The development board is called HI3516ASDI V1.0.

Best Answer

The diagram does not make much sense. At least, it is very sloppy. The HiSilicon Hi3516A seems to be a full-blown ARM A9 SoC with USB2 host capability. It is very likely that the "ADV33_USB" is just a logic signal to enable USB port power, so you should use "boost converter" (aka "charge pump") to provide +5V 500mA power to the port (to make it standard USB). In this case the "charge pump" should be shown as +3.3V IN, and +5V OUT, with ADV33_USB as enable signal.

It looks like the manual implies that you should make an add-on board (aka "shield" in DIY terminology), which would have the standard Type-A connector, ESD protection (TVS diodes), and a 3.3 - to 5V boost converter. Or any other source of +5V power that is controlled by ADV33_USB. Or you could ignore the enable signal, and provide USB VBUS permanantly, which also should be fine, provided that the SoC USB stack won't be confused with USB connect before the stack is loaded and USB initialized.