Working on a project with a source USB type C port. Below are the criteria:
- ESD protected D+/D- and VBUS
- Source only port, will not accept power input
- 3A power capabilities, with the ability of the microcontroller to adjust the power output
- Low cost application without the need to implement a USB PD controller
- Phones/devices will recognize this port as an available USB power source and sink the desired current (up to 3A)
Below is my schematic thus far. From left to right:
- The TPS2557DRBR regulates the current based on the resistance on ILIM. NTZD3154NT1G is a dual logic level n-channel MOSFET controlled by the MCU to adjust the resistance.
- The DMG2305UX and DMMT5401-7-F create an ideal diode and only allow power to source from the USB port
- USBLC6-2P6 provides ESD protection on the D+/D- and VBUS (Note, the symbol is incorrect, the specific component uses bidirectional diodes. Also, TPS2557DRBR provides ESD protection on the VBUS line)
- USB-7070C is a 16 pin USB type C port. The 10K resistors on the CC lines should indicate to sink devices that the port can supply 3A.
Since my experience is somewhat limited, I would appreciate any feedback on this design and if it would achieve the goal and if there are any critical faults.
Thanks, Snoop
Edit:
Thank you all for the helpful feedback on the initial schematic. Below is a revised version to address the issues raised. The main issue was due to VBUS always being powered. With the added P-FETs the CC lines will first need to be pulled low to power VBUS. The reverse polarity protection was removed as well.
I was considering a dedicated USB-C PD controller but from the options I was looking at (TUSB320, WUSB3801, Fusb302mpx) they all had limitations without using the I2C interface and didn't add any functionality to the design.
Something else to note, I could connect a GPIO from the microcontroller to each of the cc lines and monitor if they're pulled low. Then connect the EN pin from the TPS2557 to another GPIO to active the power output. This would then give more control over the port but at the cost of 3 GPIO and more passives. Not sure if there's really any use cases for this.

