USB 3.1 spec can be a bit intimidating when compared to the USB Micro-B connector and the FTDI USB 2.0 to UART chips most of us microcontroller folks have gotten used to. However, it is possible, not difficult, and officially supported, to wire in a Type-C connector to an existing USB 2.0 design.
The recently introduced USB 3.1 specification comes with a new connector that finally solves the biggest problems with the original USB spec, the requirement for mechanical orientation. All of the prior USB connectors and cables are keyed so they can only be plugged in one way; also, the cables are not reversible.
Well, maybe this isn't the "biggest problem," but it certainly is a nuisance. In my experience, it takes no less than three attempts to successfully plug a USB cable into the back of a computer or my cell phone. As you can see in the image below, the new USB 3.1, Type-C
connector finally brings mechanically symmetrical to the world of USB.
USB 3.1 is a significant upgrade, including extra power capability, higher speed data, and reversible smart cables that can be plugged in in any orientation. One of the downsides is extra complexity. The full-spec smart cable has electronics in it that allow it to determine exactly what it's talking to on each side and adjust accordingly. This allows it to accommodate a number of blinding fast data formats as well as a variety of charging current levels.
Reading the spec can be a bit intimidating when compared to the USB Micro-B connector and the FTDI USB 2.0 to UART chips most of us microcontroller folks have gotten used to. Upon researching this further, however, I discovered that, while the connectors themselves aren't compatible with older cables, the 3.1 specification will accommodate basic USB 2.0 data signals with minimal added complexity. It is possible, not difficult, and officially supported, to wire in a Type-C connector to an existing USB 2.0 design.
My first use of the Type-C connector is coming in an electronic ruler that I'm designing with prolific project creator and editorial director Max Maxfield. The ruler will be Arduino-compatible and will be programmed via USB. In the original implementation, as I do with most of my designs, I put an FTDI FT231X chip to go between the UART on the MCU and a USB Micro-B connector. In this incarnation of the design, I'm keeping the Micro-B connector, but I'm also adding a Type-C connector. The ruler will still be talking over USB 2.0 protocol, but can communicate through either a Micro-B cable or a new Type-C cable.
The diagram below shows the pin layout for the signal, power, and ground connections, as seen in a face-on view of the connector.
You can see that this two-sided connector has all of the power and ground pins, along with the USB 2.0 D+ and D- pins, duplicated on diagonally opposite sides. Since I'm just discussing USB 2.0 compatibility, we only need to worry about the D+, D-, Vbus, Ground, CC1, and CC2 pins. The TX1/2/±, RX1/2/+/, and SBU1/2 connectors are used for higher-speed and alternate modes, such as full-speed 3.1, DisplayPort, and HDMI.
Only the power, ground, D+, and D- connections are mirrored exactly. In the case of the higher-speed 3.1 modes, the electronics in the smart cable ensure that the signals go where they are supposed to. The specification requires that the cable carries only one pair of D+ and D-, while the connector has both sets. This still provides universal and reversible connections, but with two fewer wires.
The CC1 and CC2 pins are used for pull-down resistors to instruct a smart cable, or upstream device, as to the orientation of the cable and power delivery options. In my case, a basic USB 2.0 device requires 5.1K pull-down resistors (R3 and R4) on both CC1 and CC2.
J2 is the Type-C connector, while J1 is the Micro-B connector. All of the D- pins and D+ pins are connected, respectively, to the FT231X (U2) USBDM and USBDP pins through 27Ω resistors (R1 and R2), just as they would be in a USB 2.0-only setup. I can leave everything else unconnected.
I added protection diodes (D20 and D21) to keep 5V current from one cable going back up the other—should they both be plugged in at the same time—and potentially damaging one or other system. Data line collision caused by both cables being plugged in won't hurt anything—it just won't work—so I left off that protection (I'm relying on users to not do this).
In the layout below, you can see the relative size of the Micro-B connector (J1) on the left as compared compared to the Type-C SMT/Thru-hole connector (J2) on the right.
For a better view, the image below shows, a USB Micro-B connector (upper left), a surface mount (SMT)-only USB Type-C connector (upper middle), and a combined SMT and through-hole Type-C connector (upper right), next to a US dime (lower left).
I, for one, am anxiously awaiting the general and widespread adoption of USB Type-C connectors. Until that time, as long as I have the board space available, I'll be putting both connectors on my boards. How about you? Are you already deploying USB Type-C connectors in your embedded systems? If not, when do you anticipate doing so?