2024-10-12 02:53 AM
Hello dear ST community,
I am making a PPS (sink) application based on NucleoG0B1RE + SNK1M1. As noted in various resources, the TCPP01-M12 doesn't include OCP protection. However, the USB Power Delivery Specification R3.2 on usb.org, strongly recommends OCP protection for sink operating with PPS.
My question is what is the best approach to implement OCP int his context?
According to the Engineering guide for current sensing (page 32-34) it appears one can use sense amplifier with alert pin, or just sense amplifier with comparator to drive a FET as an e-fuse. My initial thought was to add another FET, such as the STL11N3LLH6 (already part of TCPP01 solution) and use the alert pin to turn off the MOSFET. Additionaly, I would send a event flag to MCU where it could be further processed.
However, I am bit concerned about how this might affect the UCPD stack. If the path is turned off (but not directly controlled by TCPP01), would this disrupt the UCPD communication? To which state it will likely go? Could this require just a stack reset after reconnecting the power path?
My thought was, that maximal current should never be reached so the OCP limit should be set slightly below 5A depending on the accuracy of sense amplifier. Yet looking into UM2891 it says that for nominal current of 5A, OCP treshold is set to 6A, why? Is this to account for inrush current spikes? If so how do I find the proper value for OCP, also with taking in account the sense amplifier accuracy?
Finally, I’ve read that the TCPP03 includes an OCP flag in its I2C register, and an OCP event can be handled via a recovery command from the MCU. Would it be feasible to use TCPP03 in place of TCPP01 for my design? If so, how accurate is the ISENSE feature of the TCPP03? Since I am also using some power for UI elements, and I want the user to know the actual current consumed by load (not the combined current: load+UI) I think that even when using TCPP03 I would still need two current measuring points, is this right?
Thanks in advance for your help!
Tags: @FBL, @LLECH.1, @HFISTM
Solved! Go to Solution.
2024-10-16 04:42 AM
Hello,
Using, external OCP (high side amplifier + comparator) will be more expensive (and complicated) than on the shelf integrated solution.
Both solutions can drive VBUS load switch (MOSFET used to activate VBUS) to perform OCP.
Use TCPP03-M20 for SINK with OCP is the best path forward.
You can use STL11N3LLH6 or any single N-MOSFET as only connector to provider voltage needs to be managed by MOSFET.
Gate driver pins GDPg and GDPs can be left floating.
To generate the code, I recommend using X-CUBE-TCCP pack on Cube-MX.
Then, you can use documentation of Dual Role case (because it supports TCPP03-M20), see :
You need to :
Then, middleware is SINK only.
Best regards,
Mathieu
2024-10-14 07:37 AM
Hello,
Thanks for your question !
TCPP01-M12 has been tailored to optimize cost then it embeds only key protections for SINK (OVP on VBUS / CC + ESD).
When VBUS OCP is needed, TCPP03-M20 can perform SINK only solution with OCP feature. It is the recommended solution.
TCPP03-M20 embeds an OCP based on shunt resistor (Rs) voltage (OCP trigger = 47mV). The Rs value provides current threshold.
There is a margin between typical current on VBUS and OCP typical value to avoid parasitic OCP trigger (current margin, component margin, noise, …).
It’s a fixed OCP based on maximum current.
To limit noise, accurate layout is mandatory with sense PIN connection (VBUSc and Isense PIN) with differential routing (see X-NUCLEO-DRP1M1 layout as example with R5). This layout limits voltage drop at shunt resistor connection and, also, avoid inductive loop.
TCPP03-M20 does not require additional component or PIN. Indeed, VBUSc and Isense PIN are sense PIN for VBUS current. VBUS voltage measurement is performed with resistor bridge connected to STM32 ADC (see X-NUCLEO-DRP1M1 schematic as example with R8 and R9).
Inrush current at VBUS turn-on is generated by maximum capacitor on VBUS (fixed by USB standard) and MOSFET turn-on time. It's managed by N-MOSFET gate driver of TCPP.
When adjustable OCP or current monitoring is needed (with PPS, as example), analog current readout is possible thank to IANA output.
It can be used on interrupt for adjustable OCP.
Accuracy of IANA is optimal for current readout at maximum value as it is a high side amplifier.
This adjustable OCP must trigger at a lower value than fixed OCP.
To summarize TCPP03-M20 VBUS protection :
TCPP03-M20 can be used for SINK only solution.
Best regards,
Mathieu
2024-10-15 01:41 AM
Thank you for your reply @MROUV.1.
Is it the custom OCP solution using the TCPP01-M12 and current sense amplifier with alert pin and another mosfet also feasible, or is switching to the TCPP03-M20 the best path forward in this case?
If I move to the TCPP03-M20, what MOSFET to choose: Can I continue using the STL11N3LLH6 MOSFET for my sink-only application, or is it necessary to use the dual STL40DN3LLH5 (source-to-source configuration), as seen on the DRP1M1 shield?
Additionally, if I don’t use the gate driver pins GDPg and GDPs, should these be left floating or terminated in some specific way?
Is it possible to lock the TCPP03 in sink mode only on software layer?
2024-10-16 04:42 AM
Hello,
Using, external OCP (high side amplifier + comparator) will be more expensive (and complicated) than on the shelf integrated solution.
Both solutions can drive VBUS load switch (MOSFET used to activate VBUS) to perform OCP.
Use TCPP03-M20 for SINK with OCP is the best path forward.
You can use STL11N3LLH6 or any single N-MOSFET as only connector to provider voltage needs to be managed by MOSFET.
Gate driver pins GDPg and GDPs can be left floating.
To generate the code, I recommend using X-CUBE-TCCP pack on Cube-MX.
Then, you can use documentation of Dual Role case (because it supports TCPP03-M20), see :
You need to :
Then, middleware is SINK only.
Best regards,
Mathieu