Převodník UART <> USB

USB je dnes nejčastěji používaným rozhraním na počítači. Díky svým malým rozměrům a vysoké přenosové rychlosti jsou USB vybavené téměř všechny digitální fotoaparáty, flash disky, externí harddisky, nabíječky, tiskárny a dokonce i ohřívače čaje. Některé notebooky pak dokonce zcela postrádají klasické sériové rozhraní a jsou vybaveny pouze portem USB.

Tento pokrok určitě přidělal vrásky na čele konstruktérům malých zařízení komunikujícím s počítačem právě přes rozhraní RS232. Většina mikroprocesorů je totiž vybavena pouze sériovým portem UART, který lze propojit s RS232 COM portem v PC. USB rozhraní ale pracuje na zcela jiném principu. Na trhu se objevily mikroprocesory s integrovaným modulem USB, který je možno nakonfigurovat podle přání uživatele. Zatím to jsou to spíše složitější typy, které nejsou moc rozšířeny.

Další možností jak připojit své mikroprocesorové zařízení k USB je napsat si komunikační protokol sám. Je to velice efektní řešení a samožřejmě i nejlevnější, ale je ovšem velmi náročné. Několik konstrukcí se objevilo i na internetu, viz odkazy na konci článku.

Třetí možností jak své zařízení připojit k USB jsou speciální integrované obvody, které slouží jako převodníky UART rozhraní na USB. Tuto možnost jsem zvolil i já pro své aplikace.

Proč se snažit přejít na USB? Jedna z nejkrásnějších vlastností (mimo vyšších přenosových rychlostí) je přítomnost napájecího napětí 5V na tomto portu. Aplikace tak může být napájena přímo z PC! Dalším příjemným zpestřením je fakt, že se zařízení ozve volně definovaným jménem po jeho připojení k počítači. Mohu mít tedy v PC zařízení se jménem “Můj ohřívač kafe”.

Dnešní trh nabízí dva hlavní integrované obvody na převod UART/USB. První je z produkce firmy FTDI Chip a jmenuje se FT232 a druhý nabízí firma Silicon Laboratories a jmenuje se CP2102. Při jejich srovnání jsem vycházel z jednoduchého požadavku mé aplikace – obousměrná komunikace rychlostí 57600Bd přes piny TXD a RXD a možnost volby jména zařízení. Proto jsem nesledoval parametry týkající se vyšších přenosových rychlostí či různých funkčních módů. Specifikace obvodů jsou volně na stránkách výrobců, takže si čtenář může udělat svůj názor sám, pokud se mnou nebude souhlasit.

Obr.1. Zapojení obvodu s CP2102.

Vítězem mého srovnávání byl obvod CP2102 a hlavním důvodem byla maximální jednoduchost základního zapojení. Obvod má totiž jak oscilátor tak i paměť EEPROM (používá se pro uložení řetězce se jménem zařízení) integrovány uvnitř. Počet externích součástek se tak smrskne na 2 kondenzátory a indikační LED diodu, viz obr.1.. Jedinou nepříjemností je bezvývodové pouzdro QFN, které klade vyšší požadavky na pájení a plošný spoj. Nicméně má předchozí zkušenost s tímto typem pouzdra ukázala, že se to dá bez problémů zvládnout. Druhou nepříjemností byla nutnost koupit vývojový kit, ke kterému jsou dodávány drivery. Za cenu 1500Kč se to však dá snést, úspora se dostaví při výrobě díky menšímu počtu externích součástek.

Základní parametry rozhraní UART jsou tyto:

Data bity:         5, 6, 7, a 8

Stop bity:         1, 1.51, a 2

Typ parity:       None, Even, Odd, Mark, Space

Rychlosti Bd:            2 300, 600, 1200, 1800, 2400, 4000, 4800, 7200, 9600, 14400,

16000, 19200, 28800, 38400, 51200, 56000, 57600, 64000,76800, 115200, 128000, 153600, 230400, 250000, 256000, 460800, 500000, 576000, 9216003

Schéma zapojení

Schéma celého zařízení je na obr.2. IC1 je zmiňovaný CP2102, kondenzátory zajišťují filtraci napájení a blokování interního regulátoru. LED1 pak indikuje správnou funkci obvodu a režim SUSPEND. LED doporučuji osadit, protože občas může dojít ke kolapsu USB a bez vizuální indikace uživatel neví, co se stalo.Většinou stačí interface odpojit a znovu připojit k PC a vše funguje opět ok.

Konektor JP1 obsahuje TTL signály pro UART rozhraní a ty můžeme přímo připojit k mikroprocesoru v dané aplikaci. Navíc je vyveden signál SUSPEND, kterým PC hlásí přechod systému do režimu se sníženou spotřebou. USB aplikace pak musí také snížit svůj odběr proudu v souladu s USB specifikací. Doporučuji tyto režimy pečlivě nastudovat například na [1].

Obr.2. Schéma zapojení převodníku.

Obr.3. Výkres plošného spoje a jeho osazení.

Obr.4. Doporučená nepájivá maska.

 

Konektor také obsahuje 5V napájení vyvedené z PC, které je možno použit k napájení připojeného zařízení. Opět pozor na USB specifikaci. Maximální odběr má být 500mA, ale bude záležet na daném PC. Nezkoumal jsem možnost maximálního odběru z USB, takže nemohu posoudit zda je tato hodnota dostupná na všech počítačích.

Výkres desky plošných spojů je na obr.3. Není k němu co dodat, kondenzátory jsou SMD velikost 0805, konektor je typu USB-B a LED má průměr 3mm. Osazení doporučuji přenechat někomu zkušenému, nejlépe vybavenému pájecí pastou a horkým vzduchem. Samozřejmostí by měla být deska vybavená nepájivou maskou, viz obr.4. Kvalitu zapájení je možno kontrolovat jednoduše pomocí testeru diod, kdy kontrolujeme interní ochranné diody v CP2102. Touto jednoduchou metodou se dá snadno rozpoznat jak nezapájený vývod tak i zkrat mezi vývody. Principiální zapojení této metody je na obr.5. Tester ukazuje hodnoty kolem 500mV pro správně zapájený přívod a 0V pro zkrat.

 

Obr.5. Princip testu správně zapájených pinů.

Ovladače

            Jak jsem již zmiňoval v úvodu, firma Silabs dodává ovladače pouze s vývojovým kitem. Po jeho zakoupení pak již můžete ovladače modifikovat a distribuovat se svým zařízením. Ovladačů je k dispozici několik, mne hlavně zajímal tzv virtuální sériový port (VCP – Virtual Comm Port). Po jeho instalaci se objeví v počítači další, virtuální, sériový port (např. COM5). Tento port je ovladačem prolinkován na náš USB interface a proto není nutné vyvíjet speciální aplikace. Data se dají vyčítat stejným způsobem jako při použití sériového portu. Další možnost komunikace s interface je pomocí USBXpress ovladačů.

            Po prvním připojení USB interface k počítači nás operační systém vyzve k ukázání cesty na drivery klasickým způsobem. Systém se zeptá celkem dvakrát, poprvé se instalují drivery k CP2102 a podruhé se instaluje VCP driver. Drivery nejsou certifikované.

            Pokud se rozhodnete tent obvod používat ve svých aplikacích a zakoupíte si vývojový kit, dostanete k němu i podrobný návod jak s drivery zacházet a jak je modifikovat. V dalších řádcích proto jen naznačím možnosti modifikace.

VID Vendor ID – každé zařízení připojené na USB musí mít unikátní VID, PID a SerialNumber kombinaci. VID číslo je vlastněno výrobcem a je přidělováno organizací „USB Implementers Forum“. Další informace viz  [4], cena je 1500$ s platností na dva roky

PID Product ID – pokud uživatel nechce používat své VID, může použít VID výrobce obvodu (Silicon Laboratories) a požádat o přidělení PID. To je přiděleno zdarma a stačí výrobci poslat žádost emailem.

V nastavovacím programu CP2102 pak můžete modifikovat:

VID – viz výše

PID – viz výše

Max Power – nastavení proudu odebíraného aplikací ve 2mA krocích

ReleaseVersion – verze zařízení, 2 bajty

PowerUseAttributes – nastavení vlastního napájení interface

SerialNumber – možnost nastavení sériového čísla zařízení

ProductString – jméno zařízení jak se objeví v PC

 

V nastavovacím programu pro USB driver pak můžete například změnit:

Typ instalace – USBXpress ci VCP

Krátké a dlouhé jméno .INF souborů

COM Device Name – jméno, které se zobrazí ve „správci zařízení“ pod položkou „Porty“ a v „Přidat/odebrat program“

USB Device Name - jméno, které se zobrazí ve „správci zařízení“ pod položkou USB

Závěr

Výše popsaný interface fungoval zcela bez problémů na první zapojení. Byl testován na operačním systémech Windows XP (Celeron 2.4GHz) a Windows 98 (Pentium 120MHz) SE. K aplikaci toho už není mnoho co dodat, stačí připojit mikroprocesor s UART rozhraním a vyzvednout si data v počítači. Pokud si konstruktér netroufne na vývoj USB driverů, CP2102 je pro něj optimální řešení s minimem externích součástek.

Na závěr bych ještě upozornil, že se nejedná o převodník RS232/USB, ale UART(TTL)/USB. Pokud by měl čtenář zájem o interface z RS232, musel by na stranu TTL UARTu ještě doplnit převodník typu MAX232.

Měli byste zájem o hotový modul za cenu cca 900Kč?

Napište nám a pokud bude dostatečný zájem, necháme je vyrobit, pište na: 

Radek Vaclavik. 

[1] http://www.beyondlogic.org/

[2] http://www.silabs.com/

[3] http://www.cesko.host.sk/hardware.php

[4] http://www.usb.org

[5] http://www.sysala.cz

 

Seznam součástek

IC1                   CP2102

C1, C2            100nF, velikost 0805

C5                   22uF/6V, tantal, velikost B

R1                   220, velikost 0805

LED1              3mm nízkopříkonová LED

X1                    USB B konektor do plošného spoje

JP1                 2x4 konektor