Skip to main content
yyou.1
Visitor II
September 19, 2024
Question

STUSB4500 doesn't work properly with Apple Dual Port Adapter

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.

 

 

This topic has been closed for replies.