2020-12-28 01:15 PM
I am designing an application where the STUSB4500 must be able to negotiate successfully with a wide variety of USB-C PD sources. This involves a microcontroller which edits the PDOs of the STUSB4500 on the fly after reading the source capabilities. ST's example software recommends sending a software reset message to the STUSB4500 since the source will retransmit its capabilities during the re-negotiation that ensues, but this software reset triggers a hard reset with some USB-C PD sources, and so I'd prefer a solution that doesn't involve a software reset at all.
The USB-C PD specification defines a command GET_SOURCE_CAP, which can be sent in the same manner as the SOFT_RESET message except that the transmit buffer is written with 0x07 rather than 0x0D. However, this triggers a hard reset in all USB-C PD sources I've tested with, even those that handled the software reset just fine in ST's recommended method. Is there a reason why the STUSB4500 hard resets when this message is sent, and is there another way of getting the source capabilities without a software reset? Thank you.
Solved! Go to Solution.
2021-02-03 06:30 AM
Hello CF,
The behaviour you describe is correct.
But unfortunately, taking over the STUSB4500 internal state machine to send USB PD commands such as GET_SRC_CAP (or similar command) is not possible (only SOFT_RESET is OK).
Even though it is possible to access the PD_COMMAND_CTRL register, it is not possible to switch between IC self management (auto-run mechanism) and software management in the same application.
Rgds,
Benoit
2021-02-03 06:30 AM
Hello CF,
The behaviour you describe is correct.
But unfortunately, taking over the STUSB4500 internal state machine to send USB PD commands such as GET_SRC_CAP (or similar command) is not possible (only SOFT_RESET is OK).
Even though it is possible to access the PD_COMMAND_CTRL register, it is not possible to switch between IC self management (auto-run mechanism) and software management in the same application.
Rgds,
Benoit