Projekt USB w 4 godziny?
| Prezentacje firmowe ArtykułyNikt nie zaprzeczy, że interfejs USB zdobył rynek urządzeń konsumenckich i staje się coraz popularniejszy w przemyśle. Mimo że pozycja RS232 i RS485 wydaje się niezagrożona, to wiele nowych układów, zwłaszcza peryferyjnych, wyposaża się w USB. Siłą rzeczy konstruktorzy muszą sobie z tym radzić. Najczęściej radzą sobie najdrożej, stosując scalone konwertery.
Dotychczasowy standard komunikacyjny, czyli interfejs RS232, ma prawie same zalety, jest odporny na zakłócenia i prosty w implementacji. Wystarczy mikrokontroler z układem USART i transceiverem linii, aby zrealizować funkcjonalną komunikację.
Dzisiaj konstruktor staje często przed problemem obsługi tzw. wirtualnego portu COM, czyli obsługi klasy USB CDC (Comunication Device Class). Opinia głosi, że z USB jest dużo trudniej sobie poradzić i najlepiej użyć scalonego konwertera USB – USART.
Rozwiązanie jest proste, ale nie optymalne, gdyż:
- dodatkowy układ w obudowie 32-pinowej powiększa zajęte miejsce na PCB,
- konieczny jest kolejny rezonator kwarcowy w układzie,
- układ USART będzie zajęty obsługą USB,
- pobór prądu całego urządzenia będzie większy,
- dostępne drivery są tylko dla klasy urządzeń CDC,
- rozwiązania takie skutkuje brakiem obsługi innych klas i urządzeń composite device.
Alternatywą jest zastosowanie mikrokontrolera z wbudowanym interfejsem USB. W przypadku prostych aplikacji najtrafniejsze będzie użycie znanych i popularnych mikrokontrolerów AVR. Oferują one dużą wydajność obliczeniową rdzenia oraz pełny zestaw peryferii. Dodatkowo firma Atmel postarała się, aby konstruktorzy nie musieli zgłębiać meandrów klas i driverów USB.
Jako przykład możliwości kryjących się w tym układzie poniżej przytoczony został projekt aplikacji, która imituje zachowanie popularnych konwerterów USB – USART. Opracowanie tego projektu zabiera jedynie 4 godziny, jeśli tylko projektant ma zestaw startowy lub prototyp funkcjonalny urządzenia z układem ATMega32U4 i zna podstawy języka C.
Harmonogram pracy może wyglądać następująco:
- Godz. 8.00 – poranna kawa.
- Godz. 8.10 – Pierwszym krokiem w opisanym zadaniu jest ściągnięcie ze strony www.atmel dokumentacji mikrokontrolera ATMega32U4 i pakietu oprogramowania USB wraz z przykładowymi projektami, co zabiera około 10 minut.
- Godz. 8.20 – w ciągu kolejnych minut następuje analiza przykładowych projektów i uruchomienie ich na prototypie urządzenia lub zestawie startowym.
- Godz. 9.00 – rozpoczęcie pierwszego projektu USB – CDC z importowanymi plikami driverów interfejsu USB i odpowiednich klas.
- Godz. 10.00 – rozpoczęcie drugiego projektu z poprawionymi błędami z pierwszego projektu.
- Godz. 11.00 – połączenie projektu USB – CDC z własną aplikacją i testowanie softu.
- Godz. 12.00 – zakończenie projektu i drugie śniadanie.
Zasoby mikrokontrolera użyte do obsługi klasy CDC przy użyciu kompilatora GCC to około 5kB pamięci Flash i poniżej 100 bajtów RAM. Nie są konieczne inne peryferie takie jak timer, USART itd. Obsługa wirtualnego portu COM nie obciąża także istotnie układu Mega32U4 i może on realizować pozostałą część aplikacji, np. pomiary, obsługę wyświetlacza, komunikację z innymi peryferiami.
Powyższy przykład jest oczywiście uproszczony i z pewnością nie obejmuje wszystkich zagadnień koniecznych do budowy pełnowartościowego urządzenia, ale pokazuje, że wbrew utartym opiniom obsługa portu USB nie musi być wcale skomplikowana. Część sprzętowa takiego rozwiązania ogranicza się jedynie do zastosowania odpowiedniego złącza i kilku elementów RC.
Warto dodać, że w ofercie Atmela znajduje się kilkadziesiąt różnych mikrokontrolerów z interfejsem USB. Dzięki udostępnionym przez firmę Atmel przykładom i oprogramowaniu konstruktor nie musi wnikać w szczegóły danej klasy urządzeń. Oprogramowanie klas bardzo łatwo połączyć z własną aplikacją.
Atmel udostępnia w tym zakresie oprogramowanie dla następujących klas:
- HID – Human Interface Device,
- CDC – Comunication Device Class,
- MSD – Mass Storage Device,
- Audio Class.
Dodatkowo dostępne są:
- DFU – Device Firmware Upgrade,
- Composite device (kilka klas w jednym urządzeniu).
Marcin Korus
JM Elektronik
www.jm.pl