Skip to content

Dual-role USB-C Power Delivery controller for STM32

License

Notifications You must be signed in to change notification settings

usb-c/STUSB1602

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STUSB1602 SW drivers (USB-C Power Delivery)

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).

Info:

  • 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

Notes:

  • 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