Basic USB-C Sink

Browse source code on GitHub

Overview

This example demonstrates how to create a USB-C Power Delivery application and how to generate USB VIF policies in XML format using the USB-C subsystem. The application implements a USB-C Sink device.

After the USB-C Sink device is plugged into a Power Delivery charger, it negotiates with the charger to provide 5V@100mA and displays all Power Delivery Objects (PDOs) provided by the charger.

Requirements

The TCPC device used by the sample is specified in the devicetree node that’s compatible with usb-c-connector. The sample has been tested on B-G474E-DPOW1 Discovery and STM32G081B Evaluation. Overlay files for the two boards are provided.

Building and Running

Build and flash as follows, changing b_g474e_dpow1 for your board:

west build -b b_g474e_dpow1 samples/subsys/usb_c/sink
west flash

Connect a charger and see console output:

Sample Output

Unattached.SNK
AttachWait.SNK
Attached.SNK
PE_SNK_Startup
PRL_INIT
PRL_HR_Wait_for_Request
PRL_Tx_PHY_Layer_Reset
PRL_Tx_Wait_for_Message_Request
PE_SNK_Discovery
PE_SNK_Wait_For_Capabilities
RECV 4161/4 [0]0a01912c [1]0002d12c [2]0004b12c [3]000640e1
PE_SNK_Evaluate_Capability
PE_SNK_Select_Capability
PRL_Tx_Wait_for_PHY_response
PWR 3A0

RECV 0363/0
PRL_Tx_Wait_for_Message_Request
PE_SNK_Transition_Sink
RECV 0566/0
Source Caps:
PDO 0:
       Type:              FIXED
       Current:           3000
       Voltage:           5000
       Peak Current:      0
       Uchunked Support:  0
       Dual Role Data:    1
       USB Comms:         0
       Unconstrained Pwr: 1
       USB Susspend:      0
       Dual Role Power:   0
PDO 1:
       Type:              FIXED
       Current:           3000
       Voltage:           9000
       Peak Current:      0
       Uchunked Support:  0
       Dual Role Data:    0
       USB Comms:         0
       Unconstrained Pwr: 0
       USB Susspend:      0
       Dual Role Power:   0
PDO 2:
       Type:              FIXED
       Current:           3000
       Voltage:           15000
       Peak Current:      0
       Uchunked Support:  0
       Dual Role Data:    0
       USB Comms:         0
       Unconstrained Pwr: 0
       USB Susspend:      0
       Dual Role Power:   0
PDO 3:
       Type:              FIXED
       Current:           2250
       Voltage:           20000
       Peak Current:      0
       Uchunked Support:  0
       Dual Role Data:    0
       USB Comms:         0
       Unconstrained Pwr: 0
       USB Susspend:      0
       Dual Role Power:   0
PE_SNK_Ready

See also

USB-C Device API