TPS25751: Barrel Jack Detection for Dynamic Sink/Source Role Switching - VIN_3V3 vs. GPIO for Control

Part Number: TPS25751

Tool/software:

I am working with the TPS25751 PD controller and need to implement dual role power switching based on the presence of an external 9V barrel jack.

My current setup involves:

  • A voltage divider followed by a buffer connected to the VIN_3V3 pin of the TPS25751.

  • When the barrel jack is connected, the divider provides 3.3V to VIN_3V3.

  • When the barrel jack is disconnected, the divider provides 0V to VIN_3V3.

My desired power role behavior is:

  • Barrel Jack Disconnected: The TPS25751 should act as a sink, drawing 9V from VBUS.

  • Barrel Jack Connected: The TPS25751 should act as a source, providing 5V.

I understand that VIN_3V3 is the normal power supply input for the TPS25751's core circuitry. When VIN_3V3 is 0V (barrel jack disconnected in my setup), the chip enters a "dead-battery" state. In this state, it is powered from VBUS and is forced to act as a sink only, rejecting source requests. This sink-only behavior aligns with my requirement for the "barrel jack disconnected" scenario. I also understand that to enable the TPS25751 to source power after being in a dead-battery state, the Dead Battery Flag (in the Boot Flags register) must be explicitly cleared via an I2C command ('DBfg').

However, I am concerned about the implications and reliability of using VIN_3V3 as a dynamic logic input for this purpose.

My specific questions are:

  1. Is it a robust and recommended practice to use the VIN_3V3 pin in this dynamic manner (toggling between 0V and 3.3V) to control power role switching based on barrel jack detection?

  2. Given my desired behavior (sink 9V when barrel jack disconnected, source 5V when barrel jack connected), and assuming an external host microcontroller issues the 'DBfg' I2C command to clear the Dead Battery Flag, how reliably and quickly can the TPS25751 then transition to and maintain a sourcing role (5V)?

  3. Would the more appropriate and reliable approach be to:

    • Provide a continuous, stable 3.3V supply to VIN_3V3?

    • Utilize a dedicated configurable GPIO pin (e.g., mapped to the Barrel_Jack_Event as described in the Technical Reference Manual) for barrel jack detection?  

    • Configure the TPS25751's firmware (via the Application Customization Tool) to manage the power role switching based on the state of this GPIO and the  

      PORT_CONTROL.UnconstrainedPower bit?  

Any guidance or confirmation on the correct implementation for this dynamic power role switching scenario would be greatly appreciated. I attached an image of our implementation for this so any confirmation would also be greatly appreciated. Thank you!

  • Hi Colton,

    Thanks for reaching out on E2E!

    Is it a robust and recommended practice to use the VIN_3V3 pin in this dynamic manner (toggling between 0V and 3.3V) to control power role switching based on barrel jack detection?

    It is not recommended to use the PD VIN3v3 to change power roles. Every time the PD controller loses power to that pin, the PD will lose its app config and will require a reload of the firmware. It is recommended to control the behavior of the PD over I2C in the app config.

    Given my desired behavior (sink 9V when barrel jack disconnected, source 5V when barrel jack connected), and assuming an external host microcontroller issues the 'DBfg' I2C command to clear the Dead Battery Flag, how reliably and quickly can the TPS25751 then transition to and maintain a sourcing role (5V)?

    The best way to achieve this would be to have the PD controller always enabled and only issue DBfg once if the system is booting in dead battery. Using port config, you can configure the role of the port however you desire based on the connection of the barrel jack over i2c using your mcu. Changing port config will cause the current device connected to disconnect if there is present connection and switch to the desire role that is selected (source/sink). This way there is no need for the patch to be constantly reapplied and a need to issue the DBfg command.

    Would the more appropriate and reliable approach be to:

    • Provide a continuous, stable 3.3V supply to VIN_3V3?

    • Utilize a dedicated configurable GPIO pin (e.g., mapped to the Barrel_Jack_Event as described in the Technical Reference Manual) for barrel jack detection?  

    • Configure the TPS25751's firmware (via the Application Customization Tool) to manage the power role switching based on the state of this GPIO and the  

      PORT_CONTROL.UnconstrainedPower bit?  

    The unconstrained power bit is an indication of if the system has AC power connected and is more of an indication to the far end sink device and will not change the current connection on the port, however as I mentioned above, stable VIN3v3 is the preferred method. Please note that the barrel jack connected gpio event will not automatically cause a power role swap, so I would recommend that the EC does the behavior since this event will not change the port role of the PD.

    Thank you,

    Kevin