Code: AP33772 - GitHub
Example Project: Variable power supply with USB-C PPS - PicoPD
Specification:
- Power
- Capable of USB PD3.0 PPS provides 4V-21V output in 20mV step
- Capable of USB PD2.0 Fixed Power of 5, 9, 12, 15, or 20 V at a maximum of 5A (100 W at 20 V)
- +20A capable P-MOS load switch tied to USB-C VBUS
- USB Type-C port (for power delivery and programming)
- USB-C current read +/- 50mA
- ESD protection on D+/D-/CC1/CC2 pins
- V1.2: 200mA LDO AP2204K-3.3 Low dropout
- V1.0/V1.1:TPS62933 for efficient DC-DC converter for 3.3V @ 3A output
- Microcontroller
- RP2040 flexible clock running up to 133 MHz
- 264kB on-chip SRAM
- 16MB on-board QSPI flash
- I/O
- 2x VBUS pin output (4V to 21V)
- 2x 3V3 pin output (up to 3A)
- 3x 12-bit analog inputs
- 26 multifunction GPIO pins
- USB 2.0 breakout header
- LEDs
- Red - Power indicator
- Green - User controllable - GPIO 25
- Reset button
- Boot button
- Programming: Through USB-C, USB header, or SWD

Changing voltage on the fly


Key player
The key player that enables the PD ability is the AP33772 IC from Diodes Incorporated. This is a relatively new IC that has an integrated USB PD controller with PPS capability. Power selection and power rail status checks can be done over I2C. All of the PD negotiation, refresh, and timing are done by the AP33772 IC. The microcontroller after making its power request in Setup(), is free to perform another task. This also simplified the code in comparison to the good old FUS302B which requires the microcontroller to do the heavy lifting.
The typical circuit utilizes a back-to-back NMOS configuration to create a bidirectional power switch. The switch remains open until the PD power negotiation is complete. My design omitted the NMOS switch so that the RP2040 can be powered as soon as the USB-C is plugged in.

Auto-detection for E-Mark (5A) and non-E-Mark (3A) cables using the same power supply.
Circuit
As we are designing a built-in USB PD/PPS pico board, we need all of the basic parts that make it a Pico.
- RP2040 IC
- Crystal Oscillator 12MHz
- SPI flash
- Supporting capacitors and resistors
But since we are going to have USB-C and higher power input than just 5V, we need higher voltage rating components and specialized IC:
- USB-C PD controller: AP33772 IC
- USB-C Receptacle 16 pins (USB 2.0 speed) 5A VBUS rated
- ESD diode for CC1, CC2,D- and D+
- 4V-30V DC-DC buck converter for 3.3V power rail
- P channel MOSFET as a load switch
The RP2040 has 2x I2C hardware blocks I2C0 and I2C1. The USB-C PD controller will be connected to the I2C0 block at GPIO0 and GPIO1. Check the pinout for more details.

Testing Outcome


This is a really cool project, and pretty close to what i want. Two questions:
1) How hard would it be to use a potentiometer to change the request voltage?
2) can this handle a full 3 amps at the voltages?