Comments: Power Delivery Board - USB-C (Qwiic) Hookup Guide
Looking for answers to technical questions?
We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.
In the STUSB4500 Datasheet (Figure 9.Minimal Implemantation) they use a STL6P3LLH6 as MosFet (T1). In your Eagle Schematicfile youre use a STL9P3LLH6. Why you use the STL9(-30V/-9A) instead of the STL6(+30V/+6A) MosFet? Wich Schematic is wrong?
Short answer: Neither schematic is wrong, either part will work, but I think the datasheet is wrong for the STL6. The reason we chose the STL9 was mainly because it has a lower Rds value, and reduce the need for a heatsink under a heavy load.
Longer answer: I think the STL6 has a typo and they omitted the minus sign in the STL6 datasheet. The parameter is the drain-to-source voltage, and because of the body diode a P-Channel FET must have a negative Vds, whereas a N-Channel FET must have a positive Vds, otherwise the body diode will conduct regardless of gate voltage. As a sanity check, I pulled up a half dozen datasheets for P-Channel FETs from various manufactures and the values for Vds and Id are all negative.
Is there some sort of timeout implemented in the STUSB4500? I am using the board to power something that is switched off overnight via a relay controlled from a microcontroller, to the delivery board does not supply any power at least 8 hours. When I reactivates in the morning, the power delivery board is not supplying any power, as soon as I unplug it and reconnect it it starts working again... so it makes me wonder if there is some sort of automatic switch off if there is no power sink after a period of time...
Anyone knows? Thanks in advance
Hi there, it sounds like you are looking for technical assistance. Please use the link in the banner above, to get started with posting a topic in our forums. Our technical support team will do their best to assist you.
Hola! Why are there no examples for changing profiles on the fly? I tried simply changing the argument in pd.setPdoNumber() but no voltage change on the output. I also tried changing the individual PDO voltages to no avail. Any hopes of an example or a pro tip?
TheSpaceCadet, you can read the response to Member #1646971 but in the new update to the library (V1.1.0) you can finally change voltages on the fly using the soft reset function.
The power negotiation only occurs when the Power Delivery board powers up or is reset. The active high reset pin has a 100k pull down resistor. Theoretically, you should be able to connect the reset pin to a GPIO pin of your microcontroller, change the PDO number, and toggle the reset high and then low again, and it will change the voltage.
During testing this was one of the examples I was planning on including but I ran into a strange issue with the STUSB4500 hardware. As soon as I connect a wire (like the 6in hookup wire) to the reset pin, it would go into reset and stay in reset until disconnected the wire, even though the other side was floating. With a shorter wire (<3in) it doesn't seem to be an issue. I also tried replacing the 100k pull-down resistor with a stronger pull-down like 10k and 1k, but I didn't notice a difference.
Hi Alex, I think it is possible to dynamically set PD parameters on-the-fly without writing to nvm and doing a hard reset. Can you please confirm this by taking a look at STSW-STUSB003 firmware docs. This comment on ST forum makes me think on-the-fly setting is possible.
You are correct. I released a new update to the library (v1.1.0) that uses the soft reset function that allows for changing voltages on the fly. I also included an example both in this hookup guide as well as in the arduino library that shows how it can be used.
If you've found an issue with this tutorial content, please send us your feedback!
I was hoping to use the on-board mosfet controlled by VBUS_EN_SINK pin of STUSB4500 as a switch... but seems like taking control of that pin from software using i2c is not possible. Am I correct?
As a workaround for this I thought of following workflow to disable or enable the output :-
Can someone confirm that the above mentioned workflow works. Is there any other way to achieve what I am trying to do here?