Main Content

USB PD Stand-alone Sink Controller

Since USB-C’s introduction, I’ve been consistently interested in leveraging it for powering everything under 100 watt (or rather under 90 watt, since it’s hard to come by a full 100 watt USB-C power brick). I finally found time to make the first move and this is the subject of the post.

I wanted to keep it simple at the start. Chips like the popular FUSB302 which only provide the wire level handling of the USB-PD protocol, require a lot of software work to make them reliably operational. And that software will need to run on a µC which adds to BOM. So I went to search and found a gem called STUSB4500 from STMicroelectronics. In short, you program some registers to chip’s NVM via I2C once which define what voltage range/current you require and the chip will negotiate those requirements with a charger connected to it.

With the perfect foundation in hand, I set out to design a minimal but practical board that I could use with my laptop (Lenovo ThinkPad X250), futher generalizing it to fit almost any purpose. This was also my first board to be assembled by a fab house. Shout out to for instant quoting and all-in-all, amazing no-fuss ordering experience.

I think STUSB4500 sits nicely between modules out there that require complete software stack and those that can set the voltage with a jumper. You still have fine grained control over how much voltage/current you ask for from the upstream power supply, without the hassle of adding extra controllers with software that may not be robust.

Operational wise, STUSB4500 has memory for 3 Power Delivery Output (PDO) configurations, each specifying an accepted voltage range and maximum current requirement. For instance, one PDO can specify 13.2v±5% and max. current of 2.1A. Once configured, the chip will enumerate the list of available outputs upon cable attachment and will match the requirements against it. If a match is found, it will configure the upstream to provide that power option. Given that this board features a MOSFET on the VBUS controlled by STUSB4500, you can configure it to only pass through the power if the requirements are met (instead of fall back to another PDO or 5v). Combined with the datasheet, the official GUI config tool exposes all the config in a simple to understand form.

STUSB4500 has some simple but useful connectivity via open-drain IO pins, in addition to the I2C. Two of the 3 PDOs have dedicated pins that are pulled low when that PDO is selected. These can be hooked up to LEDs to indicate which voltage is selected. Additionally, attachment and the side of the attached USB-C cable are indicated with dedicated pins. One GPIO pin can be configured to indicate other conditions as well.”

Link to article