Dodawanie interfejsu USB do urządzeń

| Technika

Od nie tak dawna podstawowym protokołem łączności pomiędzy urządzeniami, w miejsce tradycyjnych standardów szeregowych, stał się USB. Ostatnio notuje się na rynku zwiększone zapotrzebowanie na układy peryferyjne z USB, jak klawiatury, drukarki, pamięci przenośne, czy na urządzenia komunikujące się z komputerami za pośrednictwem tego interfejsu.

Dodawanie interfejsu USB do urządzeń

Od swojego wprowadzenia protokół USB, stał się technologiczną gwiazdą. Wystarczy wejść do dowolnego sklepu elektronicznego, aby przekonać się, że co trzecie urządzenie jest wyposażone w port USB. Rozpoczął on swój żywot jako zamiennik poprzednich portów łączności z komputerem, RS-232, czy równoległego. A teraz jest stosowany do wszelkich urządzeń, od podgrzewaczy kawy w kubku, do twardych dysków 10GB. Specyfikacja USB definiuje wszystko: złącza i kable, działanie systemu, warstwy sieci i zarządzanie zasilaniem.

Krótka historia

Standard USB został ogłoszony oficjalnie w roku 1995 przez konsorcjum, sformowane przez siedem czołowych firm komputerowych i komunikacyjnych: Compaq, DEC, IBM, Intel, Microsoft, NEC i Northern Telecom. Od tego czasu powiększyło się ono do ponad 1000 członków forum wdrażania USB (USB-IF). W roku 1996 powstała norma USB 1.0, specyfikująca główne aspekty standardu USB jakie znamy: wsparcie szybkiej magistrali 12Mb/s i powolnej 1,5Mb/s, mechanicznie definiująca złącza i specyfikująca stos programowy.

W roku 1999, ze względu na wielką popularność protokołu USB i jego drobne wady, wprowadzono nowelizację 1.1. Wersja ta usunęła pewne niejednoznaczności odnośnie taktowania i usunęła kilka problemów, które się ujawniły w wersji poprzedniej. Ale swoje 5 minut USB osiągnął dopiero w 1999, gdy Microsoft i Apple jego użycie włączyły do swoich systemów operacyjnych. W roku 2000 ukazała się nowelizacja USB 2.0, kompatybilna z USB 1.1, ze specyfikacją magistrali 480Mb/s. Pod koniec 2001 dodano suplement USB On-the Go (OTG). Zrobiono to ze względu na rosnące zapotrzebowanie przystosowania tej normy do przenośnych urządzeń z USB i z potrzeby umożliwienia tym urządzeniom wzajemnego porozumiewania się. Powstały wtedy złącza mniejszych wymiarów i usprawniono zarządzanie zasilaniem. Później powstała norma Wireless USB, służąca do bezprzewodowej łączności z punktu do punktu, opartej na sieciowym protokole USB. Obecnie nieliczne firmy wytwarzają podzespoły tego standardu, w innych znajdują się one w fazie końcowych testów.

Norma USB specyfikuje konfigurację gwiaździstą, w której centrum jest hub. W sieci jest tylko jeden host w systemie, zwykle komputer. Ale od wprowadzenia normy USB OTG hostem może być każde urządzenie.

Magistrala USB może zasilać połączone z nią urządzenia. Początkowo, w trakcie konfiguracji, dostarcza 100mA, ale po skonfigurowaniu może dostarczać do 500mA. Dostarczanie zasilania jest korzystną właściwością interfejsu z USB. Jak już wspomniano, na rynku istnieje wiele produktów, używających USB z tego tylko powodu, jak lampki, wentylatory, czy podgrzewacze kawy. Tego rodzaju gadżety nie pobierają zwykle więcej niż 100mA i nie komunikują się z hostem.

Kilka zespołów pracuje obecnie nad stworzeniem nowej normy (zasilającego) Powered USB, czyli USB PlusPower. Interfejs ten ma dostarczać napięć stałych do 24V i byłby obciążalny prądem do 6A. Osiągalne by to było za pomocą dwóch dodatkowych przewodów w kablu i zmodyfikowanych złączy, kompatybilnych wstecznie ze standardowymi złączami USB.

Rozrastanie się aplikacji z USB zmotywowało organizację USB do sprecyzowania pewnego standardu dla urządzeń, mających podobne charakterystyki, w grupach nazwanych klasami. Utworzenie tych specyfikacji pozwoli wykonawcom tworzyć rodzajowe sterowniki urządzeń, nadające się do użytku z różnymi urządzeniami, ale tej samej klasy. Jedno urządzenie może należeć do kilku klas.

Projektowanie układów USB

Rozpoczynając projektowanie układu USB trzeba sobie odpowiedzieć na wiele pytań, ułatwi to dobór odpowiednich podzespołów i właściwej architektury:

  • czy projektowany układ ma być hostem, urządzeniem, czy jednym i drugim?
  • czy układ ma oddziaływać wzajemnie z innym urządzeniem lub komputerem?
  • czy komunikacja ma się odbywać ze zmniejszoną, pełną, czy wielką szybkością?
  • czy moc układu należy uznać za dużą, czy małą?
  • czy jego architektura będzie samodzielna, czy oparta na kilku procesorach?
  • jeśli będzie użytych kilka procesorów, jak będą się komunikować?
  • z jakimi urządzeniami będą potrzebne interfejsy? Klasy HID? Pamięcią masową? Innymi?
  • czy ma być hub USB?
  • czy USB będzie potrzebny, czy można się będzie bez niego obejść?

Rys. 1. Schemat blokowy projektu z układem EZ-Host firmy Cypress.

W miarę postępu prac projektowych i poszukiwania rozwiązań, napotyka się na nieograniczone możliwości ich realizacji albo w postaci hosta, albo układu peryferyjnego. Najprostsza z tych opcji łączy się z zakupem zewnętrznego konwertera USB, komunikującego się z interfejsem istniejącym w powstającym układzie. Wiele firm dostarcza konwerterów USB do RS232 lub USB do Ethernet. Kilku producentów, jak TI, FTDI, dostarcza układów przetwarzających sygnały USB do Ethernet lub RS-232. Inni, jak Philips, Micronas, Cypress, Atmel, dostarczają układów specjalnych, jak interfejsy z Flash Drive, Audio Codec, czy Smart Media. Jeżeli projekt wymaga specjalnych tanich kontrolerów, to firmy jak Microchip, Atmel i Cypress dostarczają 8-bitowych mikrokontrolerów z wbudowanymi interfejsami z urządzeniami, sterowników hostów, czy sterowników On-The-Go. Rozwiązania te łączą zwykle warstwę fizyczną z jakimś poziomem detekcji błędów.

Dla projektów bardziej wyrafinowanych Freescale, Intel, TI i NEC dostarczają kontrolerów z wyższej półki, z rdzeniami 32-bitowymi lub DSP, pozwalających tworzyć interfejsy z urządzeniami bardziej złożonymi i wymagającymi intensywniejszych obliczeń. Realizacja interfejsu USB ma implikacje nie tylko sprzętowe, ale i programowe.

Jeżeli projekt ma być układem peryferyjnym USB, trzeba być pewnym, że jego oprogramowanie jest zgodne z uzgodnieniami protokołu USB i definicjami klas. Zazwyczaj główne oprogramowanie USB ma dostarczać deskryptora do hosta USB i odpowiadać na jego instrukcje.

Jeżeli projekt ma być hostem, implikacje są większe, ponieważ host jest układem bardziej skomplikowanym. Oprogramowanie hosta musi komunikować się ze sterownikiem (jeśli jest on oddzielnym układem scalonym), z protokołem USB i ze sterownikami urządzenia, które muszą być zgodne z jedną z klas, wcześniej zdefiniowanych przez organizację USB. Dla wspomożenia wysiłku opracowywania oprogramowania i zmniejszenia ryzyka napotkania na nieprzezwyciężalne przeszkody, można posłużyć się którymś z dostępnych już gotowych programów komercyjnych, zwłaszcza przy opracowywaniu hosta USB.

Inną opcją jest użycie komercyjnego systemu operacyjnego, jak Windows CE, Linux (komercyjny lub nie), itp. W ramach tej opcji dostarczany jest system i w większości przypadków przetestowane sterowniki. W niektórych przypadkach pozostaje jedynie utworzenie interfejsu z kontrolerem hosta, ponieważ host w projektach systemów wbudowanych jest realizowany wraz z obwodem, który nie jest dla komputera typowy.

Układ peryferyjny/host USB

Rys. 2. Realizacja sterowany przez program przełącznika zasilania

Jako przykład można rozważyć interfejs do przyrządu medycznego współpracujący z drukarką, klawiaturą i pamięcią Flash w wersji USB oraz realizujący interfejs z portem USB komputera. Komunikację można oprzeć o 32-bitowy mikrokontroler, wykonujący podstawowe funkcje przyrządu i mający interfejs z użytkownikiem. Zatem na początku projektu trzeba było przejrzeć mikrokontrolery z wbudowanymi funkcjami USB. Większość ma tylko interfejsy z urządzeniami USB, a te nieliczne, które mają sterowniki hosta i urządzeń, okazują się często zbyt kosztowne dla rozwiązania docelowego. Dlatego korzystniejsze bywa użycie standardowego 32-bitowego mikrokontrolera i dodanie peryferyjnego układu scalonego, spełniającego specyfikację USB, jak na przykład EZ-Host firmy Cypress (CY7C67300), który ma cztery kanały, co pozwala mu komunikować się z wszystkimi układami peryferyjnymi równocześnie. Ma także kilka możliwości komunikowania się z głównym 32-bitowym mikrokontrolerem, o doskonałym wsparciu technicznym producenta.

Na rys. 1 pokazano schemat blokowy takiego projektu, z uwidocznionym dla prostoty jednym tylko interfejsem, z pamięcią Flash, pozostałe dwa również są połączone z EZ-Host. Układ Cypress został włączony i pamięć została odwzorowana w obszarze pamięci mikrokontrolera. Ponieważ przewiduje się łączenie urządzenia z gotowymi układami peryferyjnymi, zasilacz i zarządzanie zasilaniem magistrali USB musi być projektowane rozważnie. Nagłe wzrosty prądu zasilania powinny być łagodzone, a pobór mocy ograniczany, aby dostępne zasoby mocy nie zostały wyczerpane.

Następnym zadaniem był wybór oprogramowania. Gdyby przyrząd miał być jedynie układem peryferyjnym, droga oprogramowywania byłaby znacznie prostsza, ponieważ układ peryferyjny, aby być kompatybilny z USB, musi operować ograniczoną liczbą funkcji, przede wszystkim dostarczyć deskryptora i dokonać kilku wymian potwierdzeń. Ale jeśli przyrząd ma wykonywać również funkcję hosta, implikacje dla oprogramowania są znaczne. Przy umiarkowanym budżecie korzystnym wyborem może być komercyjna wersji wbudowanego Linuksa. Oszczędza to wysiłku opracowywania sterowników USB, a także nadaje elastyczność w zdobywaniu gotowych sterowników dla różnych urządzeń USB (drukarka, klawiatura i pamięć Flash).

Sterowany przez program przełącznik zasilania

Rys. 3. Pomost RS232-USB

W bardziej złożonym przypadku wymieniony przyrząd może współpracować z kilkoma urządzeniami USB, np. kamerą i sterownikiem ruchu, połączonymi z wbudowanym hubem za pośrednictwem USB. Na rys. 2 pokazano schemat blokowy takiego urządzenia, wymagającego sterowanego programem przełączania zasilania i ograniczenia liczby kabli łączących go z komputerem do jednego. Przełącznik ten powinien być zasilany oddzielnie, ponieważ główny zasilacz może nie być włączony. W takim przypadku przełącznik zasilania można połączyć z magistralą USB. Układ oparto na procesorze PIC18F2455 firmy Microchip, zawierającym interfejs USB. PIC ma interfejs z portem USB, przez który jest sterowany przekaźnik półprzewodnikowy. Za pośrednictwem tego przekaźnika do zasilacza głównego jest doprowadzane napięcie z sieci energetycznej. Dla uproszczenia oprogramowania w komputerze urządzenie zostało przedstawione jako interfejs HID.

Przetwornik USB/RS-232

Rys. 4. Dołączenie czterech urządzeń z interfejsem RS232 do komputera z USB

Innym przypadkiem jest umożliwienie aktualizacji urządzenia pierwotnie wyposażonego w interfejs RS-232 (rys. 3). Tu również można użyć układu firmy Microchip, ze względu na znajomość sprzętowych rozwiązań USB producenta, niski koszt i elastyczność układu. Umożliwia to także zwiększenie liczby linii cyfrowych wejść/wyjść i analogowego wejścia.

Hub USB

W tym przypadku (rys. 4) istnieje potrzeba połączenia czterech urządzeń RS-232 z silnie zintegrowanym urządzeniem z komputerem bez RS232. Jedyną możliwością było przetworzenie wszystkich linii RS-232 w USB i połączenie ich hubem USB, mającym połączenie z portem USB komputera. Za przetwornik RS-232/USB może służyć urządzenie podobne do omówionego powyżej. Jako hub można użyć zwyczajny układ scalony TI, TUSB2046, ponieważ jest prosty, tani i kompatybilny z USB 1.1. Są także inne, firm Cypress i Philips, kompatybilne z USB 2.0.

Dodatkowe informacje w Internecie

http://www.usb.org - specyfikacja Universal Serial Bus, zawiera teksty wszystkich norm i kilka prezentacji z użytecznymi informacjami

http://www.everythingusb.com - opisy produktów i nowych aplikacji USB,

http://www.usbman.com - wiele wskazówek i użytecznych informacjami.

Podsumowanie

Właściwości protokołu USB odwołują się zarówno do projektantów jak i do użytkowników, a dotyczą urządzeń zasilanych z magistrali, auto-wykrywalnych, samokonfigurujących się, rozszerzalnych i szybkich. Taka prostota w użytkowaniu jest oczywiście wynikiem użycia bardziej złożonego i droższego sprzętu i oprogramowania niż w starszych szeregowych i równoległych układach, które zostały przez USB zastąpione. Ten interfejs jest dostatecznie elastyczny dla zwyczajnych układów peryferyjnych jak sterowniki i klawiatury, a także dla urządzeń specjalizowanych do aplikacji, jak przyrządy medyczne, aparatura, czy podgrzewacze kawy ze sterowaniem PID. (KKP)