Implementing USB-C PD Doesn't Have to be Scary!
Ketan Desai shows us that USB-C PD should be as easy as 1, 2, 3!
So, it's been a little while since USB-C popped onto the scene, bringing with it the much harked benefits of a reversible connector system, both in terms of the common receptacle for both ends of the connection, both host and device, but also the rotational symmetry of the connector itself, which is designed to do away with the quantum weirdness of trying to plug in a USB-A connector in all three orientations.
Along with these advancements in the design of the physical connector itself, come a few other perks — the one that I have found useful above all is the Power Delivery (PD) function, that intends to unify all the various previous efforts of DC power delivery, into a single, homogeneous, multi-voltage capable plug and connector design, with power capabilities of up to 100W being piped down that diminutive USB-C connector.
USB-C PD, it's as easy as 1, 2, 3...?
The long and short of it is that a USB-C PD enabled power supply will be able to kick out a range of voltages on its output — the standard set are 5, 9, 15 and 20V, at up to 5A in some cases, allowing for a total of 100W of power to be delivered to the device (sink / UFP) that requesting it.
The thing is, the power supply (source / DFP) needs a way of being told just what voltage output to set itself to, and indeed, the device that is hoping to be powered needs a way to make sure that the power supply supports the voltage rail that it needs.
This exchange of information takes a little bit of back and forth communication over some of the additional pins that are packed into the USB-C connector set — the CC pins. From a design perspective, this is a worked problem, with USB-C PD PHYs available, that can serve as a man-in-the-middle, often allowing a host MCU to set and configure the USB-C PD interface settings over I2C or similar.
But that sounds like it's starting to snowball a bit.
The truth is that yes, getting the most out of USB-C PD is going to take a bit more work than simply hooking into VBUS and taking what you can get your hands on from the 5V rail. At the least, you need something to speak on the CC bus itself (a PHY), and at most, you need a way of telling the bus what you'd like it to actually deliver!
If you don't have, or want to implement, a host MCU, just to get some juice on the lines, well, what options have you got? Soon enough, it's going to be the case that we need to take a look at our design options when it comes to USB-C, lest our products end up relegated to needing to ship with an external adapter every time, just for our backwards stubbornness!
One power adapter to unite them all...
I've got a secret to share with you though. Nearly all of my DC barrel jack types — and really, I didn't realize just quite how wide a variety of jack and plug variants I was using around the house — are now covered by USB-C PD. "Buthow?!" I hear you cry?
Well, there are a few tricks you can pull. If you know the right search terms, you can narrow down a few choice picks on AliExpress, eventually netting yourself a "USB-C PD Trigger," which will land you a PCB module, with a USB-C connector on one end, and either some bare PTH pads, or some sort of DC connection on the other.
In the middle of the cheaper versions of these modules often sits a single IC, usually a IP27xx/21xx part from a company that not too many people have heard of, called Injoinic.
These parts are an all-in-one solution to the USB-C PD problem, providing a simple way to address the CC bus negotiation, however, it's not a free lunch.
The documentation for these parts unfortunately hasn't yet visibly made its way to translation into many other languages, which can lead to some potential loss of detail in delivering the application specifics, leading to potential misunderstandings of the implementation detail / low-level chip operation, things we'd all rather not have to deal with!
That can be a bit of a risk to design a product around, so perhaps until those datasheets are translated, we can very much understand why designers like Ketan Desai are targeting parts from vendors like STMicroelectronics, and their STUSB4500 USB-C PD sink device.
Shown above is one of the reference designs for the STUSB4500, intended as a DC-barrel jack replacement solution. Thing is, with reference designs and development boards, they are unfortunately often priced for purchase by other companies, which is why I was so happy to see a few designs shared by Desai, that even manage to shrink the ST implementation down to a tiny size.
First up... the PoC
Available on Tindie, this board is a great, cost-effective way of laying your hands on a working implementation of a STUSB4500-based USB-C PD trigger.
Its default operation is to interrogate the USB-C PD source it is connected to, stepping through its three pre-programmed PDO (Power Delivery Output) profiles, in order to negotiate the highest possible supply of the three that the PSU can output — the default three PDO profiles are 5V, 15V and 20V, but Desai can program in custom profiles on request.
This PDO functionality can take care of the device as a standalone, USB-C PD DC replacement, offering all-in-one, "factory configurable" PD profile negotiation, but the neat thing about it is that it also can be programmed "on-the-fly" over I2C.
This enables the board to act as a integrated, programmable PD Sink device, perfect for a device that has some more advanced / flexible power input capabilities (and a host MCU to match!) or perhaps as a nice, compact development board that allows you to get more familiar with the workings and operation of USB-C PD.
It's got a few "nice to have" features also, like ESD / transient protection on the power and CC pins, and a RGB led to give the user some immediate status feedback.
With the design files also available on GitHub, this looks like a neat project that could go together with some hot air or a hot plate — you might even get away without a stencil for this one.
Honey I Shrunk The PCB!
If you want something you can heat shrink inside a cable however, the original V 1.0 of the USB PC Sink, discussed above, is a little... on the large side.
So the Mini PD, shown here — admittedly as a glorious render for now — sets to address those size concerns, and shrinks the entire solution down to something that's smaller than any of the existing trigger boards I've seen on the market to date.
Still featuring most of the original functionality — including the I2C pins, which is awesome — the only missing bit I can spot is the RGB feedback LED, which make sense, for a board that is envisioned to be shrink wrapped or encapsulated, out of sight!
If you want to take the test of skill in this double sided assembly job, I could see it being a somewhat easy build still, provided you perhaps manually deal with the soldering of the USB-C connector, after the other parts have been reflowed in place! Feeling up to it? Catch the design and manufacturing files here!
Follow along with Desai on Twitter, where rumor has it is that he's working on a similar board, to showcase the solution offered by Cypress Semiconductor, which we'll obviously follow up on that when it drops!
Not to mention, he's turning out some jaw-dropping rendering work... He could give a certain someone we've featured previously a bit of a run for their money.