SVETELEKTRO

10. januára 2013   Verzia pre tlač Verzia pre tlač

Mikrokontroléry rady AVR – Virtual USB


luboss17

Autor článku popisuje možnosť prepojiť MCU AVR s počítačom priamo cez USB bez potreby prídavného hardware.

Vo väčšine našich aplikácií potrebujeme prenášať aj dáta medzi MCU a PC. V dnešnej dobe keď už sériové porty dá sa povedať „vymizli“ a nahrádzajú ich univerzálne sériové zbernice USB sme pri MCU bez HW implementácie USB nútení buď použiť prevodníky UART->USB alebo USB softvérovo implementovať do MCU. Použiť prevodnik je jednoduchšia záležitosť a takisto komunikácia cez UART je jednoduchšia no napríklad taký prevodník FT232RL stojí bežne 7 € a to je už na rozmyslenie. 
 
Nedávno ma napadlo vyskúšať softvérovu implementáciu USB. Je lacnejšia (dve rezistory, dve diody a je to :)), ale zas na druhej strane sa treba trocha popasovať so softvérom. 
 
Vybral som si V-USB a chcel by som ju predstaviť. Je to softvérová implementácia low-speed USB zariadení pre mikrokontroléry s jadrom AVR od firmy ATMEL. Je možné použiť takmer akýkoľvek AVR mikrokontrolér bez použitia ďalších prídavných čipov.
Hlavná stránka V-USB >> http://www.obdev.at/products/vusb/index.html
 
Na jeho webe sa nachádza mnoho príkladov využitia. 
 

Hardvér 

 
Ako testovací hardvér som si vytvoril dosku s MCU Attiny2313. Jej schému môžete vidieť na obrázku dole a ako vidno je potrebné minimum súčiastok 🙂 Prikladám aj plošný spoj (projekt) v programe Eagle. 
 
Diódy D1 a D2 slúžia na zrazenie napájacieho napätia na hodnotu blízku 3,3 V. Xtal by mal byť čo najpresnejší a takisto netreba zabudnúť ani na kondíky 22p. Xtal je možné použiť z týchto hodnôt: 12 MHz, 12.8 MHz, 15 MHz, 16 MHz, 16.5 MHz, 18 MHz and 20 MHz. 
 
Detaily o realizácii HW sa môžete dočítať na wiki stránkach vusb.wikidot.com/hardware
 
Obr. 1 Zapojenie s ATtiny2313
 
Obr. 2 Plošný spoj
 
Obr. 3 Foto z mojej realizácie HW
 
 

Softvér 

 
Čo sa týka softvérovej časti. Na internete som našiel výborný tutorial, ktorý sa skladá zo 4 častí a vysvetľuje sa v ňom všetko pre realizáciu softvéru pre základnú komunikáciu. Seriál nájdete na stránkach: 
 
 
Celý tutorial mám prejdený a výsledkom sú dva projekty. Jedným je softvér pre MCU attiny2313 a druhým je softvér na strane PC tvorený s použitím knižníc LibUsb. Knižnice pre V-USB sú na stiahnutie tu http://www.obdev.at/products/vusb/download.html. 
 
Prikladám moje projekty v Code::Blocks ak by bol záujem (tvorené v OS Linux Debian): 
 

Záver 

Toto riešenie prenosu dát medzi PC a MCU AVR sa mi páči v jednoduchosti realizácie HW a takisto v jeho cene. Nevýhodou je, že je narozdiel od UART zložitejší na programovanie. Preto záujemcom o V-USB želám veľa trpezlivosti a úspechov pri študovaní tutoriálov a skúšaní 🙂 
Ako sa vám páčil tento článok?
  • Páči sa mi (0)
  • Súhlasím (0)
  • Zábavné (0)
  • Informatívne (0)

Komentáre (8)

  1. smotek7 píše:

    Testoval si aj nejaky bootloader cez V-USB?
    napr. http://www.fischl.de/avrusbboot/

    Tie posledne dva linky nefunguju.

  2. jaromir píše:

    Ja viem, ze VUSB je oblubeny projekt, lebo doplna USB rozhranie do AVR MCU, ktore maju USB rozhranie iba v SMD verziach svojich MCU a navyse s nimi prisli pomerne neskoro.

    Ta hardwarova implementacia je ale katastrofalna a ja osobne by som do svojho PC nikdy nepripojil nic tak hrozne. Nerespektuje to dovolene napatia na USB portoch; dve diody na ziskanie nizsieho napatia – ech, to je po seriovom odpore druhy najhorsi sposob ako to urobit.

    Rozumiem, ze prvy argument, ktory sa tu vyskytne je „mne to funguje a nemam s tym problem, tak si kritiku strc“, ale radsej by som bol, ak by sa veci robili poriadne a korektne.
    Aj neuzemnena zasuvka a spotrebice v nej pripojene mozu dobre fungovat, ale asi by som to tak umyselne nerobil, ak su ine moznosti. A tie v pripade USB rozhrania skutocne su – vsetci vyrobcovia, ktori nezpaspali dobu, maju USB MCU uz dlhe roky, je v takmer kazdom ARM-e, Microchip ma USB-cko vo vsetkych modelovych radach, od low cost za 1E az po high-end 32bit MCU za 8E. Toz tolko z mojej strany 🙂

  3. hanysek16 píše:

    Ahoj lidi tohle téma dlouhou dobu sleduji, s mikroprocesory řady AVR začínám a rád bych tohle řešení použit i na nějakou ATMegu, ale nevím si s tímhle rady… Nemá někdo funkční řešení v češtině nebo nějaký dobrý návod?

    Jinak dobrý článek.

  4. Felix píše:

    Najvacsia bykovina na V-USB je ze musis pollovat, a kedze to nevie multitasking tak to nejako budes muset zmestit do 10MS

Pridaj komentár