2025-08-11 4:09 AM
Dear ST Community,
I have a working application for USB PD SPR and EPR and now I want to change the voltage (power profile) during an active contract.
So e.g. I have 5V currently and want to request 9V from the source, or I have 20V currently and want to switch to 28V (EPR).
How to do that? According to the USB Specification you would send a "Get Source Capability" Request so I used USBPD_DPM_RequestGetSourceCapability() [or USBPD_PE_Send_ExtendeControlMessage(m_uPort, USBPD_EXTENDED_CONTROL_EPR_GETSRCCAPA) in EPR]. Then the source responds with it's capabilities. USBPD_DPM_SetDataInfo gets called with the PDOs but USBPD_DPM_SNK_EvaluateCapabilities is never called afterwards....
In SPR Mode nothing happens, voltage stays the same. In EPR Mode 30ms later a hard reset is triggered.
Why does the ST Stack not Evaluate Capabilities after successfull reception of PDOs? According to USB Spec as a Sink we always need to respond to a capabilities message with our "wish".....
How to fix that?
I am using Core Stack version V5.3.0 (latest version as of writing this post). Microcontroller used is STM32H523.
Regards,
Adrian