Skip to main content
Visitor II
September 19, 2024
Question

STUSB4500 doesn't work properly with Apple Dual Port Adapter

  • September 19, 2024
  • 0 replies
  • 566 views

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.