2024-09-19 02:52 AM - edited 2024-09-19 02:55 AM
Hi ST Team,
We're using the GPIO pin to turn on MOSFET for power supply.
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,
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.