Important
This repository has been created using the git submodule
command. Please refer to the "How to use" section for more details.
X-CUBE-TCPP is an STMicroelectronics original initiative. It uses for USB Type-C and Power Delivery software expansion for STM32Cube (UM2285).
X-CUBE-TCPP is a USB-IF certified Expansion Package (USB Type-C Rev 2.0 and Power Delivery 3.1) and consists of libraries, drivers, sources, APIs and application examples running on STM32 Series GP microcontrollers embedding Type-C and power delivery management (thanks to the embedded UCPD PHY integrated in STM32G4, STM32G0, STM32L5 and STM32U5).
For the other STM32 GP MCU without embedded UCPD PHY (like STM32L4, STM32F0...), this package demonstrates how to comply with Type-C specification.
All the applications available in this package need to have either the TCPP01-M12, the TCPP02-M18 or the TCPP03-M20 integrated.
The TCPP01-M12 (Type-C port protection) is a single chip solution for USB Type-C port protection that facilitates the migration from USB legacy connectors type-A or type-B to USB Type-C connectors.
The TCPP02-M18 (Type-C port protection) is a single chip solution for USB Type-C port protection in the context of Source applications.
The TCPP03-M20 (Type-C port protection) is a single chip solution for USB Type-C port protection in the context of Dual Role Power applications.
STMicroelectronics package has been certified by USB-IF through the reference TID 5205, TID 6408, TID 3036, TID 7884 and TID 8088.
Check the ST web page : USB Type-C and Power Delivery for more details.
The figure below shows the overall architecture:
This repository has been created using the git submodule
command. Please check the instructions below for proper use. Please check also the notes at the end of this section for further information.
- To clone this repository along with the linked submodules, option
--recursive
has to be specified as shown below.
git clone --recursive https://github.com/STMicroelectronics/x-cube-tcpp.git
- To get the latest updates, in case this repository is already on your local machine, issue the following two commands (with this repository as the current working directory).
git pull
git submodule update --init --recursive
- To use the same package version as the one available on st.com, issue the command below after specifying the targeted
vX.Y.Z
version. This should be done after the command(s) indicated in instruction (1) or in instruction (2) above have been successfully executed.
git checkout vX.Y.Z # Specify the targeted vX.Y.Z version
- To avoid going through the above instructions and directly clone the same firmware version as the one available on st.com, issue the command below after specifying the targeted
vX.Y.Z
version.
git clone --recursive --depth 1 --branch vX.Y.Z https://github.com/STMicroelectronics/x-cube-tcpp.git
Note
- The latest version of this firmware available on GitHub may be ahead of the one available on st.com or via STM32CubeMX. This is due to the rolling release process deployed on GitHub. Please refer to this post for more details.
- Option
--depth 1
specified in instruction (4) above is not mandatory. It may be useful to skip downloading all previous commits up to the one corresponding to the targeted version. - If GitHub "Download ZIP" option is used instead of the
git clone
command, then the different submodules have to be collected and added manually.
| Applications | Board | Expansion board | Format | Short Description | |--------------------|---------------|------------------------------------|--------|------------------------------|� | SNK1M1_Sink| NUCLEO-G071RB | X-NUCLEO-SNK1M1 | MX + SW pack | USBPD Sink application running on STM32G0XX devices, with X-NUCLEO-SNK1M1 expansion board. | | SNK1M1_Sink_PPS| NUCLEO-G071RB | X-NUCLEO-SNK1M1 | MX | USBPD Sink application (with PPS) running on STM32G0XX devices, with X-NUCLEO-SNK1M1 expansion board. | | SNK1M1_Sink_LPM| NUCLEO-G071RB | X-NUCLEO-SNK1M1 | | USBPD Sink application (with Low Power Mode) running on STM32G0XX devices, with X-NUCLEO-SNK1M1 expansion board. | | SNK1M1_Sink| NUCLEO-G474RE | X-NUCLEO-SNK1M1 | MX + SW pack | USBPD Sink application (with PPS and USB MSC cohabitation) running on STM32G4XX devices, with X-NUCLEO-SNK1M1 expansion board. | | SNK1M1_Sink_TypeC_Only| NUCLEO-L412RB-P | X-NUCLEO-SNK1M1 | | Type-C Sink application (with USB MSC enumeration) running on STM32L4XX devices, with X-NUCLEO-SNK1M1 expansion board. | | SRC1M1_Source_TypeC_Only| NUCLEO-F446RE | X-NUCLEO-SRC1M1 | MX + SW pack | Type-C Source application running on STM32F4XX devices, with X-NUCLEO-SRC1M1 expansion board. | | DRP1M1_DRP| NUCLEO-G071RB | X-NUCLEO-DRP1M1 | MX + SW pack | USBPD DRP application running on STM32G0XX devices, with X-NUCLEO-DRP1M1 expansion board. | | DRP1M1_DRP_LPM| NUCLEO-G071RB | X-NUCLEO-DRP1M1 | | USBPD DRP application (with Low Power Mode) running on STM32G0XX devices, with X-NUCLEO-DRP1M1 expansion board. | | DRP1M1_DRP| NUCLEO-G474RE | X-NUCLEO-DRP1M1 | MX + SW pack | USBPD DRP application running on STM32G4XX devices, with X-NUCLEO-DRP1M1 expansion board. | | SRC1M1_Source| NUCLEO-G071RB | X-NUCLEO-SRC1M1 | MX + SW pack | USBPD Source application running on STM32G0XX devices, with X-NUCLEO-SRC1M1 expansion board. | | SRC1M1_Source| NUCLEO-G474RE | X-NUCLEO-DRP1M1 | MX + SW pack | USBPD Source application running on STM32G4XX devices, with X-NUCLEO-SRC1M1 expansion board. |
This Expansion Package is demonstrated on one hardware implementation, but can easily be ported to any STM32 including the UCPD periperal.
- IAR Embedded Workbench for ARM (EWARM) toolchain V8.50.6 + STLink/V2
- Keil Microcontroller Development Kit (MDK-ARM) toolchain V5.31 + ST-LINK/V2
- STM32CubeIDE V1.11.0 + ST-LINK/V2
- STM32CubeMonUCPD: Monitoring and configuration software tool for STM32 USB-C and Power Delivery 3.1 applications
-
Application Note AN5225 : USB Type-C™ Power Delivery using STM32xx Series MCUs and STM32xxx Series MPUs
-
User manual UM2552 : Managing USB power delivery stack with STM32 microcontrollers
-
Wiki to create a simple USBPD sink application from STM32CubeMX: Getting started with USB-Power Delivery Sink
-
Wiki to create a simple USBPD source application from STM32CubeMX: Getting started with USB-Power Delivery Source
-
Wiki to create a simple Type-C only source application from STM32CubeMX: Getting started with USB Type-C only Source
-
An application note to create a simple application from STM32CubeMX is available at this link : AN5418
-
Corresponding video here
STMicroelectronics package has been certified by USB-IF through the reference TID 3036 and TID 5205.
STM32 customers and users who want to contribute to this component can follow instructions provided in the CONTRIBUTING guide.
USB-PD, Power Delivery, USB Type-C, TCPP01, TCPP02, TCPP03, STM32, STM32G0, STM32G4, STM32F4, STM32L4
Details about the content of this release are available in the release note here.