Kategória: Elektro návody

Zmenené: 1. január 2017

Ktorý prevodník USB/UART?

Pri práci s mikroradičmi je užitočným pomocníkom prevodník USB/UART, pomocou ktorého možno s mikroradičom komunikovať z počítača. Ako však vybrať ten správny prevodník na príslušnú úlohu? Práve na pomoc s výberom pre začiatočníkom zameriam tento článok.

Sériové (RS-232) a paralelné (LPT) porty pomaly končia. Nie žeby sa už nepoužívali, ale čoraz častejšie sa objavujú základné dosky, ktoré tieto komunikačné rozhrania nemajú, a to ani nehovorím o notebookoch, ktoré ich už nemajú dávno. Zato všetky dnes majú niekoľko portov USB.

Zbernica USB prináša, oproti RS-232 a LPT viacero vylepšení, avšak jej hlavnou nevýhodou je pomerne náročná implementácia, preto mnoho mikroradičov nemá zabudovanú hardvérovú podporu tejto zbernice, zato veľká väčšina ich má zabudovanú hardvérovú podporu sériovej komunikácie označovanej USART, resp. UART.

UART (Universal Asynchronous Receiver/Transmitter) nie je protokol, ale je to hardvér, ktorý implementuje asynchrónnu sériovú komunikáciu. Všeobecne známy sériový protokol RS-232 je jedným z viacerých, ktoré pracujú na tomto hardvéri. V podstate existujú dve základné formy sériového prenosu – synchrónny (USART) a asynchrónny (UART), ale na účely tohoto článku to je jedno.

Prevodníky USB/UART

Na trhu existuje viacero prevodníkov komunikácie USB/UART, takže výber je pomerne široký. Tieto prevodníky všetky robia to isté, vytvárajú virtuálny sériový port, ktorý umožňuje pomerne jednoduchú obojsmernú komunikáciu s mikroradičmi pomocou dvoch vodičov a všetky majú V/V vývody s napätím 3,3 V, ktoré sú tolerantné k 5 V. Okrem toho sa v niektorých veciach líšia:

  • použitý čip
  • napájacie napätie
  • vyvedené signály
  • verzia USB

Teraz k týmto odlišnostiam podrobnejšie.

Použitý čip

V podstate som sa stretol so štyrmi typmi čipov, a to FTDI232, CP2102, PL2303 a CH340. Všetky tieto čipy poskytujú rovnakú funkčnosť, no mierne sa líšia možnosti ich ovládačov (driver):

  • vlastním viacero prevodníkov s čipmi FTDI232 (originál i klony) a CP2102
  • prevodník s čipom PL2303 som nikdy nemal, ale stretol som sa s ním u známeho, ktorý s ním je spokojný
  • prevodník s CH340 mám len v zopár čínskych klonoch dosiek Arduino – funguje, ale inak sa mu skôr vyhýbam

Keď som študoval dokumentáciu jednotlivých čipov (okrem CH340), tak som si významný rozdiel všimol len v prípade napäťových úrovní UOL (teda výstupné napätie úrovne 0), kde bolo najvyššie pri CP2102 a najnižšie pri FTDI232. Čip CP2102 má toto napätie až 1,0 V (pri záťaži okolo 20 mA), ale taký odber som čipu nikdy neposkytol, a teda nemal by to byť problém.

Každý čip vyžaduje ovládač. V Linuxe mi jadro rozpoznalo všetky bez problémov. Vo Windows som musel doinštalovať ovládač pre každý typ čipu. Tu stojí za zmienku ovládač od FTDI, ktorý klony znefunkční, takže pozor na ne (drvivá väčšina na eBay sú klony).

Pre mňa najpodstatnejším rozdielom je možnosť prispôsobenia sériového čisla a textu prevodníka, ktorá mi umožňuje jednoznačne identifikovať ten-ktorý prevodník (teda rozlíšiť dva prevodníky s rovnakým čipom). Túto možnosť ponúkajú len čipy FTDI232 a CP2102, len neviem, či to je dôležité/užitočné aj vo Windows.

Napájacie napätie

Všetky prevodníky komunikujú s napätím 3,3 V, bez rozdielu! Líšia sa však tým, aké majú vyvedené napätie, ktoré možno použiť na napájanie pripojeného mikroradiča. Stretol som sa s viacerými kombináciami 3,3 V a 5 V:

  • vyvedené obe napätia
  • vyvedené len jedno napätie, s možnosťou výberu
  • vyvedené len jedno napätie, bez možnosti voľby

Každé z uvedených má svoje výhody, ako najlepšie sa mi javí možnosť voľby napájacieho napätia. Najlepšie pomocou tzv. „jumpera”, ktorý možno kedykoľvek vytiahnuť a zapojiť na iné napätie. Ja často pracujem s oboma napätiami, tak používam adaptéry dva, ktoré sú natvrdo naspájkované na príslušné napätia – aby som hezabudol prepnúť „jumper”.

Vyvedené signály

Sériová komunikácia používa (najmä z historických dôvodov) mnoho rôznych signálov a vlastne žiadny z nich nie je na samotnú komunikáciu potrebný. Avšak, keď používate zavádzač (bootloader), ktorý umožňuje mikroradič programovať cez UART, budete potrebovať signál RTS, prípadne aj DTR.

Tip

Niektoré adaptéry majú vyvedený signál RTS – pozor, nie je to preklep (ako som si pôvodne myslel), ale je to naozaj vyvedený vývod RESET čipu prevodníka, a teda nemá nič so sériovou komunikáciou.

Ak potrebujete len prenášať dáta z mikroradiča do počítača (a/alebo naopak), nepotrebujete vyvedený žiadny riadiaci signál. Ak chcete pomocou prevodníka programovať napr. Arduino Pro Mini, bude potrebný aspoň signál DTR, no a na pohodlné programovanie ESP8266 sa zídu oba, tzn. DTR aj RTS.

Väčšinu ostatných signálov nevyužijete a ak áno, tak iste viete aký prevodník si vybrať. Bývajú vyvedené mimo hlavného konektora, takže ich vývody môžu sťažiť zastrčenie adaptéra do prepojovacieho poľa.

Verzia USB

Podporovaná verzia USB je pomerne dôležitá, pretože od nej závisí, či možno prevodník pripojiť k počítaču. V súčasnosti sa deje prechod od USB 2.0 k 3.0, ale USB 3.0 je spätne kompatibilná s USB 2.0, takže to nie je problém. So spätnou kompatibilitou s USB 1.1 je to otázne, a pretože som narazil na odporujúce si informácie, tak sám neviem.

Každopádne, s podporou to je prosté:

  • čipy FTDI232, CP2102 a CH340 majú podporu USB 2.0
  • čipy PL2303 sú vo viacerých verziách, rozlíšené písmenami za číslom čipu:
    • PL2303HX – USB 1.1
    • PL2303TA – USB 2.0
    • PL2303HXD – USB 3.0

Myslím, že v súčasnosti úplne vyhovuje USB 2.0, len pozor na PL2303x, pretože z eBay nikdy neviete, čo dostanete.

Záver

Na záver si dovolím zhrnúť môj pohľad na jednotlivé čipy:

Vlastnosť CH340 PL2303x FTDI232 CP2102 Poznámka
Zmena ID nie nie ano ano  
RTS + DTR nie nie ano ano nie všetky adaptéry
Ďalšie sig. nie nie ano ano nie všetky adaptéry
Linux ano ano ano ano  
Windows ano ano ano ano nutná inštalácia,
FTDI klony znefunkční
Verzia USB 2.0 asi 2.0 2.0  
USB A ano ano ano ano  
mikro USB B nie nie ano ano  
mini USB B nie nie ano ano  

Môj pohľad:

  • kvôli nemožnosti prispôsobenia identifikácie USB (Serial a text) sa vyhýbam prevodníkom s CH340 a PL2303x
  • kvôli agresívnemu správaniu ovládača vo Windows sa vyhýbam čínskym klonom FTDI232, pretože nikdy neviem kedy ho pripojím aj k Windows
  • pre istotu vyberám adaptéry s vyvedenými RTS aj DTR
  • vyberám adaptéry s dvomi napätiami, či už s vyvedenými obomi, alebo s možnosťou voľby

Takže väčšina mojich prevodníkov je s čipom CP2102, s vyvedenými DTR a RTS, s konektorom mikro USB B a s vyvedenými oboma napájacími napätiami.

Avšak na programovanie Arduino Pro Mini používam prevodník s FTDI232, ktorý má vyvedené oba signály, ale napájacie napätia treba prepnúť prespájkovaním prepojky (často pracujem s 3,3 V), ale hlavne má konektor, ktorý presne pasuje do toho Arduino Pro Mini.