
Zasilanie urządzenia z popularnej ładowarki USB-C pozwala uprościć jego codzienną obsługę i ograniczyć liczbę dedykowanych zasilaczy. W wielu projektach pojawia się jednak potrzeba uzyskania napięcia wyższego niż 5 V lub dostarczenia większej mocy. Wówczas częścią układu zasilania staje się także komunikacja: odbiornik musi poznać możliwości źródła, uzgodnić parametry pracy i odpowiednio zareagować na ich zmianę. Zadania te realizuje protokół USB Power Delivery, którego obsługę można powierzyć mikrokontrolerowi STM32.
Rozwój standardu i parametry zasilania
Klasyczny port USB 2.0 udostępniał skonfigurowanemu urządzeniu wydajność do 500 mA przy 5 V, czyli maksymalna moc odbiornika mogła wynosić zaledwie 2,5 W. Wraz ze wzrostem zapotrzebowania prądowego urządzeń mobilnych (głównie smartfonów i tabletów) ładowarki sieciowe oraz power banki zaczęły udostępniać większą wydajność – 2 A lub więcej. Jednym z głównych ograniczeń okazało się… zastosowane złącze – przez wiele lat urządzenia przenośne korzystały z przestarzałego gniazda Micro USB.
Wprowadzenie USB-C umożliwiło zwiększenie dostępnego prądu do 3 A przy napięciu 5 V, ale obsługa zasilania wymaga odpowiedniej terminacji linii CC (Configuration Channel). USB Power Delivery (a ściślej rzecz ujmując – USB Type-C® Power Delivery) wprowadza dodatkowo cyfrowe uzgadnianie warunków zasilania, pozwalając zwiększyć zarówno napięcie, jak i moc dostarczaną do odbiornika. Należy przy tym pamiętać, że obecność gniazda USB-C nie musi oznaczać obsługi PD, gdyż realizacja tego interfejsu wymaga odpowiednich układów sprzętowych i implementacji protokołu cyfrowego. Jeżeli urządzenie nie ma zaimplementowanych stosownych rozwiązań, pozostaje ono „uwiązane” do standardowych 5 woltów.

Co ciekawe, sprzętowy kontroler USB PD znajduje się obecnie zarówno w prostych, niedrogich mikrokontrolerach – takich jak chociażby STM32G071 – jak i w zaawansowanych rodzinach z serii High Performance. Przykładem może być tutaj 600-megahercowy procesor STM32H7S3L8, obecny w zestawie NUCLEO-H7S3L8.

Poniższe zestawienie pokazuje rozwój standardu Power Delivery i jego parametry graniczne. Poszczególne urządzenia obsługują określony zakres napięć, prądów i dodatkowych funkcji, zależnie od potrzeb aplikacji oraz możliwości technicznych. W trybach PPS (Programmable Power Supply) i AVS (Adjustable Voltage Supply) odbiornik wybiera napięcie z zakresu ogłoszonego przez źródło. Umożliwia to dopasowanie warunków zasilania do układu ładowania lub przetwornicy pracującej w urządzeniu. Jeżeli precyzyjna regulacja parametrów zasilania nie jest wymagana, można skorzystać z trybów predefiniowanych napięć (Fixed voltage source): 5 V, 9 V, 15 V lub 20 V – jest to tzw. standardowy zakres mocy, czyli SPR (Standard Power Range).
| Rewizja USB PD | Maksymalna moc | Najważniejsze cechy |
|---|---|---|
| 1.0 | 100 W: 20 V, 5 A | Historyczne profile zasilania 5/12/20 V; sygnalizacja FSK na VBUS. |
| 2.0 | 100 W: 20 V, 5 A | Wprowadzenie komunikacji BMC po liniach CC w USB-C. W późniejszych wydaniach uporządkowane reguły zasilania z poziomami 5/9/15/20 V. |
| 3.0 | 100 W: 20 V, 5 A | Rozszerzone komunikaty oraz PPS: zadawanie napięcia z krokiem 20 mV i ograniczenia prądu z krokiem 50 mA. |
| 3.1 | 240 W: 48 V, 5 A | EPR dodaje stałe poziomy 28/36/48 V i regulację AVS z krokiem 100 mV; zachowano zakres SPR do 100 W. |
| 3.2 | 240 W: 48 V, 5 A | Rozszerzenie AVS na zakres SPR oraz dalsze aktualizacje protokołu. |
Przepływ prądu powyżej 3 A wymaga przewodu z elektronicznym znacznikiem, który potwierdza obciążalność 5 A. Praca w rozszerzonym zakresie mocy EPR (Extended Power Range) wymaga ponadto przewodu przeznaczonego do tego trybu oraz przeprowadzenia procedury wejścia w EPR. Parametry przewodu stanowią zatem jeden z warunków ustalania dostępnej mocy. Tryb EPR (Extended Power Range) rozszerza zakres napięć o dodatkowe wartości: 28 V, 36 V i 48 V. Maksymalny prąd pozostaje równy 5 A, a wyższe napięcie pozwala zwiększyć moc zasilania aż do 240 W.
Warstwa fizyczna i role portów
Źródło energii, czyli Source, udostępnia na wyprowadzeniach CC1 i CC2 rezystory podciągające (Rp), natomiast odbiornik (Sink) – terminatory Rd „ściągające” linie CC do masy. Powstające w ten sposób dzielniki napięcia umożliwiają wykrycie dołączenia urządzenia oraz orientacji wtyku. Na tej podstawie wybierana jest aktywna linia CC, po której przebiega komunikacja PD. Drugi styk CC może pełnić funkcję VCONN i dostarczać energię elektronice przewodu.

Sygnał CC jest przesyłany względem masy. Transmisja przebiega półdupleksowo z nominalną szybkością 300 kbit/s, z użyciem kodowania BMC (Biphase Mark Coding). Nagłówek, dane i CRC podlegają również tzw. kodowaniu 4b5b, w którym każdej grupie czterech bitów odpowiada predefiniowany symbol pięciobitowy. Kodowanie 4b5b pozwala rozróżniać symbole danych i symbole specjalne wykorzystywane przez protokół. Możliwość odtworzenia zegara z odebranego przebiegu zapewnia natomiast kodowanie BMC, w którym przejście sygnału występuje na początku każdego przedziału bitowego.
Niezależność komunikacji PD od linii D+/D- oraz torów SuperSpeed pozwala stosować ją także w urządzeniach wykorzystujących USB-C wyłącznie do zasilania. Osobno określane są bowiem role związane z przepływem energii i transmisją danych. Port DRP (Dual-Role Power) może pełnić funkcję źródła albo odbiornika, co znajduje zastosowanie m.in. w urządzeniach akumulatorowych – jest to w pewnym sensie funkcjonalna analogia do USB OTG, z tym że odnosząca się do przesyłu energii, a nie wymiany danych. Port DRP jest szeroko stosowany m.in. we współczesnych laptopach czy smartfonach.
Budowa pakietu
Pakiet rozpoczyna się preambułą synchronizującą odbiornik, po której następują: sekwencja SOP*, nagłówek i ewentualne dane. Transmisję zamykają: suma kontrolna (CRC) oraz symbol EOP. Strukturę podstawowych komunikatów sterujących i danych przedstawiono w poniższej tabeli. Warto w tym miejscu zwrócić uwagę, że podane długości nagłówka, danych i CRC odnoszą się do zawartości przed kodowaniem 4b5b.
| Pole | Długość | Funkcja |
|---|---|---|
| Preambuła | 64 bity | Synchronizacja odbiornika; naprzemienne zera i jedynki. |
| SOP* | 4 symbole po 5 bitów | Początek pakietu i określenie rodzaju adresata. |
| Nagłówek | 16 bitów | Typ komunikatu, role, rewizja protokołu, MessageID, liczba obiektów i flaga Extended. |
| Obiekty danych | 0-7 × 32 bity | Zawartość komunikatu; zwykłe komunikaty sterujące mają zero obiektów. |
| CRC | 32 bity | Weryfikacja integralności nagłówka i danych. |
| EOP | 1 symbol 5-bitowy | Zakończenie pakietu. |
Sekwencja SOP (Start of Packet) identyfikuje komunikację między portami, a SOP′ i SOP″ służą do adresowania elektroniki przewodu. Trzybitowe pole MessageID wiąże komunikat z potwierdzeniem i umożliwia wykrywanie powtórzeń. Od PD 3.0 dostępne są również komunikaty rozszerzone, wyposażone w dodatkowy nagłówek i przenoszące do 260 bajtów danych, także z podziałem na części.
Jak przebiega uzgadnianie zasilania?
Po wykryciu odbiornika źródło udostępnia na linii VBUS napięcie 5 V. Następnie urządzenia wymieniają komunikaty ustalające docelowe warunki zasilania. Dla odbiornika potrzebującego 9 V przy 2 A przykładowa negocjacja przebiega następująco:
- Źródło (Provider) wysyła do odbiornika (Consumer) pakiet Source Capabilities z obiektami PDO (Power Data Object), opisującymi dostępne warianty zasilania.
- Odbiornik analizuje otrzymane dane i wybiera PDO o napięciu 9 V i o wystarczającej wydajności prądowej, a następnie przesyła żądanie (Request) z obiektem RDO (Request Data Object), określającym wnioskowane warunki pracy.
- Źródło weryfikuje żądanie i – jeżeli jest w stanie je obsłużyć – odpowiada Accept, po czym rozpoczyna zmianę napięcia.
- Po ustaleniu napięcia źródło wysyła komunikat PS_RDY, informując o gotowości zasilania.

Odbiór każdego z tych komunikatów jest potwierdzany przez GoodCRC, co umożliwia nadzorowanie poprawności wymiany danych. Zaakceptowanie żądania i zakończenie zmiany napięcia stanowią dwa kolejne etapy negocjacji, sygnalizowane odpowiednio przez Accept i PS_RDY. Dla aplikacji odbiornika to właśnie PS_RDY wyznacza moment rozpoczęcia pracy z nowymi parametrami zasilania.
Rodziny STM32 z interfejsem UCPD
Wbudowany interfejs USB Type-C/Power Delivery (UCPD) występuje w wybranych układach rodzin STM32G0, STM32G4, STM32L5, STM32U5, STM32H5, STM32H7R/S oraz STM32N6. W grupie mikroprocesorów obsługę tę oferuje również STM32MP2. Liczbę instancji UCPD i dostępność ich wyprowadzeń określa dokumentacja konkretnego modelu; przykładowo STM32G071 zawiera dwa takie interfejsy.

UCPD łączy analogowy interfejs CC z cyfrowym nadajnikiem i odbiornikiem. Sprzęt realizuje detekcję poziomów, kodowanie i dekodowanie BMC oraz 4b5b, generowanie i sprawdzanie CRC, a także obsługę preambuły, sekwencji SOP, EOP i sygnalizacji resetu. Przekazywanie danych pomiędzy peryferium a pamięcią może odbywać się z użyciem przerwań lub DMA.

Układy z UCPD zapewniają też terminacje Rp/Rd oraz funkcje związane z uruchamianiem niezasilanego odbiornika, określane jako dead battery. Utrzymanie odpowiedniej terminacji CC pozwala urządzeniu będącemu źródłem energii wykryć odbiornik i załączyć napięcie 5 V na szynę VBUS, z którego następnie może zostać zasilony mikrokontroler.
Współpraca peryferium, stosu i toru zasilania
Obsługa USB PD w STM32 jest podzielona pomiędzy blok UCPD, stos programowy i aplikację. Stos USBPD dostarczany przez ST realizuje warstwę protokołu PRL (Protocol Layer) oraz automat negocjacji Policy Engine. Aplikacja, poprzez Device Policy Manager, określa oferowane lub akceptowane parametry zasilania i współpracuje z układami wykonawczymi. Taki podział pozwala powiązać wybór warunków zasilania z bieżącymi potrzebami urządzenia.

Tor energetyczny obejmuje zewnętrzne klucze MOSFET, przetwornicę lub układ ładowania, obwody pomiarowe oraz zabezpieczenia. Przy projektowaniu portu EPR trzeba dobrać je do docelowego napięcia i prądu, uwzględniając również wymagania dotyczące okablowania. Dokumentacja ekosystemu ST opisuje obsługę PD 3.1, przy czym zakres funkcji realizowanych w ramach konkretnej aplikacji wynika ze współpracy użytej wersji stosu z zaprojektowanym sprzętem.
Integracja UCPD pozwala wykorzystać główny mikrokontroler urządzenia także do obsługi komunikacji PD. Projektowanie takiego portu obejmuje wybór roli energetycznej, określenie obsługiwanych parametrów zasilania oraz przygotowanie toru mocy. Na tej podstawie można skonfigurować stos i powiązać przebieg negocjacji z działaniem aplikacji.
Podsumowanie
Funkcjonalność USB-C Power Delivery w wielu urządzeniach konsumenckich (i nie tylko) stanowi obecnie must-have z uwagi na popularność portu USB-C i rosnące zapotrzebowanie na moc, zwłaszcza w przypadku nowoczesnych systemów wbudowanych. Integracja kontrolera UCPD w niektórych rodzinach STM32 pozwala uprościć obsługę złożonego protokołu negocjacji zasilania i zmniejszyć liczbę zewnętrznych komponentów.
W kolejnej części cyklu przedstawimy praktyczne testy USB-C PD na bazie wyspecjalizowanego zestawu ewaluacyjnego STM32 Discovery.
Źródła
- ST, AN5225 – USB Type-C Power Delivery dla STM32
- ST, TN1536 – podstawy USB Type-C Power Delivery
- Infineon, EZ-PD CCGx FAQ – historyczna sygnalizacja PD 1.0
- Microchip, historyczne profile zasilania
- ST, implementacja PD 3.0 z PPS
- TI, SSZTD49A – SPR, EPR, PPS i AVS; rys. 1
- USB-IF, katalog specyfikacji USB Power Delivery
- ST, TN1592 – FAQ, w tym lista rodzin i liczba UCPD w STM32G071
- ST, RM0440 – rozdział USB Type-C/USB Power Delivery interface
- ST, usbpd_def.h – format pakietu
- ST, AN6501 – pola nagłówka PD
- NXP, AN12137 – komunikaty rozszerzone
- ST, TA0356 – przebieg negocjacji
- ST, AN5164 – rzeczywisty zapis komunikacji
- ST, AN5593 – obsługa UCPD przez GPDMA
- ST, AN5225 – implementacja dead battery, pkt 11.3.1
- ST Wiki – architektura stosu USBPD
- ST – ekosystem USB-C i USB PD

Sponsorem artykułu jest firma Masters
Masters jest Oficjalnym Dystrybutorem STMicroelectronics w Polsce, Czechach, Słowacji, Ukrainie i Mołdawii. Współpracujemy nieprzerwanie od 2003 roku. Dowiedz się więcej o produktach, usługach i warsztatach, które wspólnie tworzymy na www.masters.com.pl

