STM32G0 USB-PD Policy Engine Requests Hard Reset after power negotiation
I'm bringing up a PD source and it will successfully negotiate an explicit contract, but if the source is unplugged and plugged back in, it will still negotiate correctly, but the PE will request a hard reset causing one to be sent 256 ms after PS_RDY message. Timing is consistently 255-256ms (the PE task returns a delay of 255 then resets). The source continues in a cycle of hard resets until power is cycled to the board or it is reprogrammed. I have confirmed that this originates from the PE and not the DPM or the sink. I cannot provide a trace using ST's utility as we are moving to an in house implementation of the DPM.
The PE task is suspended and USBPD_PE_StateMachine_Stop is called on disconnect.
These USBPD_ParamsTypeDef structure members are reset on disconnect to these values:
.PE_SpecRevision = Settings().PE_SpecRevision;
.PE_PowerRole = Settings().PE_DefaultRole;
.PE_SwapOngoing = USBPD_FALSE;
.ActiveCCIs = CCNONE;
.VconnCCIs = CCNONE;
.VconnStatus = USBPD_FALSE;
USBPD_PE_StateMachine_Reset is called on connect before resuming the PE task.
Running USBPDCORE_PD3_FULL_CM0PLUS_wc32.a
#define LIB_STACK_VER (0x410U << LIB_STACK_VER_POS)
USBPDCORE_LIB_PD3_FULL defined
single port
STM32G071GB
PE_Get_RxEvent returns 20 (0x14) in the state machine call that calls hard reset
