Układy do interfejsów zasilania USB-C – STUSB47xx
Możliwość zasilania urządzeń przez złącze USB jest obecnie tak samo ważna jak możliwość transferu danych. Dziś wiele urządzeń ładuje lub pobiera zasilanie z portów USB znajdujących się w laptopach, samochodach, czy samolotach. USB stało się wszechobecnym gniazdem zasilania wielu małych urządzeń, takich jak telefony komórkowe, odtwarzacze MP3 i inne urządzenia przenośne. Użytkownicy potrzebują USB nie tylko do przesyłania danych, ale także dostarczania energii elektrycznej dla układów elektronicznych, lub do ładowania baterii w swoich urządzeniach.
Mimo ograniczeń dostarczanej mocy zasilanie przez złącze USB okazało się tak wygodne i popularne, że zdecydowano się zdefiniować nowy standard zasilania USB PD 2.0 (Power Delivery) oferujący następujące funkcje:
- Zwiększenie poziomu przesyłanej mocy do 100 W.
- Możliwość dwukierunkowego zasilania zarówno urządzenia peryferyjnego jak i hosta. Kierunek przesyłania energii nie jest ustalony na sztywno. Wcześniej zawsze źródłem zasilania był zawsze host.
- Optymalizacja zarządzania energią indywidualnie dla wielu urządzeń peryferyjnych pozwalająca każdemu urządzeniu na odbiór tylko wymaganej mocy. Kiedy aplikacja zacznie potrzebować więcej mocy, to USB PD 2.0 może ją dynamicznie dostarczyć.
- Inteligentne i elastyczne zarządzanie poziomem zasilania poprzez opcjonalną komunikację z hostem – komputerem PC.
- Możliwość negocjowania wymaganego napięcia zasilającego w zakresie 5…20V. Pozwala to na przykład małym urządzeniom , takim jak zestawy słuchawkowe, negocjować wymagane napięcie zasilające.
Obecnie połączenie w standardzie USB 2 zapewnia do 2,5 W mocy (5V @500mA) – wystarcza to, aby naładować telefon lub tablet, ale to wszystko. Jak już wiemy, specyfikacja USB PD 2.0 zwiększa tę moc do 100 W. Taka moc może być przenoszona w tym samym czasie, gdy urządzenie transmituje dane. Można sobie wyobrazić transmisję danych i jednoczesne zasilanie laptopa (z ładowaniem baterii), który może pobierać moc do 60 W.
Specyfikacja USB PD 2.0 jest ściśle powiązana ze standardem złącza USB Type-C. Często mylnie łączy się USB-C ze standardem USB3 czy USB3.1. Twórcy standardu USB-C nie narzucają takiego powiązania i obecnie spotyka się urządzenia ze złączem USB-C pracującym z portem USB2.0.
Standard USB-C za jednym zamachem rozwiązuje kilka praktycznych problemów z dotychczasowymi typami złączy. Po pierwsze definiuje gniazdo, które zastępuje duże złącze USB Type-A. Wszystkie złącza i gniazda są małe – ich wielkość jest porównywalna ze złączami USB mikro. Po drugie złącze jest symetryczne. Wszystkie dotychczasowe złącza USB były asymetryczne, to znaczy można je było połączyć przy określonym wzajemnym położeniu gniazda i wtyczki. Dla mnie zawsze to był niewielki problem. Często pierwsza próba połączenia się nie udawała i trzeba było odwracać wtyczkę. Tu nie ma znaczenia jak się włoży wtyk do gniazda. Jest to standard pojedynczego złącza i dla hosta i dla urządzenia , który może być używany przez każde urządzenie. Wystarczy jeden kabel, niezależnie czy podłącza się zewnętrzny dysk twardy do laptopa czy ładuje się swój smartfon z ładowarki USB. To jedno złącze jest wystarczająco małe, aby można było zmieścić się w super-cienkim urządzeniu przenośnym, ale wystarczająco „silne”, aby podłączyć wszystkie urządzenia peryferyjne do komputera. Kabel posiada wtyki USB typu C na obu końcach.
Wyprowadzenia styków gniazd i wtyków standardu USB-C zostało pokazane na rysunku 1 i rysunku 2.
Jak widać na rysunkach, w porównaniu z wcześniejszymi standardami mamy tu o wiele więcej styków:
- GND (4 styki) i VBUS (4 styki) magistrala do przesyłania napięcia zasilania – dla USB2.0 maksymalnie +5V i 500mA. Dla standardu USB-C +20V 5000mA.
- D+ i D- magistrala danych dla standardu USB2.0.
- RX1-, RX1+, oraz TX1-, TX1+ magistrala danych SuperSpeed standardu USB3.1.
- SBU1, SBU2 dodatkowa magistrala i niższej prędkości.
- CC1, CC2 magistrala danych przeznaczona do wykrywania wykonania połączenia, identyfikacji położenia wtyku względem gniazda i do negocjacji trybu pracy złącza USB, oraz parametrów zasilania.
Styki są rozmieszczone symetrycznie co – jak wiemy – umożliwia dowolne wkładanie wtyku do gniazda. Szybka magistrala danych SuperSpeed w połączeniu ze standardem USB3.1 pozwala na przesyłanie na przykład strumieni danych wideo o wysokiej jakości. Nas jednak w pierwszej kolejności będzie interesowała praktyczna realizacja standardu zasilania USB PD2.0 i związana z nim magistrala CC zbudowana z linii CC1 i CC2.
Rozbudowane układy dostarczania energii wymagają specjalistycznych sterowników i rozbudowanych układów zasilania. Jedną z realizacji sterownika USP PD jest układ STUSB4700 produkowany przez firmę STMicroelectronics. Jest to autonomiczny sterownik USB PD2 przeznaczonym do pracy jako źródło zasilania. Jedną z jego właściwości jest możliwość pracy bez konieczności komunikacji z zewnętrznym kontrolerem. Układ ten jest dobrym wyborem w sytuacji, kiedy brak jest urządzenia sterującego USB PD lub zasoby takiego urządzenia są ograniczone. Stos USB PD2 w układzie STUSB4700 jest zaimplementowany sprzętowo i umożliwia bezpieczną i poprawną negocjację połączenia z zasilanym urządzeniem wymaganą przez standard. W układ wbudowano następujące funkcje:
- Wykrywanie połączenia pomiędzy dwoma portami USB.
- Ustanowienie poprawnego połączenia host-urządzenie.
- Wykrycie i konfiguracja Vbus w trybach pracy: z małym, średnim i wysokim prądem.
- Analiza orientacji wpiętego wtyku kabla.
- Negocjowanie dostawy energii przez USB z urządzeniem obsługującym standard USB PD.
- Odpowiednie konfigurowanie źródła zasilania.
- Monitorowanie linii Vbus , oraz zapewnianie ochrony urządzenia podłączonego do magistrali.
Schemat blokowy STUSB4700 pokazano na rysunku 3.
Jak widać układ mimo, że może pracować zupełnie autonomicznie, jest wyposażony w interfejs I2C pozwalający na komunikację z hostem/masterem. Możliwa jest zmiana domyślnych ustawień poprzez zapisanie wewnętrznych rejestrów i kontrola stanu pracy układu i magistrali USB -C (w zakresie USB PD) przed odczytywanie rejestrów statusowych. Dokładny opis rejestrów i protokołu wymiany danych po magistrali I2C jest zawarty w dokumentacji układu.
Jeżeli popatrzymy na wyprowadzenia złącza USB-C pokazane na rysunku 1 zobaczymy tam dwa piny oznaczone jako CC1 i CC2. Te piny tworzą magistralę przeznaczonej do wykrywania podłączenia do portu i określenia orientacji włożenia wtyku do gniazda. Układ STUSB4700 ma wbudowany blok kontrolny CC line access sterujący magistralą CC i współpracujący z warstwa protokołu USB CC, oraz sterownikiem PORT C. Blok interfejsu BMC jest przeznaczony do transmisji danych poprzez linie CC z urządzeniem negocjującym parametry zasilania.
Stan linii CC1 i CC2, oraz napięcie na VBUS są podstawowymi danymi dla pracy stosu USB PD2. Stan linii CC1 i CC2 jest używany do:
- Wykrywania połączenia pomiędzy dwoma portami USB np. pomiędzy źródłem napięcia i obciążeniem. Każda z linii CC źródła ma dołączony rezystor Rp podłączony do plusa zasilania a każda z linii CC obciążenia rezystor Rd podłączony do masy. Monitorowanie napięcia na liniach CC1 i CC2 pozwala na wykrycie połączenia obu portów ( po połączeniu tworzy się dzielnik napięcia i napięcie na CC1 i CC2 spada).
- Wykrywanie orientacji włożonego kabla. Po wykryciu połączenia jeden z pinów CC przejmuje rolę źródła napięcia zasilania VCONN. Drugi pin CC zależnie od pozycji wskazuje, która z magistral Super Speed (TX1/RX1, lub TX2, RX2) będzie wykorzystywana do transmisji danych.
- Ustalenie roli układów na magistrali (host – urządzenie).
- Konfigurowanie wydajności prądowej źródła zasilania. W procesie inicjalizacji określa to wartość rezystancji Rp dołączanej po stronie źródła. Potem możliwa jest programowa negocjacja.
Zależnie od wartości rezystora Rp możliwe jest „zaprogramowanie” wydajności standardowej USB: 1,5A lub 3A przy +5V.
Blok BMC (BMC Driver) jest fizycznym połączeniem pomiędzy warstwą protokołu USB PD i blokiem kontrolnym wyprowadzeń CC. W trybie pracy TX konwertuje dane zakodowane w BMC (Biphase Mark Coding) i wysterowuje linie CC do pracy z prawidłowym napięciem. W trybie RX odczytuje stan linii CC i konwertuje na dane przesyłane do warstwy protokołu. BMC jest używany do transmisji danych przez linie CC1 i CC2 pomiędzy sterownikiem źródła, a sterownikiem obciążenia. Transmisja danych umożliwia programową negocjację parametrów zasilania przez USB-C.
Blok warstwy protokołu jest odpowiedzialny za zarzadzanie komunikatami przesyłanymi z i do warstwy fizycznej. Wbudowane mechanizmy automatycznie zarządzają timeout’ami odbioru danych, licznikami komunikatów i licznikami ponowień przesłania komunikatów. Warstwa protokołu współpracuje z blokiem Policy Engine.
Policy Engine negocjuje zasady dotyczące zasilania podłączonego urządzenia pracującego jako źródło energii. Ma zaimplementowane wszystkie maszyny stanów, które kontrolują tworzenie i zarządzenie komunikatami. Policy Engine wykorzystuje warstwę protokołu do wysyłania i odbierania komunikatów. Statusy odczytywane z bloku portów oraz układu monitorowania napięcia (voltage montoring) są intepretowane w bloku Policy Manager.