USB w urządzeniach elektronicznych, część 2 – przegląd kontrolerów

| Technika

W pierwszej części artykułu, zamieszczonej w poprzednim numerze "Elektronika", przedstawione zostały najpopularniejsze rozwiązania z zakresu łączenia urządzeń cyfrowych z komputerem poprzez port USB oraz podstawowe informacje o tym standardzie. Część druga prezentuje interfejsy magistrali USB zintegrowane z mikrokontrolerami, jakie oferuje wielu producentów tych układów, mosty i emulatory oraz rozwiązania programowe.

USB w urządzeniach elektronicznych, część 2 – przegląd kontrolerów
Rozwiązania alternatywne

Firma FTDI Chip ma w swojej ofercie m.in. układy FT232R emulujące port szeregowy. Zarówno od strony komputera, jak i mikrokontrolera są one "widziane" jako standardowy port RS232. W odróżnieniu jednak od pierwotnej wersji standardu, poziomy napięć wyjściowych są zgodny ze standardem CMOS (dopuszczalne wartości: 1,8V/2,8V/3,3V/ 5V), natomiast wejściowe - ze standardem TTL. Rozwiązanie pochodzące od FTDI Chip zwalnia z konieczności implementacji stosu USB, pozyskiwania numeru VID czy pisania sterowników.

Warto zauważyć, że praktycznie każdy współczesny mikrokontroler ma standardowy port szeregowy (UART), który może zostać podłączony do FT232R i tym samym transmisja danych będzie miała charakter sprzętowy, a nie programowy. Przyspieszy to pisanie oprogramowania i umożliwi bardziej efektywne przesyłanie danych. Dużym ułatwieniem jest obsługa wirtualnego portu od strony komputera przez standardowe biblioteki lub kontrolki (np. serialport w Visual Studio).

Układy FT232R nadają się idealnie wszędzie tam, gdzie prędkość transmisji nie przekracza 3 Mb/s i wstawienie dodatkowego układu scalonego nie stanowi problemu. Dążenie producentów do redukcji kosztów, zamykania urządzeń w coraz mniejszych obudowach oraz bogata oferta mikrokontrolerów wyposażonych w sprzętowe interfejsy USB pozwala przypuszczać, że będzie to raczej przejściowa metoda obsługi USB. Istnieją jednak obszary zastosowań, w których trudno obejść się bez konwertera USB<->RS232, zwłaszcza gdy trzeba podłączyć starszy sprzęt do komputerów pozbawionych portu RS232.

Rys. 5. Typowa aplikacja układu FT232R firmy FTDI Chip

W takiej sytuacji standardową aplikację FT232 można wzbogacić o układ konwersji napięć (np. MAX232) i uzyskać praktycznie w pełni funkcjonalny port RS232. Rozwiązania tego typu są oferowane w postaci gotowych układów np. przez firmę Moxa (rys. 4). Praktyczne wykorzystanie układu FT232R sprowadza się do zaimplementowania go we własnym urządzeniu w oparciu o prostą aplikację producenta (rys. 5) oraz zainstalowania sterowników dostępnych na stronie.

Są one udostępniane bez konieczności ponoszenia opłat (w tym licencyjnych). FDTI Chip oferuje również układy FT245 zawierające równoległy port wyjściowy. Do mikrokontrolera bądź układu CPLD/FPGA podłączana jest 8-bitowa magistrala danych oraz cztery linie sterujące zapisem i odczytem. Sterowniki oferowane przez producenta (również darmowe) sprawiają, że interfejs może być widziany jako wirtualny port COM. Warto jednak zauważyć, że w tym przypadku typowe dla portu COM próby ustawienia prędkości transmisji zostaną zignorowane, dane będą przesyłane zawsze z maksymalną dopuszczalną prędkością.

W trybie wirtualnego portu można osiągnąć przepustowość na poziomie 300 KB/s, a z bezpośrednimi sterownikami producenta do 1 MB/s. Należy jednak wyraźnie zaznaczyć, że układ FT245 nie jest odpowiednikiem portu drukarki (LPT). W Internecie można odnaleźć również spektakularne przykłady programowej obsługi interfejsu USB. Jest to niewątpliwie najtańsze rozwiązanie, jednak zużycie zasobów mikrokontrolera może być na tyle duże, że nie będzie on w stanie realizować założonych funkcji.

Wynika to w dużej mierze z konieczności stałego śledzenia danych przesyłanych przez magistralę. Przykładem takiego rozwiązania jest V-USB. Jego schemat został przedstawiony na rysunku 6. Jak widać, zawiera tylko mikrokontroler i kilka elementów dyskretnych. Udostępniony firmware implementuje standard USB w wersji 1.1 i jest przeznaczony dla AVR-ów wyposażonych w przynajmniej 2kB pamięci programu i 128B pamięci RAM. Sama obsługa USB zajmuje od 1150 do 1400B pomięci Flash. Wymagany jest zegar o częstotliwości 12 MHz lub większej.

Tabela 3. Przegląd popularnych mikrokontrolerów z interfejsem USB

Dostępne są cztery rodzaje licencji:

  • darmowa licencja na zasadzie GNU GPL - wymagana jest publikacja schematów oraz kodu źródłowego projektu,
  • licencja hobbystyczna (9,9 euro) - zwalnia z konieczności publikowania schematów oraz kodu źródłowego, niemniej licencja dopuszcza możliwość produkcji nie więcej niż 5 urządzeń,
  • licencja podstawowa (199 euro) - jw. z tym że dopuszcza się produkcję do 150 sztuk urządzenia.
  • licencja profesjonalna (500 euro) - dopuszcza się wyprodukowanie około 10 tys. urządzeń.

Warto wspomnieć, że w opłatę licencyjna wliczono przyznanie numeru PID na wyłączność w ramach puli numerów przyznanej Objective Development Software.

USB 3.0

Następcą standardu USB 2.0 będzie standard 3.0, który przewiduje transmisję danych z prędkością do 4,8 Gb/s, czyli ma być dziesięciokrotnie szybszy. Przepustowość osiągana w praktyce może być znacząco niższa, podobnie jak ma to miejsce w obecnej wersji standardu. Z teoretycznego pasma 480 MB/s udaje się osiągnąć jedynie nieco ponad połowę (280 MB/s). W przypadku transferów dochodzących do 4,8 GB/s należy liczyć się ze stratami powstającymi na złączach i przewodach, powodujących znaczące tłumienie sygnału.

Rys. 6. Przykładowy schemat urządzenia zawierającego programową obsługę USB (V-USB)

Drugą, znaczącą zmianą będzie wprowadzenie jednoczesnej transmisji danych w obu kierunkach. Założenie to zostanie zrealizowane w oparciu o dwie pary przewodów - jedna z nich będzie przeznaczona do wysyłania, a druga do odbierania danych. Zmianie ulegnie także sposób komunikacji z urządzeniami, gdyż zamiast ciągłego odpytywania (polling) wprowadzona zostanie metoda oparta o przerwania. Urządzenie przed wysłaniem pakietu będzie przesyłać żądanie obsługi do hosta.

Nowa specyfikacja przewiduje zmiany także w zakresie zasilania, które ma być bardziej efektywne. Przerwaniowy charakter pracy przyczyni się do oszczędności energii, gdyż urządzenia peryferyjne nie będą musiały nieustannie monitorować magistrali, aby odpowiadać na zapytania przesyłane przez host. Po zakończeniu komunikacji będą mogły one przejść do stanu obniżonego poboru mocy. Zmianie uległy parametry zasilania i minimalna wartość napięcia na złączu USB może wynosić 4,0V zamiast 4,4V.

Podniesiono natomiast limit pobieranego prądu zaraz po dołączeniu urządzenia do portu. Będzie on wynosił 150mA, a po przeprowadzeniu konfiguracji nawet 900mA. Jest to rozwiązanie o tyle pożądane, że coraz częściej akumulatory w urządzeniach przenośnych są ładowane poprzez port USB. Zwiększenie limitu prądu skróci czas ładowania akumulatorów. Dobrą wiadomością jest zachowanie wstecznej kompatybilności - urządzenia wyposażone w USB 2.0 będą pracować z portem USB w wersji 3.0 i odwrotnie, ale maksymalny transfer będzie możliwy tylko przy połączeniu urządzeń wykonanych w nowym standardzie z portem obsługującym USB 3.0. Potrzebny będzie do tego również przewód zgodny z wymaganiami specyfikacji w wersji 3.0, który w stosunku do poprzednich wersji ulegnie znaczącej zmianie.

Oprócz dotąd znanych sygnałów (+5V, GND, D+, D-) złącze w nowej wersji będzie wyposażone w dodatkowych pięć wyprowadzeń, czyli będzie ich w sumie dziewięć. Nowe złącza zaprojektowano w taki sposób, aby można było podłączyć do nich starsze przewody. Na rysunku 7 przedstawiono nowy typ złącza, natomiast w tabeli 2 podano sygnały wchodzące w jego skład.

Podsumowanie

Rys. 7. Wyprowadzenia złącza zgodnego ze standardem USB 3.0

Współczesne mikrokontrolery coraz częściej mają zintegrowany kontroler magistrali USB. Staje się to powoli standardem podobnie jak integracja interfejsów komunikacyjnych takich jak I2C, SPI czy UART. W przyszłości zapewne znacząca część urządzeń będzie podłączana do komputera przez port USB. Może się również okazać, że układy niewymagające komunikacji z PC także zostaną wyposażone w ten port, aby zapewnić możliwość aktualizacji oprogramowania przez klienta.

Rozwiązanie takie z jednej strony ma dużą zaletę w postaci szybkiego usuwania wszelkich błędów, ale może stwarzać pokusę do wypuszczania na rynek niedopracowanych rozwiązań w myśl zasady, że przygotuje się potem poprawkę. Wyposażenie urządzenia w USB nie stanowi obecnie dużego problemu dzięki dostępności mikrokontrolerów ze zintegrowanym kontrolerem i dostępem do not aplikacyjnych oraz przykładowych kodów źródłowych.

Pobierając stosowne biblioteki ze strony producenta i modyfi- kując załączone przykłady, można szybko wprowadzić standard USB do swoich produktów. Istnieje także droga na skróty w postaci układów emulujących port szeregowy od strony układu i komputera. Dodatkową zaletą takich rozwiązań jest ominięcie problemu pozyskania numeru VID, ale kosztem zwiększenia rozmiaru płytki i ceny urządzenia. Dobrym sposobem na zdobycie pierwszych doświadczeń z USB jest zakup jednego z wielu zestawów ewaluacyjnych dostępnych na rynku, przeznaczonego dla wybranej rodziny mikrokontrolerów.

Pozwoli on na szybkie uruchomienie przykładów opracowanych przez producenta i sprawdzenie, jakie zmiany można wprowadzić do oprogramowania. Znajomość protokołu komunikacji na poziomie wykraczającym poza podstawowe informacje zawarte w artykule może okazać się niezbędna do sprawnego posługiwania się przykładowymi kodami źródłowymi. Pełną specyfikację można znaleźć na stronie organizacji USB-IF.

Jakub Borzdyński

Zobacz również