TCPP01-M12 appears to not be connecting CCx to CCxc
I am prototyping a new board upgrade to USB-C by connecting an X-Nucleo-SNK1M1 board containing the TCPP01-M12 to our existing USB device board that uses a STM32L476. The device is battery powered and will only need default 5V power. All that works fine with the VCC and DB/ pins grounded for dead battery operation and the USB2.0 data lines passed through the dev board to our board.
In some cases in our application, it would be nice for the device/UFP to force a power cycle and disconnect from the host without a person physically pulling the plug. It is my understanding that if the USB-C CC wires are open circuited, the DFP's pull ups should pull them up to > 1.65V and the DFP interpret that as a disconnect. My interpretation of the TCPP01-M12 data sheet (Section 6.4) is that when both VCC and DB/ are raised, the DB clamps are removed from the CCxc pins and CCxc are connected to CCx internally. If CCx are open circuit (no micro, no 5.1k resistor), one of the CC lines should be pulled up by the DFP's pull up and the DFP should disconnect.
That is not happening in our circuit, and I'm hoping someone can help me understand why or set me straight if my interpretation of expected behavior is wrong. Attached is a scope plot of the operation. Channel 1 is VCC and DB/, connected together and initially pulled low. Channel 2 can be disregarded for now (more details below), it is the microcontroller's PC09 pin that gets pulled up on USB connect. Channel 3 is VDDUSB at the microcontroller; you can see it rises to ~3.3V when USB is plugged in. Channel 4 is CC1c, it also gets pulled up to the dead battery clamp voltage, and then the PC tries to negotiate USBPD (but nothing is listening).
At the center of the plot, we raise VCC and DB/, and note that nothing changes on CC1c. I would expect that since the CC1 pin of the TCPP01-M12 is open circuit, CC1c should be pulled up. We also tried grounding CC1, expecting to see that CC1c gets pulled to ground, but the scope plot looks identical. What am I missing?
More detail: the X-Nucleo board is configured in the following way:
- Voltage protection: Unsolder SH5 and solder SH1 to set 6V overvoltage protection.
- Unsolder C1 and C2 because these are only needed for USB Power Delivery compliance, and we aren’t doing PD (and we want the configuration to be as close as possible to our final design).
- Jumpers on J1 and J2 removed so that CC1 and CC2 are open circuit, as discussed above.
- Jumpers on J3 and J4 also removed to isolate the voltage regulator (we have our own from VBUS)
- Unsolder R3 to allow the microcontroller's GPIO to pull up the FLT signal (1.8V micro).
- Connect Vbus (CN2 pin 2) to our board's USB Vbus.
- Connect USB data lines (CN10 pins 10 and 12) to our boards USB data.
- Connect GND between the boards, using CN2 pin 1.
- Connect VCC_OUT (CN7 pin 1) and DB_OUT (CN10 pin 27) together and either to GND, 3.3V, or a pull-up FET controlled by the microcontroller depending on the test. The FET is needed because the microcontroller's main supply is 1.8V, but we would need to pull up to ~3.3V.
- Connect the FLT/ signal (CN10 pin 18) to a GPIO on the microcontroller. Included for completeness, though we have not been using this signal so far.
The end result is intended to prototype the attached circuit diagram, which would be the new board assuming this all works. Note that Q? is the FET mentioned in point (9) and the signal USB.DISCONN is the microcontroller's 5V-tolerant PC09.
I'm obviously missing something, but can't figure out what it is. Any help or insights would be appreciated.
Kind regards,
Rod
