Převodník USB na RS232

Milan Horkel

Modul slouží jako univerzální převodník z USB na RS232 s výstupy na straně RS232 v úrovních TTL. Převodník používá obvod FT230X od firmy FTDI. Tyto obvody jsou podporované ve všech rozšířených operačních systémech.

Image

Technické parametry

Parametr Hodnota Poznámka
Rozhraní
Konektor
USB 2.0
USB B
High Speed.
Standardní velký USB konektor.
Spotřeba 8mA / 5V Bez připojeného dalšího zařízení.
Signály sériové RXD TXD
RTS# CTS#
Základní signály sériového rozhraní s řízením toku. Volitelná polarita.
Signály pomocné CBUS0 až CBUS3 Konfigurovatelné funkce, v továrním nastavení indikace RX a TX a spínání napájení pro externí využití.
Signálové úrovně TTL/CMOS VCCIO 1.62V až 3.63V, 5V tolerantní vstupy.
Řízení toku Nastavitelné Možno nastavit HW i SW řízení toku dat.
Režim spánku Ano Spínač napájení pro externí použití.
Rozměry 61x31x18mm Výška nad základnou

Popis konstrukce

Úvodem

Standardní sériový port RS232 se stal vzácnou relikvií minulých časů. V současné době většina zařízení (mikroprocesorů, obvodů SoC, vestavěných počítačů a podobně) používá sériovou komunikaci stejně jako v minulosti, ale vyvedené signály obvykle pracují s TTL či CMOS úrovněmi napětí.

Použitý převodník USB pro sériovou komunikaci podporuje signály s napěťovými úrovněmi pro CMOS/TTL logiku s úrovněmi 1.8V až 3.3V s tím, že vstupy jsou 5V tolerantní. Obvod generuje pomocné napětí 3.3V, které lze přímo použít pro napájení IO.

Důležité upozornění - podivné chování obvodu

Když se obvod FT230X připojí k USB, ale nemá přivedeno napájení IO vývodů (VCCIO), nedojde ke správné inicializaci IO vývodů a obvod pak nekomunikuje i když ze strany USB funguje normálně. Dodatečné připojení VCCIO nepomůže.

Když inicializace proběhne správně (byly obě napájení přítomné, lze obvod odpojit od USB nebo od VCCIO a po opětovném připojení chybějícího napětí funguje normálně.

Toto chování není podchyceno v Errata dokumentaci obvodu, ani v katalogovém listu. VCCIO není dostatečně nezávislé na hlavním napájení obvodu. Dle chování obvodu se lze domnívat, že se neprovede inicializace IO buněk obvodu.

Dalším překvapením je to, že výstup TXLED# se aktivuje při příjmu sériových dat a RXLED# při odesílání sériových dat (je to opačně, než je logické a než to mají starší obvody FTDI). Náprava je snadná, přeprogramováním konfigurace v EEPROM obvodu.

Obvod FT230X

Jedná se o novější obvod, nástupce populárního obvodu FT232R. Je menší a podstatně levnější. Existuje několik členů v řadě X s různými rozhraními (sériové RS232 s RTS#/CTS#, sériové RS232 s plným počtem řádících signálů, s rozhraním SPI, s rozhraním I2C slave).

Hlavní vlastnosti obvodu lze shrnout v těchto bodech:

Zapojení modulu

Zapojení vychází z katalogu součástky a příslušných aplikačních poznámek.

Obvod FT230X má vestavěný vnitřní stabilizátor 3.3V pro buzení USB signálů (jádro má další vnitřní sabilizátor, který ale není vyveden). Napětí 3.3V je vyvedeno na konektor J3 a lze jej využít pro napájení IO vývodů (VCCIO). Dále jej lze využít pro napájení dalších obvodů, zatížitelnost je až 50mA.

Propojkou na konektoru J3 lze zvolit VCCIO (napájení vstupně-výstupních budičů) z vnitřního stabilizátoru 3.3V, nebo z vnějšího zdroje z konektoru J5. Rozsah podporovaných napětí je 1.62V až 3.63V, vstupy jsou 5V tolerantní. Při napětí VCCIO cca 1V obvod odpojí budiče.

Chování obvodu vzhledem k VCCIO je zmíněno v poznámce na začátku dokumentu, protože je to věc důležitá (zejména pro návrh nového hardwaru). Nespoléhejte na nezávislost VCCIO a vnitřního napájení obvodu.

Tranzistor Q1 spíná napětí USB 5V na konektor J4. Toto napětí se automaticky vypne, když počítač přejde do režimu spánku. Pro tuto funkci se musí nakonfigurovat v paměti EEPROM obvodu na vývod C3 (CBUS3) funkce PWREN#.

LED diody indikují RX a TX aktivitu. Funkci vývodů je možno změnit modifikací obsahu EEPROM. Na vývod C1 (CBUS1) je defaultně nastavena funkce RXLED# a na vývod C2 (CBUS2) je defaultně nastavena funkce TXLED#.

Kupodivu funkce RXLED# bliká při vysílání dat na sériovou linku a funkce TXLED# bliká při příjmu dat ze sériové linky. Je to nelogické a opačné než u obvodu FT232R, ale dá se to snadno napravit naprogramováním EEPROM součástky. Viz konfigurace obvodu v sekci konfigurace.

Elektrické zapojení

Reference Název Pouzdro
Odpory
R1, R2 27 R0805
R6, R7, R8, R9, R10, R11, R12, R13 100 R0805
R14, R15, R16 330 R0805
R3, R5 1k R0805
R4 100k R0805
Keramické kondenzátory
C1, C2 47pF C0805
C3 10nF C0805
C4, C6, C7, C8, C9 100nF C0805
C5 10uF C0805
Indukčnosti
L1 MI0805K400R-10 R0805
Diody
D1, D2 HCL-1503-4(GREEN) LED1206REV
D3 HCL-1505-4(RED) LED1206REV
D4 BZV55-B3V6 MINIMELF
Tranzistory
Q1 IRF7416SMD SO8_FET
Integrované obvody
U1 FT230XS SSO16_154
Pojistka
F1 SR075-06 R0805
Mechanické součástky
J1 USB_B_01 USB_B_01
J3 JUMP3 JUMP3
J2, J4, J5 JUMP2X3 JUMP2X3
J6 JUMP2X8 JUMP2X8
Konstrukční součásti
1ks JUMPER Propojka
4ks Šroub M3x12 Šroub pozinkovaný
4ks Podložka M3 Podložka pozinkovaná
4ks Sloupek M3x5 Sloupek
1ks PCB Plošný spoj

Mechanická konstrukce

Převodník je navržen v podobě standardního modulu stavebnice MLAB. V rozích je opatřen upevňovacími šrouby se sloupky.

Pohled na modul

Osazení a oživení

Osazení

Nejprve osazujeme SMD součástky. Začneme obvodem U1 aby nám nepřekážely ostatní součástky. Je třeba použít pastového tavidla a minimum pájky. Mikropáječka je nezbytností.

Na straně součástí nezapomeňte osadit 2 drátové propojky. Polarita LED diod je označena (A jako anoda v motivu plošného spoje).

Diody LED jsou osazovány reverzně (koukají do díry v plošném spoji)!

Výkres osazení, horní strana

Výkres osazení, spodní strana

Obrázek osazení ze spodní strany

Oživení

Pečlivě zkontrolujeme připájení součástek (přerušení a zkraty). Připojíme zdroj +5V na konektor J2 (spotřeba bude cca 5mA) a zkontrolujeme napětí +3.3V na konektoru J3 na vývodu 1. Indikační dioda D3 by měla svítit. Spojíme J3.2 a J3.1 (interní napájení VCCIO připojíme na interní napětí +3.3V).

Připojíme na USB a počkáme, až se spustí ovladače (nové systémy je už mají připravené automaticky, starší budou chtít instalační soubory). Spustíme terminálový program (například PuTTY) a vyzkoušíme funkčnost. Když propojíme RX a TX propojkou budou blikat obě indikační LED a odesílané znaky se budou na terminálu opakovat.

Konfigurace

Provoz bez konfigurace

Obvod funguje i bez jakékoli konfigurace. Díky chybě v obvodu budou prohozené ledky indikující RX a TX aktivitu. Dále nebude správně fungovat spínání napájení tranzistorem Q1 při uspání počítače.

Konfigurace

Konfigurace obvodu se zapisuje do interní paměti EEPROM. K nastavování konfigurace je k dispozici program FT Prog, který je určen pro Windows. Nalezneme jej na webu FTDI tady:
http://www.ftdichip.com/Support/Utilities.htm#FT_PROG

Pro správnou funkci spínacího tranzistoru Q1 je třeba vývodu C3 (CBUS3) přiřadit funkci PWREN#. Uvedené nastavení funguje tak, že v případě uspání počítače (s aktivním USB portem) vypne tranzistor Q1 výstupní napětí 5V (z USB) na konektoru J4 a tím vypne spotřebu cílové aplikace.

Dále je třeba prohodit funkce TXLED# a RXLED# na vývodech C1 a C2 aby funkce odpovídala potisku. Modul má popisky správně, jen obvod FTDI funguje nelogicky opačně.

Program FT_Prog, nastavení

Dále lze nastavit jméno a identifikaci zařízení, případně jeho sériové číslo. Při změně položek VendorID/DeviceID je nezbytné změnit tyto parametry i v INF souborech driverů (aby se správně přiřadily) a případně drivery nechat znovu podepsat (novější systémy Windows).

Dále se konfigurují provozní parametry součástky (režim napájení a spotřeba, polarita signálů, síla a rychlost budičů).

Konfiguraci je možné uložit do souboru a ten pak opakovaně použít. Vzor je uložen v adresáři EEPROM.

Programové vybavení – drivery

Drivery, programy a originální dokumentace na stránkách výrobce čipu http://www.ftdichip.com. Aplikační poznámky si zaslouží alespoň zběžné prostudování.

Instalace driverů

Při prvním připojení převodníku k USB portu si systém vyžádá adresář s drivery, u novějších systémů si je najde sám. Základní chování je takové, že se pro převodník spustí drivery pro obsluhu zařízení se dvěma aplikačními rozhraními.

Zařízení je podporováno všemi novými operačními systémy (Windows, Linux, Android, tablety, mobily, RaspberryPI a podobně). Pro programátory jsou připravené knihovny pro vlastní použití (jak pro Windows, tak i pro Linux, statické i dynamické) s přehlednou dokumentací.

Rozhraní Virtual COM Port

Jedná se o režim emulovaného sériového portu. Zpřístupnění tohoto rozhraní je možné zakázat v konfiguraci součástky (v paměti EEPROM) nebo v konfiguraci driveru (v příslušném INI souboru).

Ke komunikaci je možné použít vhodný terminálový program, oblíbená volba je program PuTTY. Spojení se při odpojení USB kabelu bohužel přeruší.

V systému Windows se po připojení k počítači zařízení najde a spustí se pro něj příslušné drivery a v systému se zjeví nový COM port (jeho číslo se dozvíme ve správci zařízení v sekci porty). Aplikace mohou se zařízením komunikovat prostřednictvím rozhraní Win32 COM API jako se standardním sériovým portem.

V sytému Linux se po připojení v systému zjeví nové zařízení /dev/ttyUSB0 (nebo tak nějak dle konkrétní distribuce) a funguje jako nový sériový port. Jméno zařízení lze snadno zjistit příkazem dmesg.

Rozhraní D2XX API

Toto rozhraní je proprietární rozhraní firmy FTDI a slouží pro komunikaci s obvody FTDI včetně ovládání jejich speciálních funkcí (programování paměti EEPROM, přímé ovládání vstupů a výstupů). K přístupu k tomuto rozhraní je k dispozici knihovna (jako dynamická, tak i statická) opět pro všechny systémy.

Základy USB (pro verzi USB 2.0)

Podrobnosti na http://www.usb.org. Zde je k dispozici specifikace USB.

Úplné základy

Rychlost na USB se často plete:

Napájení:

Přenos dat:

Komunikace po USB probíhá v rámcích, které se přenášejí vždy po 1 milisekundě (u zařízení Low Speed nebo High Speed). Do každého rámce se snaží obslužné programy (drivery USB) nacpat co nejvíce přenosů. Přednost mají isochronní přenosy (například pro reproduktory), pak data související s interaktivním přenosem (očuchávání klávesnice, přenos přerušení) a teprve zbytek kapacity je vyplněn hromadnými přenosy. Převodník využívá hromadné (Bulk) přenosy.

V žádném případě nelze spoléhat na časování přenosů. Data se přenášejí po paketech a na straně driverů i v obvodu FTDI jsou vyrovnávací paměti pro odesílaná a pro přijímaná data. Jediná správná cesta bezchybného přenosu spočívá ve využití řízení přenosu buď HW signály (RTS#/CTS#), nebo znaky XON/XOFF (SW řízení přenosu).

Přenos dat u obvodů FTDI

Data se přenášejí po paketech o délce až 64B. 2 bajty se použijí pro přenos stavu řídících signálů a zbytek jsou sériová data. Přenos dat probíhá pouze pokud se zaplní vyrovnávací paměť o délce 64B nebo pokud od posledního přenosu uběhla dostatečně dlouhá doba (vyprší Latency Timer s přednastavenou dobou 16ms).

Pokud se změní stav některého z řídících signálů dojde k přenosu v nejbližším milisekundovém rámci. Totéž platí i pro případ přenosu některého znaku pro řízení přenosu (obvykle znaky XON a XOFF).