Electronic – USB Type C Design

usbusb deviceusb-cusb-host

I would like to have an answer about the implementation of a USB Type C device. Comparing with the USB 2.0, where the pull-up resistor is needed on D+ to select the communication speed, I did not find the specification for the Type C. My question: is the pull-up resistor on D+ (DP1 and DP2) needed, or it can be set as the image bellow?
enter image description here

Here in this ST Application Note for USB Hardware (https://www.st.com/resource/en/application_note/dm00296349-usb-hardware-and-pcb-guidelines-using-stm32-mcus-stmicroelectronics.pdf), it is possible to read that VBUS is MANDATORY for Self-Powered devices on pin PA9 (that is my case):

enter image description here

In addition to this, in the same doc, it says the chip already has pull-up resistors:

enter image description here

In the Image bellow, it is shown that it is needed a VBUS eference to the STM32F405, to flag when the USB cable is connected.

enter image description here

Finally, on the datasheet (https://www.st.com/resource/en/reference_manual/dm00031020-stm32f405-415-stm32f407-417-stm32f427-437-and-stm32f429-439-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf), I've found that, indeed, it is needed to connect the VBUS to the chip to flag the cable connection:

enter image description here
enter image description here

In summary, it is NOT needed for the STM32F405 the pull-up resistor on D+, and plus it is needed a VBUS resistive divider to notify the STM32 chip the USB cable to host was plugged in. Correct me if I am wrong!


[EDIT: FINAL VERSION WITH NO USB CONTROLLER]
Some points, thanks to those who tried to help:

  1. This design's goal is to communicate via USB-C as a device-only peripheral and plus to use the host's VBUS to power the whole system, with different VBUS voltages, so consider VBUS can go from 0v to 20v, which will be implemented later with a USB controller chip. The system has it's own power supply, called VM on my schematic, so the VBUS could power the system or not, depending on the users will.
  2. Added Z1 zener diode (plus R48 and R49) to avoid the VBUS gets higher than 3.3v, assuming VBUS can vary from 4v to 20v (I am planning to implement a USB-C controller, so that it works just fine for the possibly variation of VBUS voltage).
  3. T1 is a 20v Vrwm TVS diode to avoid transient. Same to T2 and T3, both 3.6v Vrwm TVS diodes.
  4. Z2 and Z3 are simply zener diodes to avoid problems with illegal usb cables that have wrong values for Rp. Assuming CC line can reach up to 10.4v in worst case, but it has a max limit of 6v, both Z2 and Z3 protect the CC line.
  5. VBUS label goes to the PA9 pin of STM32F405 chip, to sense the VBUS voltage presence (the pin will realize a 0 to 3.3 voltage, even if VBUS goes from 0v to 20v).

enter image description here


[EDIT: FINAL VERSION WITH USB CONTROLLER]

Here I post a full version to work as a device-only self-powered system, where the VM is the system's power, which can be supplied by either VBUS OR it's Battery.
The FUSB302B datasheet shows a typical application circuit, and the AN6102 shows it's complementation, where a 5v1 zener diode is added to limit the CC line voltage to avoid voltage rising above 6v – when illegal cables are used.

enter image description here

Best Answer

USB2 speed-defining pull-up is a function of a device itself (which should be on the right-side of your schematics). Type-C by itself does not care about USB communication, it is an independent connector specification. The two 5.1k pull-downs on your schematics do define the device function, it is sufficient.