This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TPS65987D: TPS65987D Oscillating Output

Part Number: TPS65987D

Tool/software:

Hello,

I'm working with the TPS65987D USB PD controller and experiencing an issue where the VBUS output voltage cycles on and off. The output reaches 20VDC, stays on for a few seconds, then shuts off for a few seconds before repeating the cycle.

This seems to be related to the specific device we're trying to power, but it's crucial for our application, so we're looking for a solution. Has anyone encountered this issue before, or have any suggestions on how to stabilize the VBUS output?

Any help would be greatly appreciated!

Thanks!

USB_PD.pjt

usb_pd_log.csv

From debug mode download. 

Port 1	Module 31	0x1ff = UNKNOWN
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	PD	0xbf = PEState_ErrorRecovery
Port 0	PD	0x1 = PEState_CableTypeDetect
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	Type-C	0x5 = SRC_STATE_ERROR_RECOVERY
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x91 = VBUSState_MON_LO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	Type-C	0x66 = COMMON_STATE_UNATTACHED_SNK
Port 0	Type-C	0x67 = COMMON_STATE_UNATTACHED_SRC
Port 0	Type-C	0x64 = COMMON_STATE_ATTACHWAIT_SRC
Port 0	Type-C	0x60 = COMMON_STATE_ATTACHED_SRC
Port 0	BC 1.2	0xd = CHARGER_DCP_ADVERTISEMENT_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	PD	0x2 = PEState_LaunchPolicyEngine
Port 0	PD	0x2e = PEState_Enable_VCONN
Port 0	PD	0x2f = PEState_Enable_VBUS
Port 0	BC 1.2	0x4 = CHARGER_DETECTION_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	PD	0xbe = PEState_Disabled
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	PD	0xbf = PEState_ErrorRecovery
Port 0	PD	0x1 = PEState_CableTypeDetect
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	Type-C	0x5 = SRC_STATE_ERROR_RECOVERY
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x91 = VBUSState_MON_LO
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x91 = VBUSState_MON_LO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	Type-C	0x66 = COMMON_STATE_UNATTACHED_SNK
Port 0	Type-C	0x67 = COMMON_STATE_UNATTACHED_SRC
Port 0	Type-C	0x64 = COMMON_STATE_ATTACHWAIT_SRC
Port 0	Type-C	0x60 = COMMON_STATE_ATTACHED_SRC
Port 0	BC 1.2	0xd = CHARGER_DCP_ADVERTISEMENT_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	PD	0x2 = PEState_LaunchPolicyEngine
Port 0	PD	0x2e = PEState_Enable_VCONN
Port 0	PD	0x2f = PEState_Enable_VBUS
Port 0	BC 1.2	0x4 = CHARGER_DETECTION_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	PD	0xbe = PEState_Disabled
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	PD	0xbf = PEState_ErrorRecovery
Port 0	PD	0x1 = PEState_CableTypeDetect
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	Type-C	0x5 = SRC_STATE_ERROR_RECOVERY
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x91 = VBUSState_MON_LO
Port 0	Type-C	0x66 = COMMON_STATE_UNATTACHED_SNK
Port 0	Type-C	0x67 = COMMON_STATE_UNATTACHED_SRC
Port 0	Type-C	0x64 = COMMON_STATE_ATTACHWAIT_SRC
Port 0	Type-C	0x60 = COMMON_STATE_ATTACHED_SRC
Port 0	BC 1.2	0xd = CHARGER_DCP_ADVERTISEMENT_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	PD	0x2 = PEState_LaunchPolicyEngine
Port 0	PD	0x2e = PEState_Enable_VCONN
Port 0	PD	0x2f = PEState_Enable_VBUS
Port 0	BC 1.2	0x4 = CHARGER_DETECTION_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	PD	0xbe = PEState_Disabled
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	PD	0xbf = PEState_ErrorRecovery
Port 0	PD	0x1 = PEState_CableTypeDetect
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	Type-C	0x5 = SRC_STATE_ERROR_RECOVERY
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x91 = VBUSState_MON_LO
Port 0	Type-C	0x66 = COMMON_STATE_UNATTACHED_SNK
Port 0	Type-C	0x67 = COMMON_STATE_UNATTACHED_SRC
Port 0	Type-C	0x64 = COMMON_STATE_ATTACHWAIT_SRC
Port 0	Type-C	0x60 = COMMON_STATE_ATTACHED_SRC
Port 0	BC 1.2	0xd = CHARGER_DCP_ADVERTISEMENT_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	PD	0x2 = PEState_LaunchPolicyEngine
Port 0	PD	0x2e = PEState_Enable_VCONN
Port 0	PD	0x2f = PEState_Enable_VBUS
Port 0	BC 1.2	0x4 = CHARGER_DETECTION_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	PD	0xbe = PEState_Disabled
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	PD	0xbf = PEState_ErrorRecovery
Port 0	PD	0x1 = PEState_CableTypeDetect
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	Type-C	0x5 = SRC_STATE_ERROR_RECOVERY
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x91 = VBUSState_MON_LO
Port 0	Type-C	0x66 = COMMON_STATE_UNATTACHED_SNK
Port 0	Type-C	0x67 = COMMON_STATE_UNATTACHED_SRC
Port 0	Type-C	0x64 = COMMON_STATE_ATTACHWAIT_SRC
Port 0	Type-C	0x60 = COMMON_STATE_ATTACHED_SRC
Port 0	BC 1.2	0xd = CHARGER_DCP_ADVERTISEMENT_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	PD	0x2 = PEState_LaunchPolicyEngine
Port 0	PD	0x2e = PEState_Enable_VCONN
Port 0	PD	0x2f = PEState_Enable_VBUS
Port 0	BC 1.2	0x4 = CHARGER_DETECTION_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	PD	0xbe = PEState_Disabled
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	PD	0xbf = PEState_ErrorRecovery
Port 0	PD	0x1 = PEState_CableTypeDetect
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	Type-C	0x5 = SRC_STATE_ERROR_RECOVERY
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x91 = VBUSState_MON_LO
Port 0	Type-C	0x66 = COMMON_STATE_UNATTACHED_SNK
Port 0	Type-C	0x67 = COMMON_STATE_UNATTACHED_SRC
Port 0	Type-C	0x64 = COMMON_STATE_ATTACHWAIT_SRC
Port 0	Type-C	0x60 = COMMON_STATE_ATTACHED_SRC
Port 0	BC 1.2	0xd = CHARGER_DCP_ADVERTISEMENT_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	PD	0x2 = PEState_LaunchPolicyEngine
Port 0	PD	0x2e = PEState_Enable_VCONN
Port 0	PD	0x2f = PEState_Enable_VBUS
Port 0	BC 1.2	0x4 = CHARGER_DETECTION_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	PD	0x13 = PEState_Source_Startup
Port 0	PD	0x96 = PESTATE_SRC2PLUG_VDM_Identity_Request
Port 0	Protocol	0xc8 = PRState_TXDONE
Port 0	Protocol	0xc5 = PRState_RX_BUF_RDY
Port 0	Protocol	0xcb = PRState_RECEIVED_GOODCRC
Port 0	Protocol	0xc5 = PRState_RX_BUF_RDY
Port 0	PD	0x97 = PESTATE_SRC2PLUG_VDM_Identity_ACKed
Port 0	PD	0x14 = PEState_Source_Startup_Continue
Port 0	PD	0x16 = PEState_Source_SendCapabilities
Port 0	Protocol	0xc8 = PRState_TXDONE
Port 0	Protocol	0xc5 = PRState_RX_BUF_RDY
Port 0	Protocol	0xcb = PRState_RECEIVED_GOODCRC
Port 0	Protocol	0xc5 = PRState_RX_BUF_RDY
Port 0	PD	0x19 = PEState_Source_NegotiateCapability
Port 0	PD	0x1b = PEState_Source_TransitionSupply_Accept
Port 0	Protocol	0xc8 = PRState_TXDONE
Port 0	Protocol	0xc5 = PRState_RX_BUF_RDY
Port 0	Protocol	0xcb = PRState_RECEIVED_GOODCRC
Port 0	PD	0x1c = PEState_Source_TransitionSupply
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	PD	0x1e = PEState_Source_TransitionSupply_SetAlarmsNew
Port 0	PD	0x1f = PEState_Source_TransitionSupply_PS_RDY
Port 0	Protocol	0xc8 = PRState_TXDONE
Port 0	Protocol	0xc5 = PRState_RX_BUF_RDY
Port 0	Protocol	0xcb = PRState_RECEIVED_GOODCRC
Port 0	PD	0x17 = PEState_Source_Ready
Port 0	Protocol	0x30 = PRState_Source_SinkTxOk
Port 0	PD	0x72 = PEState_DFP_VDM_Identity_Request
Port 0	Protocol	0xc8 = PRState_TXDONE
Port 0	Protocol	0xc5 = PRState_RX_BUF_RDY
Port 0	Protocol	0xcb = PRState_RECEIVED_GOODCRC
Port 0	Protocol	0xc5 = PRState_RX_BUF_RDY
Port 0	PD	0x73 = PEState_DFP_VDM_Identity_ACKed
Port 0	PD	0x17 = PEState_Source_Ready
Port 0	Protocol	0x30 = PRState_Source_SinkTxOk
Port 0	VBUS	0xcd = VBUSState_OVP_UVP
Port 0	VBUS	0xb5 = VBUSState_UVP_ENTERED
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	PD	0xbf = PEState_ErrorRecovery
Port 0	PD	0x1 = PEState_CableTypeDetect
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	Type-C	0x5 = SRC_STATE_ERROR_RECOVERY
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x91 = VBUSState_MON_LO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	Type-C	0x66 = COMMON_STATE_UNATTACHED_SNK
Port 0	Type-C	0x67 = COMMON_STATE_UNATTACHED_SRC
Port 0	Type-C	0x64 = COMMON_STATE_ATTACHWAIT_SRC
Port 0	Type-C	0x60 = COMMON_STATE_ATTACHED_SRC
Port 0	BC 1.2	0xd = CHARGER_DCP_ADVERTISEMENT_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	PD	0x2 = PEState_LaunchPolicyEngine
Port 0	PD	0x2e = PEState_Enable_VCONN
Port 0	PD	0x2f = PEState_Enable_VBUS
Port 0	BC 1.2	0x4 = CHARGER_DETECTION_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	PD	0xbe = PEState_Disabled
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	PD	0xbf = PEState_ErrorRecovery
Port 0	PD	0x1 = PEState_CableTypeDetect
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	Type-C	0x5 = SRC_STATE_ERROR_RECOVERY
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x91 = VBUSState_MON_LO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	Type-C	0x66 = COMMON_STATE_UNATTACHED_SNK
Port 0	Type-C	0x67 = COMMON_STATE_UNATTACHED_SRC
Port 0	Type-C	0x64 = COMMON_STATE_ATTACHWAIT_SRC
Port 0	Type-C	0x60 = COMMON_STATE_ATTACHED_SRC
Port 0	BC 1.2	0xd = CHARGER_DCP_ADVERTISEMENT_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	PD	0x2 = PEState_LaunchPolicyEngine
Port 0	PD	0x2e = PEState_Enable_VCONN
Port 0	PD	0x2f = PEState_Enable_VBUS
Port 0	BC 1.2	0x4 = CHARGER_DETECTION_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	PD	0xbe = PEState_Disabled
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	PD	0xbf = PEState_ErrorRecovery
Port 0	PD	0x1 = PEState_CableTypeDetect
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	Type-C	0x5 = SRC_STATE_ERROR_RECOVERY
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x91 = VBUSState_MON_LO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	Type-C	0x66 = COMMON_STATE_UNATTACHED_SNK
Port 0	Type-C	0x67 = COMMON_STATE_UNATTACHED_SRC
Port 0	Type-C	0x64 = COMMON_STATE_ATTACHWAIT_SRC
Port 0	Type-C	0x60 = COMMON_STATE_ATTACHED_SRC
Port 0	BC 1.2	0xd = CHARGER_DCP_ADVERTISEMENT_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	PD	0x2 = PEState_LaunchPolicyEngine
Port 0	PD	0x2e = PEState_Enable_VCONN
Port 0	PD	0x2f = PEState_Enable_VBUS
Port 0	BC 1.2	0x4 = CHARGER_DETECTION_COMPLETE
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	PD	0xbe = PEState_Disabled
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x90 = VBUSState_MON_HI
Port 0	PD	0xbf = PEState_ErrorRecovery
Port 0	PD	0x1 = PEState_CableTypeDetect
Port 0	INT	0x3 = PLUG_INSERT_OR_REMOVAL
Port 0	INT	0x19 = DATA_STATUS_UPDATE
Port 0	Type-C	0x5 = SRC_STATE_ERROR_RECOVERY
Port 0	VBUS	0xcc = VBUSState_MON_HILO
Port 0	VBUS	0x91 = VBUSState_MON_LO
Port 0	VBUS	0x90 = VBUSState_MON_HI

  • Hi Arian, 

    Based on the debug log you provided it looks like TPS65987D detected UVP on the port and disconnected. Can you provide an analog waveform of VBUS when connected to the specific device when the disconnection occurs? It'll also be helpful to grab CC and PP_HV1/PP_HV2 waveform alongside VBUS to see the full picture. 

    Thanks and Regards,

    Raymond Lin

  • Hi Raymond, 

    Below is a scope capture of the disconnect. The Blue line is the input to PP_HV2, the Green line is VBUS. After the initial connection the voltage stays stable at 20VDC for about 5 - 10 seconds then randomly turns off. This cycle repeats every few seconds over and over. 

    Second scope capture of the disconnect.

    If need here is a scope capture of the input being engaged. 

    This last one is with the CC line. The Blue line is the CC, and the Green is still the VBUS. 

  • Hi Arian, 

    How much current is being drawn by the far-end device? Can you capture PD (CC) logs and share it here? From the waveform you provided the VBUS voltage seems to be stable and not within a OVP or UVP state. It might be a possibility the far-end sinking device is the one disconnect and not TPS65987D. 

    If possible, can you read back the status register (0x1A) and see if the LowVoltageWarning or HighVoltageWarning is toggled? The fields are highlighted in the screenshot below: 

    If it is a case of OVP or UVP, you can configure the OVP/UVP thresholds through the GUI in Port Configuration register (0x28) as shown below: 

    Thanks and Regards,
    Raymond Lin