Každý, kdo potřebuje něco připojit k počítači, mi nejspíše potvrdí, že je to stále složitější. Něco jiného je se o to pokusit v malé firmě a něco jiného na profesionálním pracovišti. Jaké jsou tedy možnosti?
Jako jedna z posledních možností zůstala RS232, ale ta už pro mnohé aplikace nedostačuje. Další možností připojení je použití počítačové sítě, které nám ale výsledné zařízení prodraží a navíc toto řešení vyžaduje určité znalosti. Na opačném pólu leží řešení pomocí PCI Express sběrnice, kde je zase vysoký kmitočet, složitý návrh a těžko dostupné součástky. Proto se jako velká pomoc jeví řešení firmy FTDI v podobě čipů Vinculum (VNC1L, VNC2L) určených jako USB host a řada čipů FT2232H, FT4232H jako USB slave. Zmíněné čipy nám umožní komunikovat s PC i případným USB zařízením s minimem námahy. My si zde popíšeme čipy Vinculum (VNC1L, VNC2L).
Obr. 1 Připojení čipu Vinculem k procesoru přes UART
Nejdříve krátce pohovoříme o USB z technického hlediska, kdy si popíšeme USB 2.0 v rychlosti tzv. full speed, tedy 12 Mbs. Následující poznámky mají pro USB 2.0 high speed (480 Mbs) ještě větší dopad. USB sběrnice používá pro komunikaci diferenciální pár. Tuto podmínku je potřeba dodržet i při návrhu desky a vést spoje společně. Rovněž tak je potřeba použít kabel stejných elektrických parametrů pro případné spojení desky plošných spojů s konektorem v panelu a s kabelem pro externí připojení USB zařízení, čímž minimalizujeme odrazy na vedení. Jádro čipu pracuje na násobku komunikační rychlosti. Všechny USB čipy, které nám jsou dosud známé, mají vnitřní PLL, a to vyžaduje kvalitní napájení. Pro rychlost 480 Mbs se doporučuje použít kvalitní krystal.
Připojit k našemu zařízení USB klíč s FAT16, FAT32, číst z něho soubory a také do něho zapisovat. Dále nám umožní připojit USB klávesnici a USB myš, stejně jako tisknout na některých tiskárnách, u kterých je dostupný komunikační protokol. Vinculum se umí chovat jako USB host pro jiné FTDI čipy v módu slave, a proto si můžeme postavit třeba programátor paměti s čipy FT2232 a programovat z počítače. K čipu Vinculum můžeme také připojit USB klíč, přečíst data a poslat je po USB do programátoru. Můžeme prostě PC z toho všeho vynechat. Je také dobré vědět, že čip umožnuje číst data z klíče rychlostí asi 300 KB/sec.
Vinculum je procesor, který obsahuje Flash paměť pro uložení firmware a paměť RAM. Jako další nezbytnou součástí jsou dva USB porty a vstupně-výstupní linky. Čipy se prodávají nenaprogramované a jsou v pouzdře TQFP48. Na webu výrobce lze zdarma stáhnout firmware pro různé konfigurace. Lze ho naprogramovat z počítače pomocí sériové linky s použitím programu z webu výrobce (nezapomenout přizpůsobit úrovně 3v na RS232). Pokud použijeme firmware, které umožňuje použití USB klíče, tak po připojení napájení a resetu si Vinculum sám hledá na klíči případný update.
Speciální firmware také umožňuje číst mp3 skladby a posílat je do mp3 dekodéru a navigovat se v nich. To vše je podrobněji popsáno v dokumentaci výrobce. Letošní novinkou je čip Vinculum VNC2L, který obsahuje výkonnější procesor, více paměti a zdarma vývojové prostředí pro tvorbu vlastního firmware. Součástí jsou také knihovny pro různé části USB protokolu. Vinculum VNC2L je také dodáván v různých pouzdrech, které se liší počtem vývodů, a má navíc periférie jako třeba PWM.
V zásadě jsou 3 možnosti: UART, SPI a FIFO.
UART není potřeba vysvětlovat, je nutno použít i signály pro řízení toku dat. SPI komunikace je plně kompatibilní se standardem. Nejrychlejší způsob komunikace poskytuje pravděpodobně použití FIFO. V tomto módu je k dispozici osmi-bitová sběrnice, signál pro čtení dat (RD) a signál pro zápis dat (WR). Pro řízení komunikace je použit signál (TXE), kdy vstupní buffer může přijmout data. A ještě je zde signál (RXF), jenž je nastaven, pokud má čip data pro přečtení. Na následujícím obrázku je vidět zapojení čipu do našeho zařízení, převzatého z katalogového listu.
Komunikace s USB klíčem má stěžejní význam, přičemž firmware má implementovanou FAT tabulku a celý protokol pro práci s datovým zařízením, tj. mass storage protokol. Pro komunikaci je použit znakový protokol. Celá komunikace připomíná trochu okno systému DOS. Nejsou definovány pakety jako takové a nejsou ani použity kontrolní součty. Komunikace tedy vypadá takto:
Po resetu nám Vinculum pošle následující zprávu:
Ver 03.65 VDAP On-Line
Pokud je připojen USB klíč a na disku není nový soubor firmware, potom:
Device detected P2
No upgrade
D:\>
Pokud není připojen disk, potom:
No disk
D:\>
Když pošleme příkaz a je připojen disk se soubory:
DIR
Vinculum odpoví např.:
ahoj.txt
data.dat
D:\>
A zde je jeden příklad pro ukázku. Otevřeme soubor “ahoj.txt” pro zápis, zapíšeme 10 bajtů a soubor zavřeme.
OPW ahoj.txt
WRF 10
1 2 3 4 5 6 7 8 9 10
CLF ahoj.txt
Firmware tedy umožňuje číst soubory a zapisovat do nich data, ale také je vytvářet. Je možné zjistit velikost souboru a datum jeho vytvoření. Soubory lze mazat, je možné procházet adresářovou strukturou a také ji vytvářet a mazat. Součástí firmware je rovněž funkce pro přímý přístup na disk jako čtení a zápis jednotlivých sektorů. Tímto způsobem je možné implementovat v nadřazeném systému jiný souborový systém.
Výše uvedené součástky používáme dlouhodobě a jejich funkce je bezproblémová. Před nasazením do provozu jsme je testovali po několik dní nepřetržitým provozem a neobjevila se žádná chyba v podobě zatuhnutí nebo špatně přečtených dat. K čipu jsme zkoušeli připojit velké pevné disky i čtečky karet. Pevný disk fungoval bez problému, zatímco u čtečky karet s možností čtení více druhů karet musela být karta v tzv. prvním slotu. Jako omezení se nám jeví používaní dlouhých jmen, neboť firmware takové soubory neumí vytvořit, umí pouze názvy ve tvaru starého DOSu (8.3). Pokud je tedy na USB klíči soubor VELMIDLOUHYNAZEV.TXT, tak nám vrátí VELMID~1.TXT. S tím souvisí ještě jeden nedostatek a to, že neumí české znaky. Při implementaci je s tím potřeba počítat. Samozřejmě do budoucnosti půjde jistě zmíněné omezení odstranit v nových čipech VNC2L, které mají mnohem více paměti, a tak to zde půjde implementovat. VNC1L je dle hexadecimálního výpisu již zaplněn.