30.07.2008, autor: Ing. Robert Krejčí, kategorie: Konstrukce

Možnosti řešení USB rozhraní pro vlastní konstrukce

Obvody pro komunikaci se sběrnicí USB
Schéma mikrokontroléru řady 18F s rozhraním USB

1. Úvod

Obvodů pro komunikaci se sběrnicí USB je celá řada, mnohé jsou i velmi sofistikované. Ale většina z nich se bohužel na českém trhu nedá sehnat. Pro seznámení s těmito obvody odkazujeme na literaturu [1]. Dále se budeme zabývat pouze těmi obvody, které lze koupit v některém z českých obchodů.

1.1. USB ve vlastních konstrukcích

USB (Universal Serial Bus – Univerzální sériová sběrnice) podporuje tři rychlosti přenosu:

  • Low speed: 1,5 Mbit/s (Nízká rychlost)

  • Full speed: 12 Mbit/s (Plná rychlost)

  • High speed: 480 Mbit/s (Vysoká rychlost)

Ve vlastních konstrukcích nebo výrobcích vyráběných v malých sériích lze využít nízkou nebo plnou rychlost. Vysoká rychlost je značně náročnější na výkon a proudovou spotřebu komunikačního rozhraní a je i cenově náročnější.

2. Speciální obvody

Velmi populární jsou obvody FTDI, které u nás prodává firma Asix. K dostání jsou jednotlivé obvody (např. FT232BM – konvertor USB–UART nebo FT245BM – konvertor USB–FIFO) nebo moduly, které obsahují obvod s krystalem a pamětí EEPROM. Cena těchto modulů je 640 Kč, což je ze všech zde zmíněných možností nejdražší řešení. V případě použití těchto obvodů je navíc potřeba vlastní mikrokontrolér, což celé řešení ještě více prodražuje. Na druhou stranu má toto řešení širokou podporu ze strany výrobce: ten dodává ovladače pro všechny možné (i málo používané) operační systémy. Ovladač pro tento obvod je dokonce implementován v současném jádře Linuxu.

3. Mikrokontroléry

3.1. Softwarová emulace

Jedna možnost, jak přimět mikrokontrolér ke komunikaci s rozhraním USB, je čistě softwarová implementace protokolu USB. Existuje několik projektů, které se o to pokoušejí. Žádný z nich není dokonalý, ale na druhou stranu jsou vhodné pro amatérské „pokusy“ a toto řešení je jednoznačně nejlevnější. Tato varianta je vhodná pouze pro neáročné aplikace, protože zpracování protokolu USB zabírá značné množství výkonu procesoru.

AVR-USB

3.1.1. AVR-USB

Komerční projekt AVR-USB rakouské firmy Objective Development, který umožňuje uživateli zdarma používat zdrojový kód pod podmínkou zveřejnění všech potřebných kódů a schémat na webu. Pokud tak uživatel neučiní, může si zakoupit licenci na užívání kódu za 15 až 500 €. Podporuje USB 1.1, ale pouze s nízkou rychlostí. Kód je napsán pro mikrokontroléry Atmel AVR a uživatel si může přizpůsobit některé jeho části napsané v jazyce C.

IgorPlug-USB (AVR)

3.1.2. IgorPlug-USB (AVR)

Druhé řešení IgorPlug-USB (AVR) pochází z domácí dílny slovenského počítačového nadšence Ing. Igora Češka a je implementováno opět na mikroprocesoru AVR, tentokrát řady AT90S23x3-10 s přetaktováním z 10 MHz na 12 MHz. Komunikace probíhá opět na nízké rychlosti (1,5 Mbit/s). Na základě velkého zájmu autor celý projekt uvolnil k využívání zdarma pro nekomerční projekty. Autor si napsal vlastní ovladač a zveřejnil dokumentaci k využívání jeho knihoven.

3.2. USB jako hardwarová periferie mikrokontroléru

Mnoho výrobců zařadilo do své výroby také mikrokontrolér s hardwarovou podporou USB. Jedním z nich je Microchip, výrobce populárních (nejen) osmibitových mikrokontrolérů PIC.

PIC18F2455/2550/4455/4550

Mikrokontroléry PIC18F2455/2550/4455/4550 podporují nízkou nebo plnou rychlost s plně hardwarovým řízením komunikace, mají výkon až 12 MIPS a obsahují také spoustu užitečných periferií. Toto řešení pokládám za optimální, protože jak cenově, tak i co do praktické použitelnosti se nachází uprostřed mezi oběma předchozími variantami.

Software

Výrobce poskytuje zdarma ke stažení jednak firmware pro mikrokontrolér (CDC – Communication Device Class) v jazyce C a také ovladače pro systém Microsoft Windows. Licence dovoluje použít tento software i v komerčních produktech.

CDC je třída funkcí (třída ve smyslu C, nikoliv C++), pomocí kterých může programátor komunikovat s rozhraním USB – např. poslat řetězec hostiteli, přijmout řetězec od hostitele, zjistit délku přijatého řetězce, sledovat stav sběrnice. K jejímu využívání stačí „includovat“ potřebné soubory a zařadit do hlavní smyčky programu volání funkce USBTasks():


void main(void){
  InitializeSystem(); // inicializace – lze libovolně dodefinovat
  while(1) // nekonečná smyčka
  {
    USBTasks(); // volání obsluhy USB
    ProcessIO(); // uživatelsky definované funkce
  }//end while
}//end main

Programování

Při použití vývojové desky lze mikrokontrolér programovat přímo přes rozhraní USB bez použití programátoru. Desku lze koupit originální od Microchipu nebo si jednoduše vyrobit vlastní – schéma viz níže. Microchip dále zdarma dodává program, pomocí kterého lze do mikrokontroléru nahrát firmware.

Obrázek 1: Základní zapojení mikrokontroléru PIC18F4550 pro práci s rozhraním USB

4. Literatura

 
{e_like}
 
 
Nahoru