cancel
Showing results for 
Search instead for 
Did you mean: 

STUSB4500 doesn't work properly with Apple Dual Port Adapter

yyou.1
Associate

Hi ST Team,

We're using the GPIO pin to turn on MOSFET for power supply. 

yyou1_0-1726738767487.png

We've tested many PD apdater, almost all the single port adapters work properly with STUSB4500. But it doesn't work properly with Apple Dual Port Adapter, 35W A2676, 

yyou1_2-1726739110622.jpeg

If I set PDO to 12V, the PD negotiation seems failed. If I setPDO to 15V, the GPIO doesn't turn on the MOSFET.

Here is the configuration.

 

void writeParameters() {
    delay(100);

    /* Set Number of Power Data Objects (PDO) 1-3 */
    usb.setPdoNumber(3);

    /* PDO1
    - Voltage fixed at 5V
    - Current value for PDO1 0-5A, if 0 used, FLEX_I value is used
    - Under Voltage Lock Out (setUnderVoltageLimit) fixed at 3.3V
    - Over Voltage Lock Out (setUpperVoltageLimit) 5-20%
    */
    usb.setCurrent(1, 3); // 5V3A
    usb.setUpperVoltageLimit(1, 20);

    /* PDO2
    - Voltage 5-20V
    - Current value for PDO2 0-5A, if 0 used, FLEX_I value is used
    - Under Voltage Lock Out (setUnderVoltageLimit) 5-20%
    - Over Voltage Lock Out (setUpperVoltageLimit) 5-20%
    */
    usb.setVoltage(2, 9.0);
    usb.setCurrent(2, 0); // 9V1.5A
    usb.setLowerVoltageLimit(2, 20);
    usb.setUpperVoltageLimit(2, 20);

    /* PDO3
    - Voltage 5-20V
    - Current value for PDO3 0-5A, if 0 used, FLEX_I value is used
    - Under Voltage Lock Out (setUnderVoltageLimit) 5-20%
    - Over Voltage Lock Out (setUpperVoltageLimit) 5-20%
    */
    usb.setVoltage(3, 15.0);
    usb.setCurrent(3, 1); // 15V1A
    usb.setLowerVoltageLimit(3, 20);
    usb.setUpperVoltageLimit(3, 20);

    /* Flexible current value common to all PDOs */
     usb.setFlexCurrent(3.0);

    /* Unconstrained Power bit setting in capabilities message sent by the sink */
    //  usb.setExternalPower(false);

    /* USB 2.0 or 3.x data communication capability by sink system */
    usb.setUsbCommCapable(true);

    /* Selects POWER_OK pins configuration
        0 - Configuration 1
        1 - No applicable
        2 - Configuration 2 (default)
        3 - Configuration 3
    */
    //  usb.setConfigOkGpio(2);

    /* Selects GPIO pin configuration
        0 - SW_CTRL_GPIO
        1 - ERROR_RECOVERY
        2 - DEBUG
        3 - SINK_POWER
    */
     usb.setGpioCtrl(3);

    /* Selects VBUS_EN_SNK pin configuration */
     usb.setPowerAbove5vOnly(false);

    /* In case of match, selects which operating current from the sink or the
        source is to be requested in the RDO message */
    //  usb.setReqSrcCurrent(false);

    /* Write the new settings to the NVM */
    usb.write();
}

 

Here is the log:

 

 - PDO (augmented) = (0.00V, 12.80V, 12.80A =  0.1W) => APDO not selectable
P(max)= 0.6W
 - PDO (augmented) = (0.00V, 14.30V, 4.50A =  1.1W) => APDO not selectable
P(max)= 5.2W
 - PDO3 (fixed)     = (15.00V, 2.24A, = 33.6W)
P(max)=33.6W
 - PDO4 (fixed)     = (20.00V, 1.75A, = 35.0W)
P(max)=35.0W
 - PDO5 (battery)   = (3.55V, 47.75V, = 210.8W) not selectable
P(max)=210.8W
 - PDO6 (fixed)     = (0.00V, 0.00A, =  0.0W)
P(max)= 0.0W
 - PDO (augmented) = (1000.00V, 0.00V, 14.00A =  0.0W) => APDO not selectable
P(max)= 0.0W

 


Any suggestion would be greatly appreciated.

 

 

0 REPLIES 0