Klasa komunikacyjna CDC dla AVR.pdf

(627 KB) Pobierz
092-093_klasa_komunikacyjna_CDC_dla_AVR.indd
KURS
Klasa komunikacyjna CDC
dla AVR
Port szeregowy RS232 coraz
rzadziej można znaleźć we
współczesnych komputerach
stacjonarnych, a w notebookach
praktycznie nie występuje już
od dłuższego czasu. Jednym
ze sposobów „obejścia” tego
problemu jest stosowanie dobrze
znanych naszym Czytelnikom
układów firmy FTDI. Poniżej
proponujemy jeszcze inne
rozwiązanie.
Rekomendacje:
mimo, że interfejs USB 1.1
nie zawsze będzie spełniał
nasze oczekiwania, to w wielu
aplikacjach może się okazać
wystarczający, zwłaszcza, gdy
o wyborze będzie decydować
prostota wykonania.
lerów
RS232
(ATmega8/
48/88 itp.)
możliwa do uzyska-
nia prędkość transmisji
będzie wyższa od 4800 bo-
dów. Na rys. 2 pokazano zmon-
towany konwerter USB<–>RS232.
Dostępne jest również oprogramo-
wanie konwertera USB<–>RS232
dla mikrokontrolerów ATtiny2313,
z wykorzystaniem którego można
uzyskać prędkość transmisji 9600
bodów.
A V R
bez sprzęto-
wego interfejsu
RS232). Ale w wielu
aplikacjach niewielka pręd-
kość transmisji będzie wystar-
czająca. Klasa CDC do poprawnej
pracy wymaga sterowników, które
standardowo znajdują się w Win-
dows. Po zainstalowaniu sterowni-
ków urządzenie jest widoczne jako
wirtualny port COM (podobnie jak
ma to miejsce w przypadku konwer-
terów USB–RS232 firmy FTDI), za
pośrednictwem którego komunikacja
nie jest skomplikowana.
Na stronie internetowej http://
www.recursion.jp/avrcdc/ można zna-
leźć ciekawy projekt klasy komuni-
kacyjnej CDC ( Communication Devi-
ce Class ), za pomocą której możliwa
jest implementacja interfejsu USB
1.1 w dowolnych mikrokontrolerach
AVR. Wykorzystanie klasy CDC
jest o tyle łatwe, że za jej pomocą
emulowany jest typowy konwerter
USB<–>RS232. Jedną z wad tej kla-
sy jest niska prędkość emulowanego
interfejsu RS232, która wynosi 4800
bodów (w przypadku mikrokontro-
Konwerter CDC–IO
Na stronie internetowej klasy
CDC można również znaleźć przy-
kład programu wykorzystującego
klasę CDC, w którym za pomocą
interfejsu USB możliwe jest stero-
wanie liniami portów równoległych
mikrokontrolera. Na rys. 3 pokaza-
no schemat konwertera USB<–>IO
(CDC–IO) z wykorzystaniem mikro-
kontrolera ATmega8. Stan linii por-
tów można kontrolować za pomocą
prostych komend tekstowych wysy-
łanych z wykorzystaniem terminala
lub własnego programu. W tab. 1
przedstawiono możliwe do wysła-
nia komendy. W komendach jest
używany adres rejestru danego por-
tu, który jest ustawiany, lub któ-
rego stan jest odczytywany. Adres,
jak i dane, są wysyłane/odbierane
w postaci szesnastkowej. Za pomocą
dostępnych komend możliwe jest
również zapisywanie pamięci EE-
PROM mikrokontrolera AVR. Tego
typu aplikacje można wykorzystać
np. do monitorowania, sterowania
Konwerter USB <–>RS232
z CDC
Na rys. 1 pokazano przykładowy
schemat konwertera USB<–>RS232
z wykorzystaniem 8–nóżkowego mi-
krokontrolera ATtiny45. Konwerter
taki do poprawnej pracy nie po-
trzebuje wielu dodatkowych elemen-
tów. Diody D1 i D2 obniżają zasila-
nie mikrokontrolera do wymaganego
napięcia 3,6 V w celu uniknięcia
błędów związanych z komunikacją
za pomocą interfejsu USB. Program
klasy CDC zajmuje około 2,8 kB pa-
mięci Flash. W przypadku mikrokon-
trolerów ze sprzętowym interfejsem
PODSTAWOWE PARAMETRY
• Implementacja interfejsu USB 1.1
• Mikrokontroler: AVR (np. ATtiny45)
• Prędkość interfejsu RS232: 4800 b/s (dla
emulowanego interfejsu RS232 – mikrokon-
troler bez sprzętowego UART-a), 9600 b/s
dla ATtiny2313
• Sterowniki: standardowe z systemu Win-
dows (urządzenie widoczne jako wirtualny
port COM)
• Wymagana pamięć programu: ok. 2,8 kB
Flash
• Licencja: GPL
92
Elektronika Praktyczna 2/2008
686084473.038.png 686084473.039.png 686084473.040.png 686084473.041.png
KURS
Rys. 1. Schemat przykładowego konwertera USB<–>RS232 z wykorzystaniem 8–nóżkowego mikrokontrolera ATtiny45
Tab. 1. Komendy klasy CDC–IO
Funkcja
Komenda
Format
Odpowiedź
Who
@
@
„cdc–io”, CR–LF
Get
?
adres ?
dane, CR–LF
Set
=
dane adres =
CR–LF
AND & Set
&
dane adres &
CR–LF
Rys. 2. Widok zmontowanego kon-
wertera USB<–>RS232
OR & Set
|
dane adres |
CR–LF
EX–OR & Set
^
dane adres ^
CR–LF
urządzeniami czy zbierania danych
z wykorzystaniem interfejsu USB.
Set Double
$
dane2 dane1 adres $ CR–LF
Podsumowanie
Duża zaletą klasy CDC jest niski
koszt implementacji interfejsu USB
w mikrokontrolerach AVR. Również
niskim kosztem można wykonać kon-
werter USB<–>RS232, gdyż do tego
celu wystarczy najmniejszy mikrokon-
troler AVR, np. w obudowie DIP8.
Dlatego też w wielu mniej wymaga-
jących aplikacjach za pomocą klasy
CDC i mikrokontrolera AVR można
będzie zastąpić znane układy kon-
werterów USB<–>RS232 firmy FTDI.
Oprogramowanie klasy CDC jest do-
stępne na licencji GPL i można je
dostosować do własnych potrzeb.
Z wykorzystaniem klasy CDC, której
program został przygotowany z wyko-
rzystaniem kompilatora WINAVR, bez
większych problemów można zaimple-
mentować do większości już działają-
cych urządzeń, rozbudowując je o in-
terfejs USB. Przy projektowaniu urzą-
dzenia komunikującego się za pomocą
interfejsu RS232 (gdy nie będzie po-
trzebna większa prędkość transmisji
niż 9600 bodów) warto rozważyć czy
nie lepiej będzie wykorzystać do tego
celu nowocześniejszy interfejs USB
z wykorzystaniem klasy CDC.
Marcin Wiązania, EP
marcin.wiazania@ep.com.pl
Rys. 3. Schemat konwertera USB<–>IO (CDC–IO) z wykorzystaniem mikrokontrolera ATmega8
Elektronika Praktyczna 2/2008
93
686084473.001.png 686084473.002.png 686084473.003.png 686084473.004.png 686084473.005.png 686084473.006.png 686084473.007.png 686084473.008.png 686084473.009.png 686084473.010.png 686084473.011.png 686084473.012.png 686084473.013.png 686084473.014.png 686084473.015.png 686084473.016.png 686084473.017.png 686084473.018.png 686084473.019.png 686084473.020.png 686084473.021.png 686084473.022.png 686084473.023.png 686084473.024.png 686084473.025.png 686084473.026.png 686084473.027.png 686084473.028.png 686084473.029.png 686084473.030.png 686084473.031.png 686084473.032.png 686084473.033.png 686084473.034.png 686084473.035.png 686084473.036.png 686084473.037.png
Zgłoś jeśli naruszono regulamin