Skip to main content
Associate II
March 31, 2026
Solved

EPR request in STM32G071

  • March 31, 2026
  • 18 replies
  • 775 views

Hello

I have my own board with STM32G071KBT6 microcontroller. I successfully comunicate with charger by PD protocol and I receive up to 21 V (PPS). But I need above 21V. I have power bank with AVS up to 28V and USB cable with e-marker (up to 240W). How to configure the stack to receive EPR parameters? I have no TCPP IC, but I use my own protection circuit. In the trace the EPR commands isn't present. I use STM32CubeIDE 2.1.1 and STM32CubeMX 6.17.0.

Thanks a lot and best regards

Best answer by Jaroslaw_T

Hello

I have good news - during test (with ST and AI support) I have done changes:
In stm32g0xx_it.c file in function: void TIM17_IRQHandler(void) I have added: USBPD_DPM_TimerCounter();


In case USBPD_CORE_DATATYPE_RCV_SRC_PDO_EPR:

 

{
uint8_t x=1; //hardcoded PDO EPR from source position
uint32_t EPR=0;
DPM_USER_DEBUG_TRACE(PortNum, "EPR - received: %lu bytes, %d PDOs", Size, Number_Of_EPR_PDO);
(void)memcpy(&EPR, Ptr+(x*4U), 4U);
DPM_USER_DEBUG_TRACE(PortNum, "x: %d - EPR: 0x%08lX", x, EPR);
USBPD_SRCProgrammablePowerSupplyAVSPDO_TypeDef PDO;
uint8_t src_power;
uint8_t src_max_voltage;
uint8_t src_min_voltage;
(void)memcpy(&PDO, &EPR, sizeof(PDO));
src_power = PDO.PDPIn1W;
src_min_voltage=PDO.MinVoltageIn100mV/10;
src_max_voltage=PDO.MaxVoltageIn100mV/10;
DPM_USER_DEBUG_TRACE(PortNum, "EPR: %d W, Max %d V", src_power, src_max_voltage);

if((EPR&0b11000000000000000000000000000000UL)!=0b11000000000000000000000000000000UL) //if not AVS
{
DPM_USER_DEBUG_TRACE(PortNum, "0x%08lX", EPR);
EPR_Voltage=(EPR>>10);
EPR_Voltage=EPR_Voltage&0b00000000000000000000001111111111;
EPR_Voltage=EPR_Voltage*50;
EPR_Current=EPR&0b00000000000000000000001111111111;
EPR_Current=EPR_Current*10; //prąd w mA
DPM_USER_DEBUG_TRACE(PortNum, "EPR = %lu mV, %lu mA", EPR_Voltage, EPR_Current);

}
if((EPR&0b11000000000000000000000000000000UL)==0b11000000000000000000000000000000UL) //if AVS
{
DPM_USER_DEBUG_TRACE(PortNum, "0x%08lX", EPR);
uint32_t Max_Voltage_100mV=(EPR>>17);
Max_Voltage_100mV = Max_Voltage_100mV&0b00000000000000000000000111111111;
DPM_USER_DEBUG_TRACE(PortNum, "EPR AVS - max voltage: %lu mV", (Max_Voltage_100mV*100));
}
}
break;

 

and in USBPD_DPM_SNK_EvaluateCapabilities:

 

{
USBPD_SNKRDO_TypeDef rdo;
rdo.d32=0;
DPM_USER_DEBUG_TRACE(PortNum, "AVS mode");
rdo.AVSRDO.EPR_Capable=1;
rdo.AVSRDO.ObjectPosition=9;
rdo.AVSRDO.OutputVoltageIn25mV=960; //24V
rdo.AVSRDO.OperatingCurrentIn50mAunits=100U; //5A
rdo.AVSRDO.NoUSBSuspend=0;
rdo.AVSRDO.USBCommunicationsCapable=0;
rdo.AVSRDO.CapabilityMismatch=0;
rdo.AVSRDO.Reserved1=0;
rdo.AVSRDO.Reserved2=0;
rdo.AVSRDO.Reserved3=0;

DPM_USER_DEBUG_TRACE(PortNum, "RDO after evaluation: 0x%08lX", rdo.d32);
//PDO_Parameters=rdo.d32; //for further use
//PDO_Position=rdo.AVSRDO.ObjectPosition; //for further use
*PtrPowerObjectType=USBPD_CORE_PDO_TYPE_AVSPDO;
*PtrRequestData=rdo.d32;
}

and trace:

CAD	503	1	USBPD_CAD_STATE_DETACHED	19720	
DEBUG 505 1 ADVICE: Update BSP_USBPD_PWR_VBUSInit 19721
CAD 505 1 USBPD_CAD_STATE_ATTACHED_WAIT 19722
CAD 624 1 USBPD_CAD_STATE_ATTACHED 19723
NOTIF 624 1 USBSTACK_START 19724
DEBUG 624 1 ADVICE: USBPD_DPM_Notification:104 19725
EVENT 624 1 EVENT_ATTACHED 19726
DEBUG 624 1 ADVICE: update USBPD_DPM_UserCableDetection 19727
DEBUG 624 1 ADVICE: update USBPD_DPM_SetDataInfo:2 19728
DEBUG 624 1 ADVICE: update USBPD_DPM_SetDataInfo:6 19729
PE 625 1 PE_SNK_STARTUP 19730
PE 625 1 PE_SNK_WAIT_FOR_CAPABILITIES 19731
IN 720 1 SOP PD3 s:030 H:0x71A1 (id:0, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C9181282CD102002CC103002CB10400F44106003C21DCC03C21A4C1
Option: EPW DRP
[1] Fixed : 5V - 3A
[2] Fixed : 9V - 3A
[3] Fixed : 12V - 3A
[4] Fixed : 15V - 3A
[5] Fixed : 20V - 5A
[6] Programmable : [3.3V - 11V] - 3A
[7] Programmable : [3.3V - 21V] - 3A
19732
OUT 720 1 SOP s:002 H:0x0081 (id:0, DR:UFP, PR:SNK) GOODCRC 19733
DEBUG 720 1 Received: 28 bytes 19734
DEBUG 720 1 PDO[1] = 5000 mV, 3000 mA, 15 W 19735
DEBUG 721 1 PDO[2] = 9000 mV, 3000 mA, 27 W 19736
DEBUG 721 1 PDO[3] = 12000 mV, 3000 mA, 36 W 19737
DEBUG 721 1 PDO[4] = 15000 mV, 3000 mA, 45 W 19738
DEBUG 721 1 PDO[5] = 20000 mV, 5000 mA, 100 W 19739
DEBUG 721 1 APDO [6] - max voltage: 11000 mV 19740
DEBUG 721 1 APDO [7] - max voltage: 21000 mV 19741
PE 721 1 PE_SNK_EVALUATE_CAPABILITY 19742
DEBUG 722 1 Evaluate capabilities... 19743
DEBUG 722 1 PDO mode 19744
PE 722 1 PE_SNK_SEND_REQUEST 19745
OUT 722 1 SOP PD3 REQUEST s:006 H:0x1082 (id:0, DR:UFP, PR:SNK) DATA: F4D14751
ObjectPosition:5
GiveBack:0
CapabilityMismatch:0
USBCommunicationCapable:0
NoUSBSuspend:1
UnchunkedExtendedMessagesSupported:0
MaximumOperatingCurrent:5000mA
OperatingCurrent:5000mA 19746
IN 723 1 SOP s:002 H:0x0161 (id:0, DR:DFP, PR:SRC) GOODCRC 19747
PE 723 1 PE_SNK_SELECT_CAPABILITY 19748
IN 725 1 SOP PD3 ACCEPT s:002 H:0x03A3 (id:1, DR:DFP, PR:SRC) 19749
OUT 725 1 SOP s:002 H:0x0281 (id:1, DR:UFP, PR:SNK) GOODCRC 19750
NOTIF 726 1 POWER_STATE_CHANGE 19751
DEBUG 726 1 ADVICE: USBPD_DPM_Notification:90 19752
NOTIF 726 1 REQUEST_ACCEPTED 19753
DEBUG 726 1 ADVICE: USBPD_DPM_Notification:1 19754
PE 726 1 PE_SNK_TRANSITION_SNK 19755
IN 1022 1 SOP PD3 PS_RDY s:002 H:0x05A6 (id:2, DR:DFP, PR:SRC) 19756
OUT 1022 1 SOP s:002 H:0x0481 (id:2, DR:UFP, PR:SNK) GOODCRC 19757
NOTIF 1022 1 POWER_STATE_CHANGE 19758
DEBUG 1022 1 ADVICE: USBPD_DPM_Notification:90 19759
NOTIF 1023 1 POWER_EXPLICIT_CONTRACT 19760
DEBUG 1023 1 USB voltage: 20133 mV 19761
PE 1023 1 PE_STATE_READY 19762
NOTIF 1023 1 STATE_SNK_READY 19763
DEBUG 1023 1 ADVICE: USBPD_DPM_Notification:32 19764
PE 1023 1 PE_STATE_SEND_EPRMODE 19765
DEBUG 1023 1 ADVICE: update USBPD_DPM_GetDataInfo:30 19766
OUT 1023 1 SOP s:006 PD3 H:0x128A (id:1, DR:UFP, PR:SNK) EPR_MODE
EPR_MODE : 01000000
Action: 01
0x01 Enter Sink only
0x02 Enter Acknowledged Source only
0x03 Enter Succeeded Source only
0x04 Enter Failed Source only
0x05 Exit Sink or Source
Data: 00
0x00 - Unknown cause
0x01 - Cable not EPR capable
0x02 - Source failed to become VCONN source
0x03 - EPR Mode Capable bit not set in RDO
0x04 - Source unable to enter EPR Mode at this time
0x05 - EPR Mode Capable bit not set in PDO
19767
IN 1024 1 SOP s:002 H:0x03A1 (id:1, DR:DFP, PR:SRC) GOODCRC 19768
PE 1024 1 PE_STATE_WAIT_EPRMODE_ACK 19769
IN 1025 1 SOP s:006 PD3 H:0x17AA (id:3, DR:DFP, PR:SRC) EPR_MODE
EPR_MODE : 02000000
Action: 02
0x01 Enter Sink only
0x02 Enter Acknowledged Source only
0x03 Enter Succeeded Source only
0x04 Enter Failed Source only
0x05 Exit Sink or Source
Data: 00
0x00 - Unknown cause
0x01 - Cable not EPR capable
0x02 - Source failed to become VCONN source
0x03 - EPR Mode Capable bit not set in RDO
0x04 - Source unable to enter EPR Mode at this time
0x05 - EPR Mode Capable bit not set in PDO
19770
OUT 1025 1 SOP s:002 H:0x0681 (id:3, DR:UFP, PR:SNK) GOODCRC 19771
DEBUG 1026 1 ADVICE: update USBPD_DPM_SetDataInfo:23 19772
NOTIF 1026 1 NOTIFY_EPRMODE_ACK 19773
DEBUG 1026 1 ADVICE: USBPD_DPM_Notification:113 19774
IN 1041 1 SOP s:006 PD3 H:0x11AA (id:0, DR:DFP, PR:SRC) EPR_MODE
EPR_MODE : 03000000
Action: 03
0x01 Enter Sink only
0x02 Enter Acknowledged Source only
0x03 Enter Succeeded Source only
0x04 Enter Failed Source only
0x05 Exit Sink or Source
Data: 00
0x00 - Unknown cause
0x01 - Cable not EPR capable
0x02 - Source failed to become VCONN source
0x03 - EPR Mode Capable bit not set in RDO
0x04 - Source unable to enter EPR Mode at this time
0x05 - EPR Mode Capable bit not set in PDO
19775
OUT 1041 1 SOP s:002 H:0x0081 (id:0, DR:UFP, PR:SNK) GOODCRC 19776
PE 1042 1 PE_STATE_WAIT_EPRMODE_STATUS 19777
DEBUG 1042 1 ADVICE: update USBPD_DPM_SetDataInfo:23 19778
NOTIF 1042 1 NOTIFY_EPRMODE_SUCCEEDED 19779
DEBUG 1042 1 ADVICE: USBPD_DPM_Notification:114 19780
PE 1042 1 PE_SNK_WAIT_FOR_CAPABILITIES 19781
IN 1044 1 SOP s:030 PD3 H:0xF3B1 (id:1, DR:DFP, PR:SRC) EXT_EPR_SOURCE_CAPA EXT:CNu0Ch1CReq0DSiz32 [ CHUNK BEGIN ] DATA: 2C9181282CD102002CC103002CB10400F44106003C21DCC03C21 19782
OUT 1044 1 SOP s:002 H:0x0281 (id:1, DR:UFP, PR:SNK) GOODCRC 19783
OUT 1045 1 SOP s:006 PD3 H:0x9491 (id:2, DR:UFP, PR:SNK) EXT_EPR_SOURCE_CAPA EXT:CNu1Ch1CReq1DSiz0 DATA: 0000 19784
IN 1047 1 SOP s:002 H:0x05A1 (id:2, DR:DFP, PR:SRC) GOODCRC 19785
IN 1049 1 SOP s:014 PD3 H:0xB5B1 (id:2, DR:DFP, PR:SRC) EXT_EPR_SOURCE_CAPA EXT:CNu1Ch1CReq0DSiz36 [ CHUNK END ]
EPR SOURCE CAPA

[1] Fixed : 5V - 3A
[2] Fixed : 9V - 3A
[3] Fixed : 12V - 3A
[4] Fixed : 15V - 3A
[5] Fixed : 20V - 5A
[6] EPR : [11V - 3.3V] - 60W
[7] EPR : [21V - 3.3V] - 60W
[8] Fixed : 28V - 5A
[9] EPR : [28V - 15V] - 140W
DATA: A4C1F4C188008C9630D2 19786
OUT 1049 1 SOP s:002 H:0x0481 (id:2, DR:UFP, PR:SNK) GOODCRC 19787
DEBUG 1049 1 Received: 28 bytes 19788
DEBUG 1050 1 PDO[1] = 5000 mV, 3000 mA, 15 W 19789
DEBUG 1050 1 PDO[2] = 9000 mV, 3000 mA, 27 W 19790
DEBUG 1050 1 PDO[3] = 12000 mV, 3000 mA, 36 W 19791
DEBUG 1050 1 PDO[4] = 15000 mV, 3000 mA, 45 W 19792
DEBUG 1050 1 PDO[5] = 20000 mV, 5000 mA, 100 W 19793
DEBUG 1050 1 APDO [6] - max voltage: 11000 mV 19794
DEBUG 1050 1 APDO [7] - max voltage: 21000 mV 19795
DEBUG 1051 1 EPR - received: 4 bytes, 1 PDOs 19796
DEBUG 1051 1 x: 1 - EPR: 0xD230968C 19797
DEBUG 1051 1 EPR: 140 W, Max 28 V 19798
DEBUG 1051 1 0xD230968C 19799
DEBUG 1051 1 EPR AVS - max voltage: 28000 mV 19800
PE 1051 1 PE_SNK_EVALUATE_CAPABILITY 19801
DEBUG 1052 1 Evaluate capabilities... 19802
DEBUG 1052 1 AVS mode 19803
DEBUG 1052 1 RDO after evaluation: 0x90478064 19804
PE 1052 1 PE_SNK_SEND_REQUEST 19805
OUT 1052 1 SOP PD3 EPR_REQUEST s:010 H:0x2689 (id:3, DR:UFP, PR:SNK) DATA: 648047908C9630D2
ObjectPosition:1
GiveBack:0
CapabilityMismatch:0
USBCommunicationCapable:0
NoUSBSuspend:0
UnchunkedExtendedMessagesSupported:0
MaximumOperatingCurrent:1000mA
OperatingCurrent:4800mA 19806
IN 1053 1 SOP s:002 H:0x07A1 (id:3, DR:DFP, PR:SRC) GOODCRC 19807
PE 1053 1 PE_SNK_SELECT_CAPABILITY 19808
IN 1055 1 SOP PD3 ACCEPT s:002 H:0x07A3 (id:3, DR:DFP, PR:SRC) 19809
OUT 1055 1 SOP s:002 H:0x0681 (id:3, DR:UFP, PR:SNK) GOODCRC 19810
NOTIF 1056 1 POWER_STATE_CHANGE 19811
DEBUG 1056 1 ADVICE: USBPD_DPM_Notification:90 19812
NOTIF 1056 1 REQUEST_ACCEPTED 19813
DEBUG 1056 1 ADVICE: USBPD_DPM_Notification:1 19814
PE 1056 1 PE_SNK_TRANSITION_SNK 19815
IN 1350 1 SOP PD3 PS_RDY s:002 H:0x09A6 (id:4, DR:DFP, PR:SRC) 19816
OUT 1350 1 SOP s:002 H:0x0881 (id:4, DR:UFP, PR:SNK) GOODCRC 19817
NOTIF 1351 1 POWER_STATE_CHANGE 19818
DEBUG 1351 1 ADVICE: USBPD_DPM_Notification:90 19819
NOTIF 1351 1 POWER_EXPLICIT_CONTRACT 19820
DEBUG 1351 1 USB voltage: 24119 mV 19821
PE 1351 1 PE_STATE_READY 19822
NOTIF 1351 1 STATE_SNK_READY 19823
DEBUG 1351 1 ADVICE: USBPD_DPM_Notification:32 19824
PE 1351 1 PE_STATE_READY_WAIT 19825
NOTIF 1725 1 ERROR with Trace_Notif :78 19826
DEBUG 1725 1 ADVICE: USBPD_DPM_Notification:120 19827
PE 1826 1 PE_STATE_SEND_EPRKEEPALIVE 19828
DEBUG 1826 1 INIT CHUNK 19829
DEBUG 1826 1 SEND UNCHUNK 19830
IN 1827 1 SOP s:002 H:0x09A1 (id:4, DR:DFP, PR:SRC) GOODCRC 19831
OUT 1828 1 SOP s:002 H:0x0A81 (id:5, DR:UFP, PR:SNK) GOODCRC 19832
PE 1828 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19833
PE 1828 1 PE_STATE_READY 19834
NOTIF 1830 1 STATE_SNK_READY 19835
DEBUG 1830 1 ADVICE: USBPD_DPM_Notification:32 19836
PE 1830 1 PE_STATE_READY_WAIT 19837
PE 2305 1 PE_STATE_SEND_EPRKEEPALIVE 19838
DEBUG 2305 1 INIT CHUNK 19839
DEBUG 2305 1 SEND UNCHUNK 19840
IN 2306 1 SOP s:002 H:0x0BA1 (id:5, DR:DFP, PR:SRC) GOODCRC 19841
OUT 2307 1 SOP s:002 H:0x0C81 (id:6, DR:UFP, PR:SNK) GOODCRC 19842
PE 2307 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19843
PE 2307 1 PE_STATE_READY 19844
NOTIF 2309 1 STATE_SNK_READY 19845
DEBUG 2309 1 ADVICE: USBPD_DPM_Notification:32 19846
PE 2309 1 PE_STATE_READY_WAIT 19847
PE 2784 1 PE_STATE_SEND_EPRKEEPALIVE 19848
DEBUG 2784 1 INIT CHUNK 19849
DEBUG 2784 1 SEND UNCHUNK 19850
IN 2785 1 SOP s:002 H:0x0DA1 (id:6, DR:DFP, PR:SRC) GOODCRC 19851
OUT 2786 1 SOP s:002 H:0x0E81 (id:7, DR:UFP, PR:SNK) GOODCRC 19852
PE 2786 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19853
PE 2786 1 PE_STATE_READY 19854
NOTIF 2788 1 STATE_SNK_READY 19855
DEBUG 2788 1 ADVICE: USBPD_DPM_Notification:32 19856
PE 2788 1 PE_STATE_READY_WAIT 19857
PE 3263 1 PE_STATE_SEND_EPRKEEPALIVE 19858
DEBUG 3263 1 INIT CHUNK 19859
DEBUG 3263 1 SEND UNCHUNK 19860
IN 3264 1 SOP s:002 H:0x0FA1 (id:7, DR:DFP, PR:SRC) GOODCRC 19861
OUT 3265 1 SOP s:002 H:0x0081 (id:0, DR:UFP, PR:SNK) GOODCRC 19862
PE 3266 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19863
PE 3266 1 PE_STATE_READY 19864
NOTIF 3267 1 STATE_SNK_READY 19865
DEBUG 3267 1 ADVICE: USBPD_DPM_Notification:32 19866
PE 3267 1 PE_STATE_READY_WAIT 19867
PE 3742 1 PE_STATE_SEND_EPRKEEPALIVE 19868
DEBUG 3742 1 INIT CHUNK 19869
DEBUG 3742 1 SEND UNCHUNK 19870
IN 3743 1 SOP s:002 H:0x01A1 (id:0, DR:DFP, PR:SRC) GOODCRC 19871
OUT 3744 1 SOP s:002 H:0x0281 (id:1, DR:UFP, PR:SNK) GOODCRC 19872
PE 3744 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19873
PE 3744 1 PE_STATE_READY 19874
NOTIF 3746 1 STATE_SNK_READY 19875
DEBUG 3746 1 ADVICE: USBPD_DPM_Notification:32 19876
PE 3746 1 PE_STATE_READY_WAIT 19877
PE 4221 1 PE_STATE_SEND_EPRKEEPALIVE 19878
DEBUG 4221 1 INIT CHUNK 19879
DEBUG 4221 1 SEND UNCHUNK 19880
IN 4222 1 SOP s:002 H:0x03A1 (id:1, DR:DFP, PR:SRC) GOODCRC 19881
OUT 4223 1 SOP s:002 H:0x0481 (id:2, DR:UFP, PR:SNK) GOODCRC 19882
PE 4224 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19883
PE 4224 1 PE_STATE_READY 19884
NOTIF 4225 1 STATE_SNK_READY 19885
DEBUG 4225 1 ADVICE: USBPD_DPM_Notification:32 19886
PE 4225 1 PE_STATE_READY_WAIT 19887
PE 4700 1 PE_STATE_SEND_EPRKEEPALIVE 19888
DEBUG 4700 1 INIT CHUNK 19889
DEBUG 4700 1 SEND UNCHUNK 19890
IN 4701 1 SOP s:002 H:0x05A1 (id:2, DR:DFP, PR:SRC) GOODCRC 19891
OUT 4702 1 SOP s:002 H:0x0681 (id:3, DR:UFP, PR:SNK) GOODCRC 19892
PE 4703 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19893
PE 4703 1 PE_STATE_READY 19894
NOTIF 4704 1 STATE_SNK_READY 19895
DEBUG 4704 1 ADVICE: USBPD_DPM_Notification:32 19896
PE 4704 1 PE_STATE_READY_WAIT 19897
PE 5179 1 PE_STATE_SEND_EPRKEEPALIVE 19898
DEBUG 5179 1 INIT CHUNK 19899
DEBUG 5179 1 SEND UNCHUNK 19900
IN 5180 1 SOP s:002 H:0x07A1 (id:3, DR:DFP, PR:SRC) GOODCRC 19901
OUT 5181 1 SOP s:002 H:0x0881 (id:4, DR:UFP, PR:SNK) GOODCRC 19902
PE 5182 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19903
PE 5182 1 PE_STATE_READY 19904
NOTIF 5183 1 STATE_SNK_READY 19905
DEBUG 5183 1 ADVICE: USBPD_DPM_Notification:32 19906
PE 5183 1 PE_STATE_READY_WAIT 19907
PE 5658 1 PE_STATE_SEND_EPRKEEPALIVE 19908
DEBUG 5658 1 INIT CHUNK 19909
DEBUG 5658 1 SEND UNCHUNK 19910
IN 5659 1 SOP s:002 H:0x09A1 (id:4, DR:DFP, PR:SRC) GOODCRC 19911
OUT 5660 1 SOP s:002 H:0x0A81 (id:5, DR:UFP, PR:SNK) GOODCRC 19912
PE 5661 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19913
PE 5661 1 PE_STATE_READY 19914
NOTIF 5662 1 STATE_SNK_READY 19915
DEBUG 5662 1 ADVICE: USBPD_DPM_Notification:32 19916
PE 5662 1 PE_STATE_READY_WAIT 19917
PE 6137 1 PE_STATE_SEND_EPRKEEPALIVE 19918
DEBUG 6137 1 INIT CHUNK 19919
DEBUG 6137 1 SEND UNCHUNK 19920
IN 6138 1 SOP s:002 H:0x0BA1 (id:5, DR:DFP, PR:SRC) GOODCRC 19921
OUT 6139 1 SOP s:002 H:0x0C81 (id:6, DR:UFP, PR:SNK) GOODCRC 19922
PE 6140 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19923
PE 6140 1 PE_STATE_READY 19924
NOTIF 6141 1 STATE_SNK_READY 19925
DEBUG 6141 1 ADVICE: USBPD_DPM_Notification:32 19926
PE 6141 1 PE_STATE_READY_WAIT 19927
PE 6616 1 PE_STATE_SEND_EPRKEEPALIVE 19928
DEBUG 6616 1 INIT CHUNK 19929
DEBUG 6616 1 SEND UNCHUNK 19930
IN 6617 1 SOP s:002 H:0x0DA1 (id:6, DR:DFP, PR:SRC) GOODCRC 19931
OUT 6618 1 SOP s:002 H:0x0E81 (id:7, DR:UFP, PR:SNK) GOODCRC 19932
PE 6619 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19933
PE 6619 1 PE_STATE_READY 19934
NOTIF 6620 1 STATE_SNK_READY 19935
DEBUG 6620 1 ADVICE: USBPD_DPM_Notification:32 19936
PE 6620 1 PE_STATE_READY_WAIT 19937
PE 7095 1 PE_STATE_SEND_EPRKEEPALIVE 19938
DEBUG 7095 1 INIT CHUNK 19939
DEBUG 7095 1 SEND UNCHUNK 19940
IN 7096 1 SOP s:002 H:0x0FA1 (id:7, DR:DFP, PR:SRC) GOODCRC 19941
OUT 7097 1 SOP s:002 H:0x0081 (id:0, DR:UFP, PR:SNK) GOODCRC 19942
PE 7097 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19943
PE 7098 1 PE_STATE_READY 19944
NOTIF 7099 1 STATE_SNK_READY 19945
DEBUG 7099 1 ADVICE: USBPD_DPM_Notification:32 19946
PE 7099 1 PE_STATE_READY_WAIT 19947
PE 7574 1 PE_STATE_SEND_EPRKEEPALIVE 19948
DEBUG 7574 1 INIT CHUNK 19949
DEBUG 7574 1 SEND UNCHUNK 19950
IN 7575 1 SOP s:002 H:0x01A1 (id:0, DR:DFP, PR:SRC) GOODCRC 19951
OUT 7576 1 SOP s:002 H:0x0281 (id:1, DR:UFP, PR:SNK) GOODCRC 19952
PE 7576 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19953
PE 7576 1 PE_STATE_READY 19954
NOTIF 7578 1 STATE_SNK_READY 19955
DEBUG 7578 1 ADVICE: USBPD_DPM_Notification:32 19956
PE 7578 1 PE_STATE_READY_WAIT 19957
PE 8053 1 PE_STATE_SEND_EPRKEEPALIVE 19958
DEBUG 8053 1 INIT CHUNK 19959
DEBUG 8053 1 SEND UNCHUNK 19960
IN 8054 1 SOP s:002 H:0x03A1 (id:1, DR:DFP, PR:SRC) GOODCRC 19961
OUT 8055 1 SOP s:002 H:0x0481 (id:2, DR:UFP, PR:SNK) GOODCRC 19962
PE 8056 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19963
PE 8056 1 PE_STATE_READY 19964
NOTIF 8057 1 STATE_SNK_READY 19965
DEBUG 8057 1 ADVICE: USBPD_DPM_Notification:32 19966
PE 8057 1 PE_STATE_READY_WAIT 19967
PE 8532 1 PE_STATE_SEND_EPRKEEPALIVE 19968
DEBUG 8532 1 INIT CHUNK 19969
DEBUG 8532 1 SEND UNCHUNK 19970
IN 8533 1 SOP s:002 H:0x05A1 (id:2, DR:DFP, PR:SRC) GOODCRC 19971
OUT 8534 1 SOP s:002 H:0x0681 (id:3, DR:UFP, PR:SNK) GOODCRC 19972
PE 8534 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19973
PE 8535 1 PE_STATE_READY 19974
NOTIF 8536 1 STATE_SNK_READY 19975
DEBUG 8536 1 ADVICE: USBPD_DPM_Notification:32 19976
PE 8536 1 PE_STATE_READY_WAIT 19977
PE 9011 1 PE_STATE_SEND_EPRKEEPALIVE 19978
DEBUG 9011 1 INIT CHUNK 19979
DEBUG 9011 1 SEND UNCHUNK 19980
IN 9012 1 SOP s:002 H:0x07A1 (id:3, DR:DFP, PR:SRC) GOODCRC 19981
OUT 9013 1 SOP s:002 H:0x0881 (id:4, DR:UFP, PR:SNK) GOODCRC 19982
PE 9014 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19983
PE 9014 1 PE_STATE_READY 19984
NOTIF 9015 1 STATE_SNK_READY 19985
DEBUG 9015 1 ADVICE: USBPD_DPM_Notification:32 19986
PE 9015 1 PE_STATE_READY_WAIT 19987
PE 9490 1 PE_STATE_SEND_EPRKEEPALIVE 19988
DEBUG 9490 1 INIT CHUNK 19989
DEBUG 9490 1 SEND UNCHUNK 19990
IN 9491 1 SOP s:002 H:0x09A1 (id:4, DR:DFP, PR:SRC) GOODCRC 19991
OUT 9492 1 SOP s:002 H:0x0A81 (id:5, DR:UFP, PR:SNK) GOODCRC 19992
PE 9492 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 19993
PE 9492 1 PE_STATE_READY 19994
NOTIF 9494 1 STATE_SNK_READY 19995
DEBUG 9494 1 ADVICE: USBPD_DPM_Notification:32 19996
PE 9494 1 PE_STATE_READY_WAIT 19997
PE 9969 1 PE_STATE_SEND_EPRKEEPALIVE 19998
DEBUG 9969 1 INIT CHUNK 19999
DEBUG 9969 1 SEND UNCHUNK 20000
IN 9970 1 SOP s:002 H:0x0BA1 (id:5, DR:DFP, PR:SRC) GOODCRC 20001
OUT 9971 1 SOP s:002 H:0x0C81 (id:6, DR:UFP, PR:SNK) GOODCRC 20002
PE 9971 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20003
PE 9971 1 PE_STATE_READY 20004
NOTIF 9973 1 STATE_SNK_READY 20005
DEBUG 9973 1 ADVICE: USBPD_DPM_Notification:32 20006
PE 9973 1 PE_STATE_READY_WAIT 20007
PE 10448 1 PE_STATE_SEND_EPRKEEPALIVE 20008
DEBUG 10448 1 INIT CHUNK 20009
DEBUG 10448 1 SEND UNCHUNK 20010
IN 10449 1 SOP s:002 H:0x0DA1 (id:6, DR:DFP, PR:SRC) GOODCRC 20011
OUT 10450 1 SOP s:002 H:0x0E81 (id:7, DR:UFP, PR:SNK) GOODCRC 20012
PE 10451 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20013
PE 10451 1 PE_STATE_READY 20014
NOTIF 10452 1 STATE_SNK_READY 20015
DEBUG 10452 1 ADVICE: USBPD_DPM_Notification:32 20016
PE 10452 1 PE_STATE_READY_WAIT 20017
PE 10927 1 PE_STATE_SEND_EPRKEEPALIVE 20018
DEBUG 10927 1 INIT CHUNK 20019
DEBUG 10927 1 SEND UNCHUNK 20020
IN 10928 1 SOP s:002 H:0x0FA1 (id:7, DR:DFP, PR:SRC) GOODCRC 20021
OUT 10929 1 SOP s:002 H:0x0081 (id:0, DR:UFP, PR:SNK) GOODCRC 20022
PE 10930 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20023
PE 10930 1 PE_STATE_READY 20024
NOTIF 10931 1 STATE_SNK_READY 20025
DEBUG 10931 1 ADVICE: USBPD_DPM_Notification:32 20026
PE 10931 1 PE_STATE_READY_WAIT 20027
PE 11406 1 PE_STATE_SEND_EPRKEEPALIVE 20028
DEBUG 11406 1 INIT CHUNK 20029
DEBUG 11406 1 SEND UNCHUNK 20030
IN 11407 1 SOP s:002 H:0x01A1 (id:0, DR:DFP, PR:SRC) GOODCRC 20031
OUT 11408 1 SOP s:002 H:0x0281 (id:1, DR:UFP, PR:SNK) GOODCRC 20032
PE 11409 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20033
PE 11409 1 PE_STATE_READY 20034
NOTIF 11410 1 STATE_SNK_READY 20035
DEBUG 11410 1 ADVICE: USBPD_DPM_Notification:32 20036
PE 11410 1 PE_STATE_READY_WAIT 20037
PE 11885 1 PE_STATE_SEND_EPRKEEPALIVE 20038
DEBUG 11885 1 INIT CHUNK 20039
DEBUG 11885 1 SEND UNCHUNK 20040
IN 11886 1 SOP s:002 H:0x03A1 (id:1, DR:DFP, PR:SRC) GOODCRC 20041
OUT 11887 1 SOP s:002 H:0x0481 (id:2, DR:UFP, PR:SNK) GOODCRC 20042
PE 11888 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20043
PE 11888 1 PE_STATE_READY 20044
NOTIF 11889 1 STATE_SNK_READY 20045
DEBUG 11889 1 ADVICE: USBPD_DPM_Notification:32 20046
PE 11889 1 PE_STATE_READY_WAIT 20047
PE 12364 1 PE_STATE_SEND_EPRKEEPALIVE 20048
DEBUG 12364 1 INIT CHUNK 20049
DEBUG 12364 1 SEND UNCHUNK 20050
IN 12365 1 SOP s:002 H:0x05A1 (id:2, DR:DFP, PR:SRC) GOODCRC 20051
OUT 12366 1 SOP s:002 H:0x0681 (id:3, DR:UFP, PR:SNK) GOODCRC 20052
PE 12366 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20053
PE 12367 1 PE_STATE_READY 20054
NOTIF 12368 1 STATE_SNK_READY 20055
DEBUG 12368 1 ADVICE: USBPD_DPM_Notification:32 20056
PE 12368 1 PE_STATE_READY_WAIT 20057
PE 12843 1 PE_STATE_SEND_EPRKEEPALIVE 20058
DEBUG 12843 1 INIT CHUNK 20059
DEBUG 12843 1 SEND UNCHUNK 20060
IN 12844 1 SOP s:002 H:0x07A1 (id:3, DR:DFP, PR:SRC) GOODCRC 20061
OUT 12845 1 SOP s:002 H:0x0881 (id:4, DR:UFP, PR:SNK) GOODCRC 20062
PE 12845 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20063
PE 12845 1 PE_STATE_READY 20064
NOTIF 12847 1 STATE_SNK_READY 20065
DEBUG 12847 1 ADVICE: USBPD_DPM_Notification:32 20066
PE 12847 1 PE_STATE_READY_WAIT 20067
PE 13322 1 PE_STATE_SEND_EPRKEEPALIVE 20068
DEBUG 13322 1 INIT CHUNK 20069
DEBUG 13322 1 SEND UNCHUNK 20070
IN 13323 1 SOP s:002 H:0x09A1 (id:4, DR:DFP, PR:SRC) GOODCRC 20071
OUT 13324 1 SOP s:002 H:0x0A81 (id:5, DR:UFP, PR:SNK) GOODCRC 20072
PE 13324 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20073
PE 13324 1 PE_STATE_READY 20074
NOTIF 13326 1 STATE_SNK_READY 20075
DEBUG 13326 1 ADVICE: USBPD_DPM_Notification:32 20076
PE 13326 1 PE_STATE_READY_WAIT 20077
PE 13801 1 PE_STATE_SEND_EPRKEEPALIVE 20078
DEBUG 13801 1 INIT CHUNK 20079
DEBUG 13801 1 SEND UNCHUNK 20080
IN 13802 1 SOP s:002 H:0x0BA1 (id:5, DR:DFP, PR:SRC) GOODCRC 20081
OUT 13803 1 SOP s:002 H:0x0C81 (id:6, DR:UFP, PR:SNK) GOODCRC 20082
PE 13803 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20083
PE 13803 1 PE_STATE_READY 20084
NOTIF 13805 1 STATE_SNK_READY 20085
DEBUG 13805 1 ADVICE: USBPD_DPM_Notification:32 20086
PE 13805 1 PE_STATE_READY_WAIT 20087
PE 14280 1 PE_STATE_SEND_EPRKEEPALIVE 20088
DEBUG 14280 1 INIT CHUNK 20089
DEBUG 14280 1 SEND UNCHUNK 20090
IN 14281 1 SOP s:002 H:0x0DA1 (id:6, DR:DFP, PR:SRC) GOODCRC 20091
OUT 14282 1 SOP s:002 H:0x0E81 (id:7, DR:UFP, PR:SNK) GOODCRC 20092
PE 14283 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20093
PE 14283 1 PE_STATE_READY 20094
NOTIF 14284 1 STATE_SNK_READY 20095
DEBUG 14284 1 ADVICE: USBPD_DPM_Notification:32 20096
PE 14284 1 PE_STATE_READY_WAIT 20097
PE 14759 1 PE_STATE_SEND_EPRKEEPALIVE 20098
DEBUG 14759 1 INIT CHUNK 20099
DEBUG 14759 1 SEND UNCHUNK 20100
IN 14760 1 SOP s:002 H:0x0FA1 (id:7, DR:DFP, PR:SRC) GOODCRC 20101
OUT 14761 1 SOP s:002 H:0x0081 (id:0, DR:UFP, PR:SNK) GOODCRC 20102
PE 14761 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20103
PE 14761 1 PE_STATE_READY 20104
NOTIF 14763 1 STATE_SNK_READY 20105
DEBUG 14763 1 ADVICE: USBPD_DPM_Notification:32 20106
PE 14763 1 PE_STATE_READY_WAIT 20107
PE 15238 1 PE_STATE_SEND_EPRKEEPALIVE 20108
DEBUG 15238 1 INIT CHUNK 20109
DEBUG 15238 1 SEND UNCHUNK 20110
IN 15239 1 SOP s:002 H:0x01A1 (id:0, DR:DFP, PR:SRC) GOODCRC 20111
OUT 15240 1 SOP s:002 H:0x0281 (id:1, DR:UFP, PR:SNK) GOODCRC 20112
PE 15241 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20113
PE 15241 1 PE_STATE_READY 20114
NOTIF 15242 1 STATE_SNK_READY 20115
DEBUG 15242 1 ADVICE: USBPD_DPM_Notification:32 20116
PE 15242 1 PE_STATE_READY_WAIT 20117
PE 15717 1 PE_STATE_SEND_EPRKEEPALIVE 20118
DEBUG 15717 1 INIT CHUNK 20119
DEBUG 15717 1 SEND UNCHUNK 20120
IN 15718 1 SOP s:002 H:0x03A1 (id:1, DR:DFP, PR:SRC) GOODCRC 20121
OUT 15719 1 SOP s:002 H:0x0481 (id:2, DR:UFP, PR:SNK) GOODCRC 20122
PE 15720 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20123
PE 15720 1 PE_STATE_READY 20124
NOTIF 15721 1 STATE_SNK_READY 20125
DEBUG 15721 1 ADVICE: USBPD_DPM_Notification:32 20126
PE 15721 1 PE_STATE_READY_WAIT 20127
PE 16196 1 PE_STATE_SEND_EPRKEEPALIVE 20128
DEBUG 16196 1 INIT CHUNK 20129
DEBUG 16196 1 SEND UNCHUNK 20130
IN 16197 1 SOP s:002 H:0x05A1 (id:2, DR:DFP, PR:SRC) GOODCRC 20131
OUT 16198 1 SOP s:002 H:0x0681 (id:3, DR:UFP, PR:SNK) GOODCRC 20132
PE 16199 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20133
PE 16199 1 PE_STATE_READY 20134
NOTIF 16200 1 STATE_SNK_READY 20135
DEBUG 16200 1 ADVICE: USBPD_DPM_Notification:32 20136
PE 16200 1 PE_STATE_READY_WAIT 20137
PE 16675 1 PE_STATE_SEND_EPRKEEPALIVE 20138
DEBUG 16675 1 INIT CHUNK 20139
DEBUG 16675 1 SEND UNCHUNK 20140
IN 16676 1 SOP s:002 H:0x07A1 (id:3, DR:DFP, PR:SRC) GOODCRC 20141
OUT 16677 1 SOP s:002 H:0x0881 (id:4, DR:UFP, PR:SNK) GOODCRC 20142
PE 16677 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20143
PE 16677 1 PE_STATE_READY 20144
NOTIF 16679 1 STATE_SNK_READY 20145
DEBUG 16679 1 ADVICE: USBPD_DPM_Notification:32 20146
PE 16679 1 PE_STATE_READY_WAIT 20147
PE 17154 1 PE_STATE_SEND_EPRKEEPALIVE 20148
DEBUG 17154 1 INIT CHUNK 20149
DEBUG 17154 1 SEND UNCHUNK 20150
IN 17155 1 SOP s:002 H:0x09A1 (id:4, DR:DFP, PR:SRC) GOODCRC 20151
OUT 17156 1 SOP s:002 H:0x0A81 (id:5, DR:UFP, PR:SNK) GOODCRC 20152
PE 17156 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20153
PE 17156 1 PE_STATE_READY 20154
NOTIF 17158 1 STATE_SNK_READY 20155
DEBUG 17158 1 ADVICE: USBPD_DPM_Notification:32 20156
PE 17158 1 PE_STATE_READY_WAIT 20157
PE 17633 1 PE_STATE_SEND_EPRKEEPALIVE 20158
DEBUG 17633 1 INIT CHUNK 20159
DEBUG 17633 1 SEND UNCHUNK 20160
IN 17634 1 SOP s:002 H:0x0BA1 (id:5, DR:DFP, PR:SRC) GOODCRC 20161
OUT 17635 1 SOP s:002 H:0x0C81 (id:6, DR:UFP, PR:SNK) GOODCRC 20162
PE 17635 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20163
PE 17635 1 PE_STATE_READY 20164
NOTIF 17637 1 STATE_SNK_READY 20165
DEBUG 17637 1 ADVICE: USBPD_DPM_Notification:32 20166
PE 17637 1 PE_STATE_READY_WAIT 20167
PE 18112 1 PE_STATE_SEND_EPRKEEPALIVE 20168
DEBUG 18112 1 INIT CHUNK 20169
DEBUG 18112 1 SEND UNCHUNK 20170
IN 18113 1 SOP s:002 H:0x0DA1 (id:6, DR:DFP, PR:SRC) GOODCRC 20171
OUT 18114 1 SOP s:002 H:0x0E81 (id:7, DR:UFP, PR:SNK) GOODCRC 20172
PE 18114 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20173
PE 18114 1 PE_STATE_READY 20174
NOTIF 18116 1 STATE_SNK_READY 20175
DEBUG 18116 1 ADVICE: USBPD_DPM_Notification:32 20176
PE 18116 1 PE_STATE_READY_WAIT 20177
PE 18591 1 PE_STATE_SEND_EPRKEEPALIVE 20178
DEBUG 18591 1 INIT CHUNK 20179
DEBUG 18591 1 SEND UNCHUNK 20180
IN 18592 1 SOP s:002 H:0x0FA1 (id:7, DR:DFP, PR:SRC) GOODCRC 20181
OUT 18593 1 SOP s:002 H:0x0081 (id:0, DR:UFP, PR:SNK) GOODCRC 20182
PE 18594 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20183
PE 18594 1 PE_STATE_READY 20184
NOTIF 18595 1 STATE_SNK_READY 20185
DEBUG 18595 1 ADVICE: USBPD_DPM_Notification:32 20186
PE 18595 1 PE_STATE_READY_WAIT 20187
PE 19070 1 PE_STATE_SEND_EPRKEEPALIVE 20188
DEBUG 19070 1 INIT CHUNK 20189
DEBUG 19070 1 SEND UNCHUNK 20190
IN 19071 1 SOP s:002 H:0x01A1 (id:0, DR:DFP, PR:SRC) GOODCRC 20191
OUT 19072 1 SOP s:002 H:0x0281 (id:1, DR:UFP, PR:SNK) GOODCRC 20192
PE 19073 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20193
PE 19073 1 PE_STATE_READY 20194
NOTIF 19074 1 STATE_SNK_READY 20195
DEBUG 19074 1 ADVICE: USBPD_DPM_Notification:32 20196
PE 19074 1 PE_STATE_READY_WAIT 20197
PE 19549 1 PE_STATE_SEND_EPRKEEPALIVE 20198
DEBUG 19549 1 INIT CHUNK 20199
DEBUG 19549 1 SEND UNCHUNK 20200
IN 19550 1 SOP s:002 H:0x03A1 (id:1, DR:DFP, PR:SRC) GOODCRC 20201
OUT 19551 1 SOP s:002 H:0x0481 (id:2, DR:UFP, PR:SNK) GOODCRC 20202
PE 19552 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20203
PE 19552 1 PE_STATE_READY 20204
NOTIF 19553 1 STATE_SNK_READY 20205
DEBUG 19553 1 ADVICE: USBPD_DPM_Notification:32 20206
PE 19553 1 PE_STATE_READY_WAIT 20207
PE 20028 1 PE_STATE_SEND_EPRKEEPALIVE 20208
DEBUG 20028 1 INIT CHUNK 20209
DEBUG 20028 1 SEND UNCHUNK 20210
IN 20029 1 SOP s:002 H:0x05A1 (id:2, DR:DFP, PR:SRC) GOODCRC 20211
OUT 20030 1 SOP s:002 H:0x0681 (id:3, DR:UFP, PR:SNK) GOODCRC 20212
PE 20031 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20213
PE 20031 1 PE_STATE_READY 20214
NOTIF 20032 1 STATE_SNK_READY 20215
DEBUG 20032 1 ADVICE: USBPD_DPM_Notification:32 20216
PE 20032 1 PE_STATE_READY_WAIT 20217
PE 20507 1 PE_STATE_SEND_EPRKEEPALIVE 20218
DEBUG 20507 1 INIT CHUNK 20219
DEBUG 20507 1 SEND UNCHUNK 20220
IN 20508 1 SOP s:002 H:0x07A1 (id:3, DR:DFP, PR:SRC) GOODCRC 20221
OUT 20509 1 SOP s:002 H:0x0881 (id:4, DR:UFP, PR:SNK) GOODCRC 20222
PE 20509 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20223
PE 20509 1 PE_STATE_READY 20224
NOTIF 20511 1 STATE_SNK_READY 20225
DEBUG 20511 1 ADVICE: USBPD_DPM_Notification:32 20226
PE 20511 1 PE_STATE_READY_WAIT 20227
PE 20986 1 PE_STATE_SEND_EPRKEEPALIVE 20228
DEBUG 20986 1 INIT CHUNK 20229
DEBUG 20986 1 SEND UNCHUNK 20230
IN 20987 1 SOP s:002 H:0x09A1 (id:4, DR:DFP, PR:SRC) GOODCRC 20231
OUT 20988 1 SOP s:002 H:0x0A81 (id:5, DR:UFP, PR:SNK) GOODCRC 20232
PE 20989 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20233
PE 20989 1 PE_STATE_READY 20234
NOTIF 20990 1 STATE_SNK_READY 20235
DEBUG 20990 1 ADVICE: USBPD_DPM_Notification:32 20236
PE 20990 1 PE_STATE_READY_WAIT 20237
PE 21465 1 PE_STATE_SEND_EPRKEEPALIVE 20238
DEBUG 21465 1 INIT CHUNK 20239
DEBUG 21465 1 SEND UNCHUNK 20240
IN 21466 1 SOP s:002 H:0x0BA1 (id:5, DR:DFP, PR:SRC) GOODCRC 20241
OUT 21467 1 SOP s:002 H:0x0C81 (id:6, DR:UFP, PR:SNK) GOODCRC 20242
PE 21467 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20243
PE 21467 1 PE_STATE_READY 20244
NOTIF 21469 1 STATE_SNK_READY 20245
DEBUG 21469 1 ADVICE: USBPD_DPM_Notification:32 20246
PE 21469 1 PE_STATE_READY_WAIT 20247
PE 21944 1 PE_STATE_SEND_EPRKEEPALIVE 20248
DEBUG 21944 1 INIT CHUNK 20249
DEBUG 21944 1 SEND UNCHUNK 20250
IN 21945 1 SOP s:002 H:0x0DA1 (id:6, DR:DFP, PR:SRC) GOODCRC 20251
OUT 21946 1 SOP s:002 H:0x0E81 (id:7, DR:UFP, PR:SNK) GOODCRC 20252
PE 21946 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20253
PE 21946 1 PE_STATE_READY 20254
NOTIF 21948 1 STATE_SNK_READY 20255
DEBUG 21948 1 ADVICE: USBPD_DPM_Notification:32 20256
PE 21948 1 PE_STATE_READY_WAIT 20257
PE 22423 1 PE_STATE_SEND_EPRKEEPALIVE 20258
DEBUG 22423 1 INIT CHUNK 20259
DEBUG 22423 1 SEND UNCHUNK 20260
IN 22424 1 SOP s:002 H:0x0FA1 (id:7, DR:DFP, PR:SRC) GOODCRC 20261
OUT 22425 1 SOP s:002 H:0x0081 (id:0, DR:UFP, PR:SNK) GOODCRC 20262
PE 22426 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20263
PE 22426 1 PE_STATE_READY 20264
NOTIF 22427 1 STATE_SNK_READY 20265
DEBUG 22427 1 ADVICE: USBPD_DPM_Notification:32 20266
PE 22427 1 PE_STATE_READY_WAIT 20267
PE 22902 1 PE_STATE_SEND_EPRKEEPALIVE 20268
DEBUG 22902 1 INIT CHUNK 20269
DEBUG 22902 1 SEND UNCHUNK 20270
IN 22903 1 SOP s:002 H:0x01A1 (id:0, DR:DFP, PR:SRC) GOODCRC 20271
OUT 22904 1 SOP s:002 H:0x0281 (id:1, DR:UFP, PR:SNK) GOODCRC 20272
PE 22905 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20273
PE 22905 1 PE_STATE_READY 20274
NOTIF 22906 1 STATE_SNK_READY 20275
DEBUG 22906 1 ADVICE: USBPD_DPM_Notification:32 20276
PE 22906 1 PE_STATE_READY_WAIT 20277
PE 23381 1 PE_STATE_SEND_EPRKEEPALIVE 20278
DEBUG 23381 1 INIT CHUNK 20279
DEBUG 23381 1 SEND UNCHUNK 20280
IN 23382 1 SOP s:002 H:0x03A1 (id:1, DR:DFP, PR:SRC) GOODCRC 20281
OUT 23383 1 SOP s:002 H:0x0481 (id:2, DR:UFP, PR:SNK) GOODCRC 20282
PE 23384 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20283
PE 23384 1 PE_STATE_READY 20284
NOTIF 23385 1 STATE_SNK_READY 20285
DEBUG 23385 1 ADVICE: USBPD_DPM_Notification:32 20286
PE 23385 1 PE_STATE_READY_WAIT 20287
PE 23860 1 PE_STATE_SEND_EPRKEEPALIVE 20288
DEBUG 23860 1 INIT CHUNK 20289
DEBUG 23860 1 SEND UNCHUNK 20290
IN 23861 1 SOP s:002 H:0x05A1 (id:2, DR:DFP, PR:SRC) GOODCRC 20291
OUT 23862 1 SOP s:002 H:0x0681 (id:3, DR:UFP, PR:SNK) GOODCRC 20292
PE 23863 1 PE_STATE_WAIT_EPRKEEPALIVE_ACK 20293
PE 23863 1 PE_STATE_READY 20294
NOTIF 23864 1 STATE_SNK_READY 20295
DEBUG 23864 1 ADVICE: USBPD_DPM_Notification:32 20296
PE 23864 1 PE_STATE_READY_WAIT 20297

The EPR contract is OK, I have no reset and voltage 24V from source:-)

Thank You all

Best regards

Jaroslaw

18 replies

ST Technical Moderator
March 31, 2026

Hi @Jaroslaw_T 

Thank you for the question.

I'm working on new knowledge base article on How to create an EPR capable USB PD Source and Sink on STM32 using TCPP ports . For demo, VBUS is kept at 5 V even for higher SPR/EPR PDOs; only the protocol is exercised (not full EPR explicit contract).

To give better visibility on the answered topics, please click on "Best answer" on the reply which solved your issue or answered your question.Best regards,FBL
Associate II
April 3, 2026

Is any way to receive PDO and APDO greater than 21V PPS? Unfortunatelly I have in my trace messages with max APDO 21V and PDO 20V.

ST Technical Moderator
April 6, 2026

Hello @Jaroslaw_T 

You need to redefine PDO to support EPR:

uint32_t PORT0_PDO_ListSRC[USBPD_MAX_NB_PDO] =
{
#ifndef _EPR_SRC
 /* PDO 1 */ (0x00019096U),
#else /*_EPR_SRC*/
 /* PDO 1 */
 ( ((PWR_A_10MA(USBPD_CORE_PDO_SRC_FIXED_MAX_CURRENT)) << USBPD_PDO_SRC_FIXED_MAX_CURRENT_Pos) |
 ((PWR_V_50MV(5)) << USBPD_PDO_SRC_FIXED_VOLTAGE_Pos) |
 USBPD_PDO_SRC_FIXED_PEAKCURRENT_EQUAL |
#if defined(_EPR_SRC)
 USBPD_PDO_SRC_FIXED_EPR_SUPPORTED |
#endif /* _EPR_SRC */
#if defined(USBPD_REV30_SUPPORT)
#if defined(_UNCHUNKED_SUPPORT)
 USBPD_PDO_SRC_FIXED_UNCHUNK_SUPPORTED |
#else
 USBPD_PDO_SRC_FIXED_UNCHUNK_NOT_SUPPORTED |
#endif /* _UNCHUNKED_SUPPORT */
#endif /*USBPD_REV30_SUPPORT*/
 USBPD_PDO_SRC_FIXED_DRD_NOT_SUPPORTED |
#ifdef _USB_HOST
 USBPD_PDO_SRC_FIXED_USBCOMM_SUPPORTED |
#else
 USBPD_PDO_SRC_FIXED_USBCOMM_NOT_SUPPORTED |
#endif
 USBPD_PDO_SRC_FIXED_EXT_POWER_NOT_AVAILABLE | 
 USBPD_PDO_SRC_FIXED_USBSUSPEND_NOT_SUPPORTED |
 USBPD_PDO_SRC_FIXED_DRP_NOT_SUPPORTED |
 USBPD_PDO_TYPE_FIXED
 ),
 /* PDO 2 */(0x00000000U),
 /* PDO 3 */(0x00000000U),
 /* PDO 4 */(0x00000000U),
 /* PDO 5 */ (0x00000000U),
 /* PDO 6 */ (0x00000000U),
 /* PDO 7 */ (0x00000000U)
};

 

To give better visibility on the answered topics, please click on "Best answer" on the reply which solved your issue or answered your question.Best regards,FBL
Associate II
April 7, 2026

Thank You, but I have sink device, not source.

Will the USB PD stack for STM32G0 support PD3.1 (EPR mode)? I have project with STM32G0 microcontroller because of low cost and unfortunatelly I can't use other uC.

I read that X-CUBE-TCPP supports PD3.1, but how to use it without any TCPP IC? Is it posiible any way.

Associate II
April 9, 2026

Now I have downloaded the MW from github.com page: https://github.com/STMicroelectronics/stm32-mw-usbpd-core/tree/main and after the files update the EPR mode seems to be working.

In my code (usbpd_dpm_user.c):

USBPD_StatusTypeDef USBPD_DPM_UserInit(void)
{
/* USER CODE BEGIN USBPD_DPM_UserInit */
	DPM_Params[0].PE_SpecRevision=USBPD_SPECIFICATION_REV3;
	DPM_Settings[0].PE_PD3_Support.d.Is_EPR_Supported_SNK=USBPD_TRUE;
	return USBPD_OK;
/* USER CODE END USBPD_DPM_UserInit */
}

In function USBPD_DPM_Notification:

switch(EventVal)
 {
 case USBPD_NOTIFY_POWER_EXPLICIT_CONTRACT :
 {
 	USBPD_PE_Request_EPRModeEnter(PortNum);
 }
 break;

In function USBPD_DPM_SNK_EvaluateCapabilities:

USBPD_SNKRDO_TypeDef rdo;
	rdo.d32=0U;
	if(DPM_Settings[PortNum].PE_PD3_Support.d.Is_EPR_Supported_SNK==USBPD_TRUE&&DPM_Params[PortNum].PE_SpecRevision>=USBPD_SPECIFICATION_REV3)
	{
		rdo.FixedVariableRDO.EPR_Capable=1U;
	}
	else
	{
		rdo.FixedVariableRDO.EPR_Capable=0U;
	}

 

By the way - will the middleware update be officially available as an STM32Cube package update?

Associate II
April 10, 2026

Hello, I'm able to enter in EPR mode, as below:

CAD	2	1	USBPD_CAD_STATE_DETACHED	850	
CAD	4	1	USBPD_CAD_STATE_ATTACHED_WAIT	851	
CAD	123	1	USBPD_CAD_STATE_ATTACHED	852	
NOTIF	123	1	USBSTACK_START	853	
DEBUG	123	1	ADVICE: USBPD_DPM_Notification:104	854	
EVENT	123	1	EVENT_ATTACHED	855	
DEBUG	123	1	ADVICE: update USBPD_DPM_UserCableDetection	856	
DEBUG	123	1	ADVICE: update USBPD_DPM_SetDataInfo:2	857	
DEBUG	123	1	ADVICE: update USBPD_DPM_SetDataInfo:6	858	
PE	124	1	PE_SNK_STARTUP	859	
PE	124	1	PE_SNK_WAIT_FOR_CAPABILITIES	860	
IN	146	1	SOP	 PD3	s:030	 H:0x71A1 	(id:0, DR:DFP, PR:SRC) 	SRC_CAPABILITIES	DATA: 2C9181282CD102002CC103002CB10400F44106003C21DCC03C21A4C1	
Option: 	EPW	DRP	
 [1] Fixed : 5V - 3A
 [2] Fixed : 9V - 3A
 [3] Fixed : 12V - 3A
 [4] Fixed : 15V - 3A
 [5] Fixed : 20V - 5A
 [6] Programmable : [3.3V - 11V] - 3A
 [7] Programmable : [3.3V - 21V] - 3A
	861	
OUT	146	1	SOP	s:002	 H:0x0081 (id:0, DR:UFP, PR:SNK) 	GOODCRC	862	
DEBUG	147	1	Received: 28 bytes	863	
DEBUG	147	1	PDO[1] = 5000 mV, 3000 mA, 15 W	864	
DEBUG	147	1	PDO[2] = 9000 mV, 3000 mA, 27 W	865	
DEBUG	147	1	PDO[3] = 12000 mV, 3000 mA, 36 W	866	
DEBUG	148	1	PDO[4] = 15000 mV, 3000 mA, 45 W	867	
DEBUG	148	1	PDO[5] = 20000 mV, 5000 mA, 100 W	868	
DEBUG	148	1	APDO [6] - max voltage: 11000 mV	869	
DEBUG	148	1	APDO [7] - max voltage: 21000 mV	870	
PE	148	1	PE_SNK_EVALUATE_CAPABILITY	871	
PE	149	1	PE_SNK_SEND_REQUEST	872	
OUT	149	1	SOP	 PD3	REQUEST	s:006	 H:0x1082 	(id:0, DR:UFP, PR:SNK) DATA: F4D14753
ObjectPosition:5
GiveBack:0
CapabilityMismatch:0
USBCommunicationCapable:1
NoUSBSuspend:1
UnchunkedExtendedMessagesSupported:0
MaximumOperatingCurrent:5000mA
OperatingCurrent:5000mA	873	
IN	150	1	SOP	s:002	 H:0x0161 (id:0, DR:DFP, PR:SRC) 	GOODCRC	874	
PE	150	1	PE_SNK_SELECT_CAPABILITY	875	
IN	152	1	SOP	 PD3	ACCEPT	s:002	 H:0x03A3 (id:1, DR:DFP, PR:SRC) 	876	
OUT	152	1	SOP	s:002	 H:0x0281 (id:1, DR:UFP, PR:SNK) 	GOODCRC	877	
NOTIF	153	1	POWER_STATE_CHANGE	878	
DEBUG	153	1	ADVICE: USBPD_DPM_Notification:90	879	
NOTIF	153	1	REQUEST_ACCEPTED	880	
DEBUG	153	1	ADVICE: USBPD_DPM_Notification:1	881	
PE	153	1	PE_SNK_TRANSITION_SNK	882	
IN	449	1	SOP	 PD3	PS_RDY	s:002	 H:0x05A6 (id:2, DR:DFP, PR:SRC) 	883	
OUT	449	1	SOP	s:002	 H:0x0481 (id:2, DR:UFP, PR:SNK) 	GOODCRC	884	
NOTIF	450	1	POWER_STATE_CHANGE	885	
DEBUG	450	1	ADVICE: USBPD_DPM_Notification:90	886	
NOTIF	450	1	POWER_EXPLICIT_CONTRACT	887	
PE	450	1	PE_STATE_READY	888	
NOTIF	450	1	STATE_SNK_READY	889	
DEBUG	450	1	ADVICE: USBPD_DPM_Notification:32	890	
PE	450	1	PE_STATE_SEND_EPRMODE	891	
DEBUG	450	1	ADVICE: update USBPD_DPM_GetDataInfo:30	892	
OUT	450	1	SOP	s:006	 PD3	 H:0x128A 	(id:1, DR:UFP, PR:SNK) 	EPR_MODE	
EPR_MODE : 01000000
	Action:	01
		 0x01 Enter Sink only
		 0x02 Enter Acknowledged Source only
		 0x03 Enter Succeeded Source only
		 0x04 Enter Failed Source only
		 0x05 Exit Sink or Source
	Data:	00
		 0x00 - Unknown cause
		 0x01 - Cable not EPR capable
		 0x02 - Source failed to become VCONN source
		 0x03 - EPR Mode Capable bit not set in RDO
		 0x04 - Source unable to enter EPR Mode at this time
		 0x05 - EPR Mode Capable bit not set in PDO
	893	
IN	452	1	SOP	s:002	 H:0x03A1 (id:1, DR:DFP, PR:SRC) 	GOODCRC	894	
PE	452	1	PE_STATE_WAIT_EPRMODE_ACK	895	
IN	453	1	SOP	s:006	 PD3	 H:0x17AA 	(id:3, DR:DFP, PR:SRC) 	EPR_MODE	
EPR_MODE : 02000000
	Action:	02
		 0x01 Enter Sink only
		 0x02 Enter Acknowledged Source only
		 0x03 Enter Succeeded Source only
		 0x04 Enter Failed Source only
		 0x05 Exit Sink or Source
	Data:	00
		 0x00 - Unknown cause
		 0x01 - Cable not EPR capable
		 0x02 - Source failed to become VCONN source
		 0x03 - EPR Mode Capable bit not set in RDO
		 0x04 - Source unable to enter EPR Mode at this time
		 0x05 - EPR Mode Capable bit not set in PDO
	896	
OUT	453	1	SOP	s:002	 H:0x0681 (id:3, DR:UFP, PR:SNK) 	GOODCRC	897	
DEBUG	453	1	ADVICE: update USBPD_DPM_SetDataInfo:23	898	
NOTIF	453	1	NOTIFY_EPRMODE_ACK	899	
DEBUG	453	1	ADVICE: USBPD_DPM_Notification:113	900	
IN	469	1	SOP	s:006	 PD3	 H:0x11AA 	(id:0, DR:DFP, PR:SRC) 	EPR_MODE	
EPR_MODE : 03000000
	Action:	03
		 0x01 Enter Sink only
		 0x02 Enter Acknowledged Source only
		 0x03 Enter Succeeded Source only
		 0x04 Enter Failed Source only
		 0x05 Exit Sink or Source
	Data:	00
		 0x00 - Unknown cause
		 0x01 - Cable not EPR capable
		 0x02 - Source failed to become VCONN source
		 0x03 - EPR Mode Capable bit not set in RDO
		 0x04 - Source unable to enter EPR Mode at this time
		 0x05 - EPR Mode Capable bit not set in PDO
	901	
OUT	469	1	SOP	s:002	 H:0x0081 (id:0, DR:UFP, PR:SNK) 	GOODCRC	902	
PE	469	1	PE_STATE_WAIT_EPRMODE_STATUS	903	
DEBUG	469	1	ADVICE: update USBPD_DPM_SetDataInfo:23	904	
NOTIF	469	1	NOTIFY_EPRMODE_SUCCEEDED	905	
DEBUG	469	1	ADVICE: USBPD_DPM_Notification:114	906	
PE	470	1	PE_SNK_WAIT_FOR_CAPABILITIES	907	
IN	471	1	SOP	s:030	 PD3	 H:0xF3B1 	(id:1, DR:DFP, PR:SRC) 	EXT_EPR_SOURCE_CAPA	EXT:CNu0Ch1CReq0DSiz32 [ CHUNK BEGIN ] 	DATA: 2C9181282CD102002CC103002CB10400F44106003C21DCC03C21	908	
OUT	471	1	SOP	s:002	 H:0x0281 (id:1, DR:UFP, PR:SNK) 	GOODCRC	909	
OUT	473	1	SOP	s:006	 PD3	 H:0x9491 	(id:2, DR:UFP, PR:SNK) 	EXT_EPR_SOURCE_CAPA	EXT:CNu1Ch1CReq1DSiz0	DATA: 0000	910	
IN	474	1	SOP	s:002	 H:0x05A1 (id:2, DR:DFP, PR:SRC) 	GOODCRC	911	
IN	475	1	SOP	s:014	 PD3	 H:0xB5B1 	(id:2, DR:DFP, PR:SRC) 	EXT_EPR_SOURCE_CAPA	EXT:CNu1Ch1CReq0DSiz36 [ CHUNK END ] 
 EPR SOURCE CAPA
	
 [1] Fixed : 5V - 3A
 [2] Fixed : 9V - 3A
 [3] Fixed : 12V - 3A
 [4] Fixed : 15V - 3A
 [5] Fixed : 20V - 5A
 [6] EPR : [11V - 3.3V] - 60W
 [7] EPR : [21V - 3.3V] - 60W
 [8] Fixed : 28V - 5A
 [9] EPR : [28V - 15V] - 140W
	DATA: A4C1F4C188008C9630D2	912	
OUT	475	1	SOP	s:002	 H:0x0481 (id:2, DR:UFP, PR:SNK) 	GOODCRC	913	
DEBUG	476	1	Received: 28 bytes	914	
DEBUG	476	1	PDO[1] = 5000 mV, 3000 mA, 15 W	915	
DEBUG	476	1	PDO[2] = 9000 mV, 3000 mA, 27 W	916	
DEBUG	477	1	PDO[3] = 12000 mV, 3000 mA, 36 W	917	
DEBUG	477	1	PDO[4] = 15000 mV, 3000 mA, 45 W	918	
DEBUG	477	1	PDO[5] = 20000 mV, 5000 mA, 100 W	919	
DEBUG	477	1	APDO [6] - max voltage: 11000 mV	920	
DEBUG	477	1	APDO [7] - max voltage: 21000 mV	921	
DEBUG	477	1	EPR - received: 4 bytes	922	
DEBUG	477	1	0x0088C1F4	923	
DEBUG	477	1	EPR - max voltage: 6800 mV	924	
PE	477	1	PE_SNK_EVALUATE_CAPABILITY	925	
PE	479	1	PE_SNK_SEND_REQUEST	926	
DEBUG	479	1	ADVICE: update USBPD_DPM_GetDataInfo:29	927	
OUT	479	1	SOP	 PD3	EPR_REQUEST	s:010	 H:0x2689 	(id:3, DR:UFP, PR:SNK) DATA: F4D1475300000000
ObjectPosition:5
GiveBack:0
CapabilityMismatch:0
USBCommunicationCapable:1
NoUSBSuspend:1
UnchunkedExtendedMessagesSupported:0
MaximumOperatingCurrent:5000mA
OperatingCurrent:5000mA	928	
IN	481	1	SOP	s:002	 H:0x07A1 (id:3, DR:DFP, PR:SRC) 	GOODCRC	929	
PE	481	1	PE_SNK_SELECT_CAPABILITY	930	
IN	482	1	SOP	 PD3	ACCEPT	s:002	 H:0x07A3 (id:3, DR:DFP, PR:SRC) 	931	
OUT	482	1	SOP	s:002	 H:0x0681 (id:3, DR:UFP, PR:SNK) 	GOODCRC	932	
NOTIF	483	1	POWER_STATE_CHANGE	933	
DEBUG	483	1	ADVICE: USBPD_DPM_Notification:90	934	
NOTIF	483	1	REQUEST_ACCEPTED	935	
DEBUG	483	1	ADVICE: USBPD_DPM_Notification:1	936	
PE	483	1	PE_SNK_TRANSITION_SNK	937	
IN	777	1	SOP	 PD3	PS_RDY	s:002	 H:0x09A6 (id:4, DR:DFP, PR:SRC) 	938	
OUT	777	1	SOP	s:002	 H:0x0881 (id:4, DR:UFP, PR:SNK) 	GOODCRC	939	
NOTIF	778	1	POWER_STATE_CHANGE	940	
DEBUG	778	1	ADVICE: USBPD_DPM_Notification:90	941	
NOTIF	778	1	POWER_EXPLICIT_CONTRACT	942	
PE	778	1	PE_STATE_READY	943	
NOTIF	778	1	STATE_SNK_READY	944	
DEBUG	778	1	ADVICE: USBPD_DPM_Notification:32	945	
PE	778	1	PE_STATE_SEND_EPRMODE	946	
DEBUG	778	1	ADVICE: update USBPD_DPM_GetDataInfo:30	947	
OUT	778	1	SOP	s:006	 PD3	 H:0x188A 	(id:4, DR:UFP, PR:SNK) 	EPR_MODE	
EPR_MODE : 01000000
	Action:	01
		 0x01 Enter Sink only
		 0x02 Enter Acknowledged Source only
		 0x03 Enter Succeeded Source only
		 0x04 Enter Failed Source only
		 0x05 Exit Sink or Source
	Data:	00
		 0x00 - Unknown cause
		 0x01 - Cable not EPR capable
		 0x02 - Source failed to become VCONN source
		 0x03 - EPR Mode Capable bit not set in RDO
		 0x04 - Source unable to enter EPR Mode at this time
		 0x05 - EPR Mode Capable bit not set in PDO
	948	
IN	780	1	SOP	s:002	 H:0x09A1 (id:4, DR:DFP, PR:SRC) 	GOODCRC	949	
PE	780	1	PE_STATE_WAIT_EPRMODE_ACK	950	
IN	1743	1	HRST	951	
NOTIF	1743	1	HARDRESET_RX	952	
DEBUG	1743	1	ADVICE: USBPD_DPM_Notification:30	953	
PE	1743	1	PE_HARD_RESET_RECEIVED	954	
PE	1743	1	PE_SNK_HARD_RESET_WAIT_VSAFE_0V	955	
GUI	0		BOARD RESET BY USER	956	
CAD	4	1	USBPD_CAD_STATE_ATTACHED_WAIT	957	

but unfortunately I have no access to all received EPR PDOs and APDOs.

In case

case USBPD_CORE_DATATYPE_RCV_SRC_PDO_EPR:

 

 I have only 4 bytes of data.

 

Case code:

case USBPD_CORE_DATATYPE_RCV_SRC_PDO_EPR:
 {
	 uint32_t EPR_1=0;
	 uint32_t EPR_2=0;
	 uint32_t EPR_3=0;
	 uint32_t EPR_4=0;
	 uint32_t EPR=0;
	 DPM_USER_DEBUG_TRACE(PortNum, "EPR - received: %lu bytes", Size);
	 EPR_1=0;
	 EPR_2=0;
	 EPR_3=0;
	 EPR_4=0;
	 EPR=0;
	 EPR_1=(uint32_t)Ptr[0*4U+0U]<<0;
	 EPR_2=(uint32_t)Ptr[0*4U+1U]<<8;
	 EPR_3=(uint32_t)Ptr[0*4U+2U]<<16;
	 EPR_4=(uint32_t)Ptr[0*4U+3U]<<24;
	 EPR=EPR_1|EPR_2|EPR_3|EPR_4;
	 DPM_USER_DEBUG_TRACE(PortNum, "0x%08lX", EPR);
	 uint32_t Max_Voltage_100mV=(EPR>>17);
	 Max_Voltage_100mV = Max_Voltage_100mV&0b00000000000000000000000111111111;
	 DPM_USER_DEBUG_TRACE(PortNum, "EPR - max voltage: %lu mV", (Max_Voltage_100mV*100));
 }
 break;

 

SPR checking:

case USBPD_CORE_DATATYPE_RCV_SRC_PDO: /*!< Storage of Received Source PDO values */
 {
	 DPM_USER_DEBUG_TRACE(PortNum, "Received: %lu bytes", Size);
	 PDO_Max_Number = Size/4; //każdy PDO to 4 bajty
	 if(Size==0U || Size%4U != 0U)
	 {
		 DPM_USER_DEBUG_TRACE(PortNum, "Invalid size - run fixed PDO");
		 If_APDO = 0U;
		 break;
	 }
	 for(uint8_t a=0; a<PDO_Max_Number; a++)
	 {
		 PDO_1=0;
		 PDO_2=0;
		 PDO_3=0;
		 PDO_4=0;
		 PDO=0;
		 PDO_1=(uint32_t)Ptr[a*4U+0U]<<0;
		 PDO_2=(uint32_t)Ptr[a*4U+1U]<<8;
		 PDO_3=(uint32_t)Ptr[a*4U+2U]<<16;
		 PDO_4=(uint32_t)Ptr[a*4U+3U]<<24;
		 PDO=PDO_1|PDO_2|PDO_3|PDO_4;
		 //DPM_USER_DEBUG_TRACE(PortNum, "PDO[%u] = 0x%08lX", a+1, PDO);
		 if((PDO&0b11000000000000000000000000000000UL)!=0b11000000000000000000000000000000UL)
		 {
			 uint32_t Fallback_Voltage=0;
			 Fallback_Voltage=(PDO>>10);
			 Fallback_Voltage=Fallback_Voltage&0b00000000000000000000001111111111;
			 Fallback_Voltage=Fallback_Voltage*50; //napięcie w mV
			 Fallback_Current=PDO&0b00000000000000000000001111111111;
			 Fallback_Current=Fallback_Current*10; //prąd w mA
			 Max_Power[a+1]=Fallback_Voltage*Fallback_Current/1000000;
			 DPM_USER_DEBUG_TRACE(PortNum, "PDO[%u] = %lu mV, %lu mA, %lu W" , a+1, Fallback_Voltage, Fallback_Current, Max_Power[a+1]);
			 if(Fallback_Voltage==20000)
			 {
				 Fallback_PDO=a+1;
				 Fallback_Current = Fallback_Current/10;
				 If_APDO = 0U;
			 }
		 }
		 if((PDO&0b11000000000000000000000000000000UL)==0b11000000000000000000000000000000UL)
		 {
			 uint32_t Max_Voltage_100mV=(PDO>>17);
			 Max_Voltage_100mV = Max_Voltage_100mV&0b00000000000000000000000111111111;
			 DPM_USER_DEBUG_TRACE(PortNum, "APDO [%u] - max voltage: %lu mV", a+1, (Max_Voltage_100mV*100));
			 if(Max_Voltage_100mV>=Requested_Voltage)
			 {
				 Requested_APDO=a+1;
				 //If_APDO = 1U;
			 }
		 }
	 }
 }
 break;

How to access to full data with all EPR PDOs and APDOs? I have no DPM_Ports.

Best regards

ST Technical Moderator
April 10, 2026

Hi @Jaroslaw_T 

Sorry for not getting back to you sooner. I will clarify this part in the article. Chucking is mandatory in EPR mode in PD3.1;

Now in your case I'm suspecting your handling of extended/chunked messages; can you test with the following source example. Here is my HW setup:

FBL_0-1775840365486.png

 

For my case, to store received SRC EPR PDOs

case USBPD_CORE_DATATYPE_RCV_SRC_PDO_EPR:
 if (Size <= (USBPD_MAX_NB_PDO * 4))
 {
 uint8_t *pdo;
 DPM_Ports[PortNum].DPM_NumberOfRcvSRCEPRPDO = (Size / 4);
 for (index = 0; index < (Size / 4); index++)
 {
 pdo = (uint8_t *)&DPM_Ports[PortNum].DPM_ListOfRcvSRCEPRPDO[index];
 memcpy(pdo, Ptr + index * 4U, 4U);
 }
 }
 break;

 Can you replace your source and attach it to the Sink with the proposed setup?

To give better visibility on the answered topics, please click on "Best answer" on the reply which solved your issue or answered your question.Best regards,FBL
Associate II
April 20, 2026

Thank You

Unfortunately I have only setup for SINK. For my solution I have my own PCB with STM32G071KBT6 uC. Also I have no DPM_Ports. In USBPD_CORE_DATATYPE_RCV_SRC_PDO_EPR I have only 4 bytes of data.

 

Best regards

Jaroslaw

ST Technical Moderator
April 20, 2026

Thanks for the clarification @Jaroslaw_T .

Can you verify whether the source used advertises EPR capabilities using chunked or unchunked extended messages?

To give better visibility on the answered topics, please click on "Best answer" on the reply which solved your issue or answered your question.Best regards,FBL
Associate II
April 21, 2026

OK, but how to do it? My trace is below.

CAD	2	1	USBPD_CAD_STATE_DETACHED	563	
CAD	4	1	USBPD_CAD_STATE_ATTACHED_WAIT	564	
CAD	123	1	USBPD_CAD_STATE_ATTACHED	565	
NOTIF	123	1	USBSTACK_START	566	
DEBUG	123	1	ADVICE: USBPD_DPM_Notification:104	567	
EVENT	123	1	EVENT_ATTACHED	568	
DEBUG	123	1	ADVICE: update USBPD_DPM_UserCableDetection	569	
DEBUG	123	1	ADVICE: update USBPD_DPM_SetDataInfo:2	570	
DEBUG	123	1	ADVICE: update USBPD_DPM_SetDataInfo:6	571	
PE	124	1	PE_SNK_STARTUP	572	
PE	124	1	PE_SNK_WAIT_FOR_CAPABILITIES	573	
IN	149	1	SOP	 PD3	s:030	 H:0x71A1 	(id:0, DR:DFP, PR:SRC) 	SRC_CAPABILITIES	DATA: 2C9181282CD102002CC103002CB10400F44106003C21DCC03C21A4C1	
Option: 	EPW	DRP	
 [1] Fixed : 5V - 3A
 [2] Fixed : 9V - 3A
 [3] Fixed : 12V - 3A
 [4] Fixed : 15V - 3A
 [5] Fixed : 20V - 5A
 [6] Programmable : [3.3V - 11V] - 3A
 [7] Programmable : [3.3V - 21V] - 3A
	574	
OUT	149	1	SOP	s:002	 H:0x0081 (id:0, DR:UFP, PR:SNK) 	GOODCRC	575	
DEBUG	149	1	Received: 28 bytes	576	
DEBUG	149	1	PDO[1] = 5000 mV, 3000 mA, 15 W	577	
DEBUG	150	1	PDO[2] = 9000 mV, 3000 mA, 27 W	578	
DEBUG	150	1	PDO[3] = 12000 mV, 3000 mA, 36 W	579	
DEBUG	150	1	PDO[4] = 15000 mV, 3000 mA, 45 W	580	
DEBUG	150	1	PDO[5] = 20000 mV, 5000 mA, 100 W	581	
DEBUG	150	1	APDO [6] - max voltage: 11000 mV	582	
DEBUG	150	1	APDO [7] - max voltage: 21000 mV	583	
PE	150	1	PE_SNK_EVALUATE_CAPABILITY	584	
PE	152	1	PE_SNK_SEND_REQUEST	585	
OUT	152	1	SOP	 PD3	REQUEST	s:006	 H:0x1082 	(id:0, DR:UFP, PR:SNK) DATA: F4D14753
ObjectPosition:5
GiveBack:0
CapabilityMismatch:0
USBCommunicationCapable:1
NoUSBSuspend:1
UnchunkedExtendedMessagesSupported:0
MaximumOperatingCurrent:5000mA
OperatingCurrent:5000mA	586	
IN	153	1	SOP	s:002	 H:0x0161 (id:0, DR:DFP, PR:SRC) 	GOODCRC	587	
PE	153	1	PE_SNK_SELECT_CAPABILITY	588	
IN	155	1	SOP	 PD3	ACCEPT	s:002	 H:0x03A3 (id:1, DR:DFP, PR:SRC) 	589	
OUT	155	1	SOP	s:002	 H:0x0281 (id:1, DR:UFP, PR:SNK) 	GOODCRC	590	
NOTIF	156	1	POWER_STATE_CHANGE	591	
DEBUG	156	1	ADVICE: USBPD_DPM_Notification:90	592	
NOTIF	156	1	REQUEST_ACCEPTED	593	
DEBUG	156	1	ADVICE: USBPD_DPM_Notification:1	594	
PE	156	1	PE_SNK_TRANSITION_SNK	595	
IN	453	1	SOP	 PD3	PS_RDY	s:002	 H:0x05A6 (id:2, DR:DFP, PR:SRC) 	596	
OUT	453	1	SOP	s:002	 H:0x0481 (id:2, DR:UFP, PR:SNK) 	GOODCRC	597	
NOTIF	453	1	POWER_STATE_CHANGE	598	
DEBUG	453	1	ADVICE: USBPD_DPM_Notification:90	599	
NOTIF	453	1	POWER_EXPLICIT_CONTRACT	600	
PE	453	1	PE_STATE_READY	601	
NOTIF	453	1	STATE_SNK_READY	602	
DEBUG	454	1	ADVICE: USBPD_DPM_Notification:32	603	
PE	454	1	PE_STATE_SEND_EPRMODE	604	
DEBUG	454	1	ADVICE: update USBPD_DPM_GetDataInfo:30	605	
OUT	454	1	SOP	s:006	 PD3	 H:0x128A 	(id:1, DR:UFP, PR:SNK) 	EPR_MODE	
EPR_MODE : 01000000
	Action:	01
		 0x01 Enter Sink only
		 0x02 Enter Acknowledged Source only
		 0x03 Enter Succeeded Source only
		 0x04 Enter Failed Source only
		 0x05 Exit Sink or Source
	Data:	00
		 0x00 - Unknown cause
		 0x01 - Cable not EPR capable
		 0x02 - Source failed to become VCONN source
		 0x03 - EPR Mode Capable bit not set in RDO
		 0x04 - Source unable to enter EPR Mode at this time
		 0x05 - EPR Mode Capable bit not set in PDO
	606	
IN	455	1	SOP	s:002	 H:0x03A1 (id:1, DR:DFP, PR:SRC) 	GOODCRC	607	
PE	455	1	PE_STATE_WAIT_EPRMODE_ACK	608	
IN	456	1	SOP	s:006	 PD3	 H:0x17AA 	(id:3, DR:DFP, PR:SRC) 	EPR_MODE	
EPR_MODE : 02000000
	Action:	02
		 0x01 Enter Sink only
		 0x02 Enter Acknowledged Source only
		 0x03 Enter Succeeded Source only
		 0x04 Enter Failed Source only
		 0x05 Exit Sink or Source
	Data:	00
		 0x00 - Unknown cause
		 0x01 - Cable not EPR capable
		 0x02 - Source failed to become VCONN source
		 0x03 - EPR Mode Capable bit not set in RDO
		 0x04 - Source unable to enter EPR Mode at this time
		 0x05 - EPR Mode Capable bit not set in PDO
	609	
OUT	456	1	SOP	s:002	 H:0x0681 (id:3, DR:UFP, PR:SNK) 	GOODCRC	610	
DEBUG	457	1	ADVICE: update USBPD_DPM_SetDataInfo:23	611	
NOTIF	457	1	NOTIFY_EPRMODE_ACK	612	
DEBUG	457	1	ADVICE: USBPD_DPM_Notification:113	613	
IN	472	1	SOP	s:006	 PD3	 H:0x11AA 	(id:0, DR:DFP, PR:SRC) 	EPR_MODE	
EPR_MODE : 03000000
	Action:	03
		 0x01 Enter Sink only
		 0x02 Enter Acknowledged Source only
		 0x03 Enter Succeeded Source only
		 0x04 Enter Failed Source only
		 0x05 Exit Sink or Source
	Data:	00
		 0x00 - Unknown cause
		 0x01 - Cable not EPR capable
		 0x02 - Source failed to become VCONN source
		 0x03 - EPR Mode Capable bit not set in RDO
		 0x04 - Source unable to enter EPR Mode at this time
		 0x05 - EPR Mode Capable bit not set in PDO
	614	
OUT	472	1	SOP	s:002	 H:0x0081 (id:0, DR:UFP, PR:SNK) 	GOODCRC	615	
PE	473	1	PE_STATE_WAIT_EPRMODE_STATUS	616	
DEBUG	473	1	ADVICE: update USBPD_DPM_SetDataInfo:23	617	
NOTIF	473	1	NOTIFY_EPRMODE_SUCCEEDED	618	
DEBUG	473	1	ADVICE: USBPD_DPM_Notification:114	619	
PE	473	1	PE_SNK_WAIT_FOR_CAPABILITIES	620	
IN	475	1	SOP	s:030	 PD3	 H:0xF3B1 	(id:1, DR:DFP, PR:SRC) 	EXT_EPR_SOURCE_CAPA	EXT:CNu0Ch1CReq0DSiz32 [ CHUNK BEGIN ] 	DATA: 2C9181282CD102002CC103002CB10400F44106003C21DCC03C21	621	
OUT	475	1	SOP	s:002	 H:0x0281 (id:1, DR:UFP, PR:SNK) 	GOODCRC	622	
OUT	476	1	SOP	s:006	 PD3	 H:0x9491 	(id:2, DR:UFP, PR:SNK) 	EXT_EPR_SOURCE_CAPA	EXT:CNu1Ch1CReq1DSiz0	DATA: 0000	623	
IN	478	1	SOP	s:002	 H:0x05A1 (id:2, DR:DFP, PR:SRC) 	GOODCRC	624	
IN	479	1	SOP	s:014	 PD3	 H:0xB5B1 	(id:2, DR:DFP, PR:SRC) 	EXT_EPR_SOURCE_CAPA	EXT:CNu1Ch1CReq0DSiz36 [ CHUNK END ] 
 EPR SOURCE CAPA
	
 [1] Fixed : 5V - 3A
 [2] Fixed : 9V - 3A
 [3] Fixed : 12V - 3A
 [4] Fixed : 15V - 3A
 [5] Fixed : 20V - 5A
 [6] EPR : [11V - 3.3V] - 60W
 [7] EPR : [21V - 3.3V] - 60W
 [8] Fixed : 28V - 5A
 [9] EPR : [28V - 15V] - 140W
	DATA: A4C1F4C188008C9630D2	625	
OUT	479	1	SOP	s:002	 H:0x0481 (id:2, DR:UFP, PR:SNK) 	GOODCRC	626	
DEBUG	480	1	Received: 28 bytes	627	
DEBUG	480	1	PDO[1] = 5000 mV, 3000 mA, 15 W	628	
DEBUG	480	1	PDO[2] = 9000 mV, 3000 mA, 27 W	629	
DEBUG	480	1	PDO[3] = 12000 mV, 3000 mA, 36 W	630	
DEBUG	480	1	PDO[4] = 15000 mV, 3000 mA, 45 W	631	
DEBUG	480	1	PDO[5] = 20000 mV, 5000 mA, 100 W	632	
DEBUG	480	1	APDO [6] - max voltage: 11000 mV	633	
DEBUG	480	1	APDO [7] - max voltage: 21000 mV	634	
DEBUG	481	1	EPR - received: 4 bytes	635	
DEBUG	481	1	Called: 1 x	636	
DEBUG	481	1	0x0088C1F4	637	
DEBUG	481	1	EPR - max voltage: 6800 mV	638	
PE	481	1	PE_SNK_EVALUATE_CAPABILITY	639	
PE	482	1	PE_SNK_SEND_REQUEST	640	
DEBUG	482	1	ADVICE: update USBPD_DPM_GetDataInfo:29	641	
OUT	482	1	SOP	 PD3	EPR_REQUEST	s:010	 H:0x2689 	(id:3, DR:UFP, PR:SNK) DATA: F4D1475300000000
ObjectPosition:5
GiveBack:0
CapabilityMismatch:0
USBCommunicationCapable:1
NoUSBSuspend:1
UnchunkedExtendedMessagesSupported:0
MaximumOperatingCurrent:5000mA
OperatingCurrent:5000mA	642	
IN	484	1	SOP	s:002	 H:0x07A1 (id:3, DR:DFP, PR:SRC) 	GOODCRC	643	
PE	484	1	PE_SNK_SELECT_CAPABILITY	644	
IN	485	1	SOP	 PD3	ACCEPT	s:002	 H:0x07A3 (id:3, DR:DFP, PR:SRC) 	645	
OUT	485	1	SOP	s:002	 H:0x0681 (id:3, DR:UFP, PR:SNK) 	GOODCRC	646	
NOTIF	486	1	POWER_STATE_CHANGE	647	
DEBUG	486	1	ADVICE: USBPD_DPM_Notification:90	648	
NOTIF	486	1	REQUEST_ACCEPTED	649	
DEBUG	486	1	ADVICE: USBPD_DPM_Notification:1	650	
PE	486	1	PE_SNK_TRANSITION_SNK	651	
IN	781	1	SOP	 PD3	PS_RDY	s:002	 H:0x09A6 (id:4, DR:DFP, PR:SRC) 	652	
OUT	781	1	SOP	s:002	 H:0x0881 (id:4, DR:UFP, PR:SNK) 	GOODCRC	653	
NOTIF	781	1	POWER_STATE_CHANGE	654	
DEBUG	781	1	ADVICE: USBPD_DPM_Notification:90	655	
NOTIF	781	1	POWER_EXPLICIT_CONTRACT	656	
PE	781	1	PE_STATE_READY	657	
NOTIF	781	1	STATE_SNK_READY	658	
DEBUG	781	1	ADVICE: USBPD_DPM_Notification:32	659	
PE	781	1	PE_STATE_SEND_EPRMODE	660	
DEBUG	781	1	ADVICE: update USBPD_DPM_GetDataInfo:30	661	
OUT	781	1	SOP	s:006	 PD3	 H:0x188A 	(id:4, DR:UFP, PR:SNK) 	EPR_MODE	
EPR_MODE : 01000000
	Action:	01
		 0x01 Enter Sink only
		 0x02 Enter Acknowledged Source only
		 0x03 Enter Succeeded Source only
		 0x04 Enter Failed Source only
		 0x05 Exit Sink or Source
	Data:	00
		 0x00 - Unknown cause
		 0x01 - Cable not EPR capable
		 0x02 - Source failed to become VCONN source
		 0x03 - EPR Mode Capable bit not set in RDO
		 0x04 - Source unable to enter EPR Mode at this time
		 0x05 - EPR Mode Capable bit not set in PDO
	662	
IN	783	1	SOP	s:002	 H:0x09A1 (id:4, DR:DFP, PR:SRC) 	GOODCRC	663	
PE	783	1	PE_STATE_WAIT_EPRMODE_ACK	664	
IN	1747	1	HRST	665	
NOTIF	1747	1	HARDRESET_RX	666	
DEBUG	1747	1	ADVICE: USBPD_DPM_Notification:30	667	
PE	1747	1	PE_HARD_RESET_RECEIVED	668	
PE	1747	1	PE_SNK_HARD_RESET_WAIT_VSAFE_0V	669	
GUI	0		BOARD RESET BY USER	670	
CAD	4	1	USBPD_CAD_STATE_ATTACHED_WAIT	671	

 

OK, I have checked it. The message is chunked - below:

391	IN	1042	1	SOP	s:030	 PD3	 H:0xF3B1 	(id:1, DR:DFP, PR:SRC) 	EXT_EPR_SOURCE_CAPA	EXT:CNu0Ch1CReq0DSiz32 [ CHUNK BEGIN ] 	DATA: 2C9181282CD102002CC103002CB10400F44106003C21DCC03C21
392	OUT	1042	1	SOP	s:002	 H:0x0281 (id:1, DR:UFP, PR:SNK) 	GOODCRC
393	OUT	1043	1	SOP	s:006	 PD3	 H:0x9491 	(id:2, DR:UFP, PR:SNK) 	EXT_EPR_SOURCE_CAPA	EXT:CNu1Ch1CReq1DSiz0	DATA: 0000
394	IN	1044	1	SOP	s:002	 H:0x05A1 (id:2, DR:DFP, PR:SRC) 	GOODCRC
395	IN	1046	1	SOP	s:014	 PD3	 H:0xB5B1 	(id:2, DR:DFP, PR:SRC) 	EXT_EPR_SOURCE_CAPA	EXT:CNu1Ch1CReq0DSiz36 [ CHUNK END ] / EPR SOURCE CAPA / 	 [1] Fixed : 5V - 3A / [2] Fixed : 9V - 3A / [3] Fixed : 12V - 3A / [4] Fixed : 15V - 3A / [5] Fixed : 20V - 5A / [6] EPR : [11V - 3.3V] - 60W / [7] EPR : [21V - 3.3V] - 60W / [8] Fixed : 28V - 5A / [9] EPR : [28V - 15V] - 140W / 	DATA: A4C1F4C188008C9630D2

 

During the test I have discovered, that "EPR" variable in my code (below) takes on the different value depending on the "x" variable. I.e. x=1 -> EPR=0xD230968C, so Max_voltage_100mV*100=28000. Once I have 4 bytes (Size = 4). How to recognize all PDO and APDO values?

 

case USBPD_CORE_DATATYPE_RCV_SRC_PDO_EPR:
	 {
		 uint32_t x=1;
		 uint32_t EPR_1=0;
		 uint32_t EPR_2=0;
		 uint32_t EPR_3=0;
		 uint32_t EPR_4=0;
		 uint32_t EPR=0;
		 DPM_USER_DEBUG_TRACE(PortNum, "EPR - received: %lu bytes", Size);
		 EPR_1=0;
		 EPR_2=0;
		 EPR_3=0;
		 EPR_4=0;
		 EPR=0;
		 EPR_1=(uint32_t)Ptr[x*4U+0U]<<0;
		 EPR_2=(uint32_t)Ptr[x*4U+1U]<<8;
		 EPR_3=(uint32_t)Ptr[x*4U+2U]<<16;
		 EPR_4=(uint32_t)Ptr[x*4U+3U]<<24;
		 EPR=EPR_1|EPR_2|EPR_3|EPR_4;
		 DPM_USER_DEBUG_TRACE(PortNum, "0x%08lX", EPR);
		 uint32_t Max_Voltage_100mV=(EPR>>17);
		 Max_Voltage_100mV = Max_Voltage_100mV&0b00000000000000000000000111111111;
		 DPM_USER_DEBUG_TRACE(PortNum, "EPR - max voltage: %lu mV", (Max_Voltage_100mV*100));
	 }

 

Best regards

Jaroslaw

ST Technical Moderator
April 23, 2026

OK @Jaroslaw_T  since USBPD_CORE_DATATYPE_RCV_SRC_PDO_EPR only exposes the first 4 bytes of the reassembled extended payload and source is sending properly chunked messages, the limitation appears to be in the middleware. Could you confirm reproducing using latest version of stm32-mw-usbpd-core v5.4? If possible to reproduce on one of our reference boards to confirm the issue is not linked to your hardware setup.

To give better visibility on the answered topics, please click on "Best answer" on the reply which solved your issue or answered your question.Best regards,FBL
Associate II
April 24, 2026

Yes, @FBL  I have using the last USPPD core (v5.4) from GITHUB.

I have modified my code and I found:

for "x" = 0 - I have information about EPR PDO,

for "x" = 1- I have information about EPR APDO

But how to recognize the max number of "x"? 

My code after changing:

case USBPD_CORE_DATATYPE_RCV_SRC_PDO_EPR:
	 {
		 uint32_t x=0;
		 uint32_t EPR_1=0;
		 uint32_t EPR_2=0;
		 uint32_t EPR_3=0;
		 uint32_t EPR_4=0;
		 uint32_t EPR=0;
		 DPM_USER_DEBUG_TRACE(PortNum, "EPR - received: %lu bytes", Size);
		 EPR_1=0;
		 EPR_2=0;
		 EPR_3=0;
		 EPR_4=0;
		 EPR=0;
		 EPR_1=(uint32_t)Ptr[x*4U+0U]<<0;
		 EPR_2=(uint32_t)Ptr[x*4U+1U]<<8;
		 EPR_3=(uint32_t)Ptr[x*4U+2U]<<16;
		 EPR_4=(uint32_t)Ptr[x*4U+3U]<<24;
		 EPR=EPR_1|EPR_2|EPR_3|EPR_4;
		 if((EPR&0b11000000000000000000000000000000UL)!=0b11000000000000000000000000000000UL)
		 {
			 DPM_USER_DEBUG_TRACE(PortNum, "0x%08lX", EPR);
			 EPR_Voltage=(EPR>>10);
			 EPR_Voltage=EPR_Voltage&0b00000000000000000000001111111111;
			 EPR_Voltage=EPR_Voltage*50;
			 EPR_Current=EPR&0b00000000000000000000001111111111;
			 EPR_Current=EPR_Current*10;
			 DPM_USER_DEBUG_TRACE(PortNum, "EPR = %lu mV, %lu mA", EPR_Voltage, EPR_Current);

		 }
		 if((EPR&0b11000000000000000000000000000000UL)==0b11000000000000000000000000000000UL)
		 {
			 DPM_USER_DEBUG_TRACE(PortNum, "0x%08lX", EPR);
			 uint32_t Max_Voltage_100mV=(EPR>>17);
			 Max_Voltage_100mV = Max_Voltage_100mV&0b00000000000000000000000111111111;
			 DPM_USER_DEBUG_TRACE(PortNum, "EPR - max voltage: %lu mV", (Max_Voltage_100mV*100));
		 }
	 }
	 break;

 

In the next step I have used global variable Number_Of_EPR_PDO:

main.c

uint8_t Number_Of_EPR_PDO = 0;

 

main.h

extern uint8_t Number_Of_EPR_PDO;

 

And in usbpd_dpm_user.c I have information about 1 PDO (Number_Of_EPR_PDO = 1)

case USBPD_CORE_DATATYPE_RCV_SRC_PDO_EPR:
	 {
		 Number_Of_EPR_PDO++;
		 uint8_t x=0;
		 uint32_t EPR_1=0;
		 uint32_t EPR_2=0;
		 uint32_t EPR_3=0;
		 uint32_t EPR_4=0;
		 uint32_t EPR=0;
		 DPM_USER_DEBUG_TRACE(PortNum, "EPR - received: %lu bytes, %d PDOs", Size, Number_Of_EPR_PDO);
1507	DEBUG	1050	1	EPR - received: 4 bytes, 1 PDOs

 

Best regards

Jaroslaw

Associate II
April 28, 2026

Hello community

I have done another test.

In trace I have 9 positions - last one is AVS 15 - 28V, 140W:

2707	IN	1048	1	SOP	s:014	 PD3	 H:0xB5B1 	(id:2, DR:DFP, PR:SRC) 	EXT_EPR_SOURCE_CAPA	EXT:CNu1Ch1CReq0DSiz36 [ CHUNK END ] / EPR SOURCE CAPA / 	 [1] Fixed : 5V - 3A / [2] Fixed : 9V - 3A / [3] Fixed : 12V - 3A / [4] Fixed : 15V - 3A / [5] Fixed : 20V - 5A / [6] EPR : [11V - 3.3V] - 60W / [7] EPR : [21V - 3.3V] - 60W / [8] Fixed : 28V - 5A / [9] EPR : [28V - 15V] - 140W / 	DATA: A4C1F4C188008C9630D2

 So I have tried to choose 9 position:

DPM_USER_DEBUG_TRACE(PortNum, "AVS mode");
		rdo.d32=0;
		rdo.AVSRDO.EPR_Capable=1U;
		rdo.AVSRDO.ObjectPosition=9;
		rdo.AVSRDO.OutputVoltageIn25mV=960;
		rdo.AVSRDO.OperatingCurrentIn50mAunits=60U; //3A
		rdo.AVSRDO.NoUSBSuspend=USBPD_ENABLE;
		rdo.AVSRDO.USBCommunicationsCapable=USBPD_ENABLE;
		rdo.AVSRDO.CapabilityMismatch=0;
		*PtrPowerObjectType=USBPD_CORE_PDO_TYPE_AVSPDO;
		*PtrRequestData=rdo.d32;

 

But the stack sent strange values:

2720	PE	1050	1	PE_SNK_EVALUATE_CAPABILITY
2721	DEBUG	1052	1	AVS mode
2722	PE	1052	1	PE_SNK_SEND_REQUEST
2723	DEBUG	1052	1	ADVICE: update USBPD_DPM_GetDataInfo:29
2724	OUT	1052	1	SOP	 PD3	EPR_REQUEST	s:010	 H:0x2689 	(id:3, DR:UFP, PR:SNK) DATA: 3C80479300000000 / ObjectPosition:1 / GiveBack:0 / CapabilityMismatch:0 / USBCommunicationCapable:1 / NoUSBSuspend:1 / UnchunkedExtendedMessagesSupported:0 / MaximumOperatingCurrent:600mA / OperatingCurrent:4800mA
2725	IN	1054	1	SOP	s:002	 H:0x07A1 (id:3, DR:DFP, PR:SRC) 	GOODCRC
2726	PE	1054	1	PE_SNK_SELECT_CAPABILITY
2727	IN	1055	1	HRST
2728	NOTIF	1055	1	HARDRESET_RX

 

Why?

Best regards

Jaroslaw