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
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
Plik z chomika:
serialiki-i-filmiki
Inne pliki z tego folderu:
Wielopoziomowe menu w C.pdf
(114 KB)
AVR-owe fusy cz.1.pdf
(401 KB)
AVR-owe fusy cz.2.pdf
(245 KB)
Biblioteka AVRUSB - Programowy interfejs USB w AVR.pdf
(204 KB)
Bity blokujące i bezpieczniki konfiguracji w mikrokontrolerach AVR.pdf
(136 KB)
Inne foldery tego chomika:
ARDUINO
Evil Genius Collection (31 ebooks)
Zrób to sam
Zgłoś jeśli
naruszono regulamin