PD Micro

Arduino Pro Micro functionality and pinout with 5-20 V power delivery through USB-C

Available for pre-order

View Purchasing Options
Jan 04, 2021

Project update 2 of 7

USB PD 3.0 programmable power supply (PPS) support now available

by Ma Ho Yuen

USB PD 3.0 has introduced a new PPS (Programmable Power Supply) mode. If your PD power source supports PPS, it allows devices to negotiate precise voltage range from 3.3 V to 5.9/11/16/21 V with 20 mV step. Being a programmable power supply, PPS supports a coarse current limit, with the value in 50 mA step.

Initially, the PD Micro library and hardware were designed for USB PD 2.0 with fixed power output. Now, however, more and more PPS-supported adapters are available in the market. We purchased a USB PD PPS power adapter and did some quick code modifications to PD Micro. Excitingly, we’ve verified that PD Micro can run the PPS protocol without issues.


Although FUSB302 hardware specifications only support PD 2.0, it can realize most USB PD 3.0 features with some limitations and workarounds. We list some that we found.

LimitationsWorkarounds and Solutions
FUSB302 do not have enough FIFO for unchunked messageUse chunked message compatible with PD 2.0
FUSB302 VBUS senses low threshold at 4 Vdisable vbus_sense if device is working in PPS mode
TPS62175 input voltage range 4.75 - 28 VUSB-C always outputs 5 V before entering PPS mode, TPS62175 UVLO threshold is 2.9 V
ATmega32U4 safe operation area is 8 MHz @ < 4.5 VWhen requesting PPS below 4.5 V, use clock_prescale_set(clock_div_2) to slow down working frequency


We updated the library with all workarounds implemented. To trigger PPS from the power adapter, please use another set of procedures to request PPS.

arduino sketch

Please find more details in our GitHub repository.

Sign up to receive future updates for PD Micro.

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects