IMPLEMENTACE ROZHRANÍ USB DO MALÉHO SYSTÉMU S JEDNOČIPOVÝM MIKROPOČÍTAČEM Bohuslávek Zdeněk, Prokůpek Kristián Abstrakt: Předmětem příspěvku je popis řešení vývoje USB komunikačního bloku připojitelného na paralelní porty mikroprocesorového systému. Hardware bloku vybudováno na bázi obvodu FTDI245BM a individuálnímu nastavení FT245BM obvodu a deskriptoru pomocí konfiguračního programu EEPROM Programmer and Test Utility for FT232/FT245 Devices. Řízení komunikace bylo řešeno na bázi D2XX driverů s jejich implementací do řídicího programu vyvinutém ve Visual Basic v.6. Klíčová slova: implementace USB, komunikační protokol, FDTI obvod ÚVOD Komunikační obvod má za úkol spojit systém s nadřízeným systémem, který provede zpracování přenášených dat. Komunikace může probíhat bezdrátově (IrDA optika, či radiofrekvenční komunikace s datovou modulací), či přímým spojením (RS-232, RS-422, RS-485 a nebo v poslední době přes nové seriové rozhraní USB - universal serial bus. Komunikační obvod se stará o fyzickou vrstvu přenosu, tudíž o napěťové, časové a synchronizační průběhy. Komunikace pomocí USB je interně složitá, ale při její implementaci do systému s jednočipovými mikropočítači se nemusíme zabývat průběhy na USB sběrnici, neboť ty mají na starosti již průmyslově vyráběné obvody a řešíme ovládání a komunikaci s těmito obvody v rámci implementace USB protokolu. Cílem této publikace je seznámení s návrhem a vývojem komunikačního obvodu s výstupem v normě USB 1.1, který je připojitelný k libovolnému mikropočítačovému systému přes paralelní port. Důvodem pro výběr USB jsou výhody v universálnosti, rychlosti a perspektivnosti. MATERIÁL A METODY a) Volba způsobu implementace rozhranní USB v malém mikropočítačovém systému USB sběrnici lze softwarově emulovat, ovšem nevidím to jako výhodné řešení, neboť je dost náročné na zabraný strojový čas mikroprocesoru. Externí USB kontroler dokáže spolehlivě tuto funkci přebrat, a ta pak probíhá plně hardwarově. Toto řešení je daleko výhodnější a proto se v poslední době se na trhu objevily mikroprocesory obsahující SIE (serial engine) a USB rozhraní, což jsou důležité prvky pro hardwarovou realizaci tohoto rozhraní. Patří sem například obvod TUSB3210 (8051 jádro s USB periferií) a PIC16C745 (PIC procesor s RISC architekturou a USB periferií). Druhou skupinou jsou externí kontroléry USB a patří sem např. FTDI obvody (firmy FTDICHIP), obvody firmy Cypress (CY7C63000), či obvod AN3121, popsané v [1]. Vzhledem k požadované univerzálnosti řešení byla volena orientace na externí řídicí obvod USB. b) Výběr komunikačního obvodu pro USB Pro malé aplikace vyhoví specifikace USB1.1 při dané maximální rychlosti (12Mbit/s). Užití pomalejšího USB rozhraní přinese menší nároky na USB řadič a možnou kompatibilitu se všemi USB řadiči v počítači. Pro aplikaci se nabízí několik obvodů pro USB
komunikaci. Jsou specifické dle účelu použití (třídy USB zařízení), dle dosahované komunikační rychlosti a typu přenosů, a neméně podle komunikace s mikroprocesorem. Nevyhovují obvody CY7C63000, protože mají málo vývodů, pomalé USB zařízení a vývojové prostředí je poměrně drahé. Dalším obvodem je AN3121 (Anchor Devices), čerpáno z [1]. Jedná se o mikroprocesor 8051 s USB jádrem, poměrně dobrých kvalit. Je zde problém s jeho dostupností a nedostatečnou dokumentací. Plně vyhovující obvody jsou od firmy FTDI chip, jedná se o řadiče komunikující se standartem USB1.1 při plné rychlosti FullSpeed (12Mbit/s). Tyto obvody umožňují i režim bez mikroprocesoru a mohou pracovat samostatně, a proto byly zvoleny pro dané řešení. c) Programování deskriptoru USB v komunikačním bloku dataloggeru Po detekci modulu systémem a při současné funkčnosti ovladačů je nutné přistoupit k dalšímu kroku individuálnímu nastavení FT245BM obvodu a individuální nastavení deskriptoru (popisovací řetězec pod kterým se zařízení hlásí v systému). K tomuto účelu byl stažen konfigurační in ciruit program EEPROM Programmer and Test Utility for FT232/FT245 Devices z internetové adresy [2]. d) Komunikační blok datalogeru ovládání v jazyce Visual Basic 6.0 Za programovací jazyk pro prostředí systému MS Windows byl zvolen Visual Basic 6.0 (dále jen VB ). Použití není z programátorského hlediska úplně ideální, neboť VB není vhodný pro všechny aplikace a trpí řadou nedostatků. Nicméně jeho velkou výhodou je jednoduchost jazyka a rychlá tvorba vlastní aplikace. VÝSLEDKY, DISKUZE Vzhledem k rozsahu celého řešení jsou zde uvedeny pouze vybrané problémově specifické části návrhu. Především je zde presentováno originální řešení komunikačního bloku (skupina obvodů, zajišťujících komunikaci mezi mikroprocesorem a PC prostřednictvím USB). a) Řešení komunikačního bloku s obvodem FTDI FT245BM Charakteristika FTDI - tento obvod patří do druhé generace USB kontrolérů od firmy FTDI Chip. Od první generace se liší označením (xxx BM) a vylepšenými programátorskými vlastnostmi. Mezi ně například patří i další mód BitBang, umožňující samostatnou práci a přímý přístup na piny bitového portu. Výrobce dodává 2 sady ovladačů. První z nich jsou D2XX, které umožní přímé programování přes exportované funkce knihoven ovladačů. Druhé ovladače jsou VCP a ty umožňují emulovat zařízení jako sériový COM port (RS232). Zařízení se pak hlásí v systému jako další sériový port a lze s ním ještě snadněji pracovat. Přenosové rychlosti dosahují až 1Mbit/s pří D2XX, a 300Kb/s při VCP ovladačích. Programování je podporováno ve 32bitových jazycích pro Windows systémy. Například MS Visual C++, MS VB6.0, Borland C Builder, Borland Delphi, a další jazyky orientované na API funkce systému Windows. Komunikační blok návrh schéma zapojení Komunikačním blokem je označeno zapojení několika obvodů, které mají
prostřednictvím USB rozhraní zajišťovat komunikaci mezi malým mikroprocesorovým systémem a nadřazeným PC. Koncepce vychází z dokumentace [5] pro obvod FT245BM. Na obr.1 je schéma kompletního zapojení bloku. Obr. 1 Schéma komunikačního bloku Obvody jsou napájeny jak ze zdrojových vodičů sběrnice tak je zde navržena možnost externího napájení, na které lze modul snadno upravit. V logických vstupech a výstupech FT245BM obvodu jsou přidány ochranné rezistory pro univerzálnost bloku a jeho možném použití i jako učební pomůcka v laboratoři. Obvod je doplněn propojkami: JP2 plní pomocnou funkci (SI disable) pro pevné nastavení příkazu send immediately (okamžitě odeslat data), JP3 je zde pro možné rozšíření obvodu o funkci reset (negovaný vstup reset).
b) Použití komunikační protokolu PC Master Zvolený protokol je založen na komunikaci typu master-slave, tzn. že dotaz z PC je následován odpovědí ze strany aplikace a sama aplikace nemůže komunikaci zahájit. Filosofie tohoto protokolu je minimalizace datového toku na lince a univerzálnost použití pro různé aplikace. Zprávy protokolu PC Master jsou rozděleny do dvou skupin: 1. standardní povel (PC -> aplikace) - zpráva začíná ASCII znakem + (SOB), následuje kód zprávy (command), délka datové části zprávy (data length), vlastní datová část (data part) a celá zpráva je ukončena kontrolním součtem (checksum). formát standardní zprávy PC->aplikace protokolu PC Master start-of-block Obr. 2 command data data length (volitelná délka) part checksum 2. zpráva odpověď (aplikace -> PC) - odpověď ze strany aplikace opět začíná ASCII znakem + (SOB), následuje návratový kód zprávy (status code), za ním datová část známé délky (data part) a celá zpráva je ukončena kontrolním součtem (checksum). formát zprávy aplikace->pc protokolu PC Master start-of-block status code data part checksum (známá délka) Obr. 3 Návratový kód zprávy nabývá definovaných hodnot a informuje PC o výsledku provádění povelu.kontrolní součet je ve zprávě zahrnut pro zajištění alespoň minimální bezpečnosti, vzhledem k tomu, ze byl protokol navržen pro průmyslová prostředí s možným rušením. c) Tvorba programu ve VB 6.0 Obvod FTDI byl programován v tzv. BitBang módu, který neprogramuje ve VB složitěji neboť se do hloubky pracuje s obvodem. Ladění a úspěšné odzkoušení aplikace bylo provedeno v operačním systému Windows 98 Second Edition. Použitý a testovaný interní USB hardware byl řadič VIA TECH 3038 PCI (integrovaný na základní desce, USB1.1) a přídavný PCI USB2.0 řadič (čipset Ali M527x). Oba řadiče využívaly standardních nabízených ovladačů od Microsoft Windows. Jako ovladače a programátorské knihovny obvodu FTDI FT245BM byly použity D2XX (verze 1.06.20), dodávané výrobcem [3]. ZÁVĚR Publikace popisuje vybrané problémy vývoje komunikačního modulupro sběrnici USB. Jsou zde popsány zadané požadavky, řešení obvodů bloku a stručně charakteristika
podmínek vývoje software komunikačního bloku. K vyřešení problému USB komunikace, dopomohl obvod FTDI FT245BM a na základě tohoto řadiče navržen komunikační modul, který umožní převést signál z USB na 8bitový port a naopak. Byla vyřešena problematika volání funkcí ovladačů D2XX z jazyka Microsoft Visual Basic 6.0 a oživeny funkce ovladačů k FTDI obvodu. Byl vytvořen program pro demonstraci a ladění USB komunikačního modulu v jazyce Visual Basic 6.0. Na základě těchto všech znalostí lze modul implementovat do jakéhokoliv systému ovládání a získávání dat přes USB. LITERATURA. [1] Kainka, Burkhard : USB, měření řízení a regulace pomocí sběrnice USB. Praha : BEN, 2003 [2] FTDI Chip : FTD2XX Programmers Guide Version 2.01. Future Technology Devices Intl. Ltd., 2002, [online], (dostupný z www.ftdichip.com) [3] Softwarové nástroje pro konfiguraci obvodu FTDI, [online], (dostupné http://www.ftdichip.com/resources/utilities.htm) [4] Analog Devices : AduC812, MicroConverter, Multichannel 12-Bit ADC with Embedded FLASH MCU. Analog Devices, 1999, [online], (dostupný z www.analog.com) [5] FTDI Chip : FT245BM Designers Guide Version 1.1 : Future Technology Devices Intl. Ltd., 2002 [online], (dostupný z www.ftdichip.com) Kontaktní adresa: Doc. Ing. Zdeněk B o h u s l á v e k, CSc. Bc. Kristián Prokůpek Česká zemědělská univerzita, Technická fakulta, Kamýcká 129, 16521 Praha 6 Suchdol, Česká republika, tel.: 02-2438 3300, fax.: 02-20921361, e-mail: bohuslav.zd@seznam.cz Department of Electrical Engineering, Technical Faculty,Czech University of Agriculture, Kamycka 129, 165 21 Prague, Czech Republic, Tel.: 0042 02 24383300, Fax.: 02-20921361