Devices which can be charged over USB can be found everywhere today. It would therefore be very useful if you can charge your embedded system with already available chargers and accessories. Right? It is not only a marketing requirement to use USB charging, it is just obvious. But designing embedded systems with USB charging is not as simple as using it. The different specification makes it very difficult to get a simple overview. And it doesn’t make it easier that all the latest standards must be backwards compatible. USB was primarily not invented for charging. Since the Battery Charging (BC) specification, it is possible to charge up to 7.5 W with 5 volts. With the newer Power Delivery standard, it is even possible to supply laptops and displays up to 100 W, but the voltage must be boosted to 20 volts.
Let us look at the BC1.2 specification first. There are different USB power states and defined ports, like Charging Downstream Port (CDP), Dedicated Charging Port (DCP) and Standard Downstream Port (SDP). The question on the system level is, whether we need data transfer over USB in our application or not. The next question is, whether we want to charge our device with a wall power supply, a regular USB port on a PC or with a dedicated one. The Dedicated Charging Port does not support any data transfer and therefore can handle up to 1.5 A charging current, whereas the Standard Downstream Port has defined three levels of current limits. 2.5 mA for suspend mode, 100 mA for normal connection and 500 mA for requested high current mode. This request requires proper enumeration. All ports can be detected through charging circuit detection. Therefore, there must be such a silicon solution, which supports all these modes. The ports differ in the hardware circuits. For example, the data ports (D+/D-) of the DCP are connected through a small resistance (<200 Ohm). The other ports have pulldown resistors at the communication pins, additionally, the CDP needs an intelligent switching solution to allow data transfer and high-current charging.
|USB Port||Abbreviation||Enumeration||Use Case|
|Dedicated Charging Port||DCP||NO||USB wall power adapter|
|Standard Downstream Port||SDP||YES||Regular USB port on a PC|
|Charging Downstream Port||CDP||YES||PC USB port with high current charging, marked with a flash|
The next step is the Power Delivery (PD) standard, where the device can negotiate the current and voltage level with the port and cable. This standard goes along with the new rotational-symmetric USB cable Type-C, which should replace all previous cables. This simplicity has been brought about by additional electronics complexity which goes along with the costs respectively.
What does it practically mean for our embedded system, if we want to charge with USB? Our charger solution needs USB charger detection. The input voltage can be set with the Power Delivery from 5 to 20 volts. This leads to difficulties in finding a suitable solution. There are several approaches possible with separated buck and boost converters or combined buck-boost chargers, which has a similar topology like an H-bridge. That guides us to the next and last part of this blog post series, where I want to show you our embedded solution using lithium-ion batteries with our Colibri iMX7 System on Module. For the new design, I recommend going with USB type C cables. But here I will only talk about the older BC1.2 standard by using micro-USB connectors. I hope that the outcome of this part is the understanding that USB is not just plug in the cable to the connector. Further investigation is needed by using USB to charge batteries the first time.