Dual-role USB-PD controller for STM32, with Power up to 100W (20V@5A).
The repository contains the USB-PD software stack for STM32.
USB-C PD 3.0 analog front-end controller, managed by both I2C and SPI interfaces. It needs to run the USB-PD stack in software thanks to the STM32.
The provided USB-PD stack only works on STM32 microcontroller family.
Certified by USB-IF consortium for USB Type-C and USB Power Delivery applications (USB-C & USB PD).
-
Device: STUSB1602A : USB-C Power Delivery with PPS (Programmable Power Supply)
-
Manufacturer: STMicroelectronics
-
Typical Application: To communicate over the CC line of the USB-C connector, and negociate power on VBUS
-
USB power role: Source, Sink, or Dual-Role Power (DRP)
-
USB data role: independant (works with No Data, or with external USB Device / USB Host that can be USB2.0 or USB3.1)
Note: If using the USB-C connector for both Power and Data, then the Power Sink application initial data role (at cable attachment) is always UFP (Device).
Similarly, the initial data role of a Power Source application is always DFP (Host).
To change the role, it is needed to send a USB PD command: PowerRole_Swap or DataRole_Swap. -
Features: software based solution with Analog front-end (STM32+STUSB1602)
-
Requirements: ARM Cortex-M microcontroller :
- STM32F072 (ARM Cortex-M0 core , 48 MHz) | USB Data supported: USB Device 2.0 Full-Speed (UFP)
- STM32F446 (ARM Cortex-M4 core , 180 MHz) | USB Data supported: USB OTG 2.0 High-Speed (DRD)
- STM32G474 (ARM Cortex-M4 core , 170 MHz) | USB Data supported: USB Device 2.0 Full-Speed (UFP)
- STM32L4R5 (ARM Cortex-M4 core , 120 MHz) | USB Data supported: USB OTG 2.0 Full-Speed (DRD)
-
GPIO Requirements: SPI (4 pins) + I2C (2 pins) + Interrupt (1 pin) :
- For 1 USB-C port : 1x SPI + 1x I2C + 1x Interrupt
- For 2 USB-C ports: 2x SPI + 1x I2C + 2x Interrupt
Note: Both I2C and SPI interfaces are mandatory. SPI is used for USB-PD messaging to CC pin, and I2C is used for chip register's configuration -
Operating supply: 5V to 20V directly from Vbus of the USB-C cable.
Or a lower power (3.3V) for battery supplied applications -
Power Consumption: 113uA for Sink role, 158uA for Source role
-
Package: QFN24 EP 4x4mm
-
Part number: STUSB1602AQTR (STUSB1602QTR is deprecated)
-
USB Spec: USB Type-C v1.2 , USB PD v2.0 & v3.0
-
USB Certification: Test ID = 1010032
- STUSB1602 software library has only been developed for STM32. In particular the SPI interface is non-standard because it is not 8-bit aligned. So it may not work with other microcontrollers.
- Technical Support: The USB-PD software stack has only been tested on STM32 with official USB-C test equipments to pass the USB certification, so it is only supported for STM32.
- STUSB1602 Linux drivers: Not available
- Optional USB-PD features
- VDM messaging: Supported
- Alternate mode: Supported
- Data Role swap: Supported
- Power Role swap: Supported
- Firmware update over CC: Supported
- USB-C TCPI (Type-C Port Controller Interface): Not supported
- USB Fast role swap: Hardware feature Not supported