. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
Použití obvodů expandIO
9. prosince 2009 - 9:01 | Pandatron | Použití obvodů expandIO | Komentářů: 7  

Použití obvodů expandIO

Konfigurace a příklady použití obvodů expandIO-USB pro snadné rozšíření PC o digitální a analogové I/O piny a sériová komunikační rozhraní.

expandIO-USB je jeden z mnoha produktů anglické firmy Firmware Factory Ltd., určený jako levné řešení USB I/O expandérů. Prakticky se jedná o mikrokontroléry PIC firmy Microchip, předprogramované zvoleným kódem. Po připojení obvodu k libovolnému PC prostřednictvím USB portu je k dispozici až 32 digitálních, vstupně/výstupních pinů, sériové komunikační sběrnice typu UART, SPI, I2C, UNI/O a samozřejmě i většina z funkcí hostitelského mikrokontroléru. Jako jsou například čítače/časovače, komparátory, 10-bitové ADC, funkce přerušení atd. Obvody navíc v systému využívají ovladače skupiny HID (Human Interface Device), dostupné v každém dnes běžně používaném operačním systému, což eliminuje potřebu programování a instalace speciálních driverů.


Obr. 1: Základní schéma zapojení

Na obr. 1 je uvedeno základní schéma zapojení obvodů rodiny expandIO-USB, jmenovitě typu EXPANDIO-USB-DIL v provedení DIL-28. Schéma je však vyjma rozložení pinů naprosto shodné i pro další obvody z této skupiny, dostupné v provedeních SSOP-20 a TQFP-40.


Obr. 2: Přehled obvodů expandIO

Jediný požadavek je v konstrukci kladen na krystal Q1 s frekvencí 12.000 MHz, který by měl mít stabilitu lepší než 0,25 % pro spojení s USB Full-speed. Stabilizátor IO2 může být libovolný, poskytující výstupní napětí 3,3V z USB napětí pro napájení mikrokontroléru IO1. V případě napájení mikrokontroléru z aplikace může být samozřejmě zcela vynechán.


Obr. 3: Pokusné sestavení na kontaktním poli a spojení s I
2C eeprom

USB konfigurace
Přesto že jsou obvody z výroby nejen naprogramovány, ale i nakonfigurovány pro připojení prostřednictvím USB portu, je před jejich použitím možné provést vlastní konfiguraci. Kromě výrobce a názvu produktu je možné definovat i maximální odebíraný proud z USB portu, identifikátory VID a PID, stejně jako je možné provést uzamčení obvodu před další rekonfigurací.


Obr. 4: Základní okno konfiguračního programu HIDconfig

Na obr. 4 jsou uvedeny veškeré konfigurační možnosti, dostupné ve volně šířeném programu HIDconfig. Nejprve je potřeba provést vyhledání připojených obvodů stiskem tlačítka Scan vlevo nahoře. Poté se vybere zvolený obvod z nabídky Select a stiskem tlačítka Open (nyní Close) dojde k jeho otevření a načtení aktuální konfigurace.

Kromě zmíněných základních konfiguračních možností, týkajících se v převážné většině samotného USB portu, je k dispozici i výběr možných indikačních LED (sekce Indicators na obr. 4) a jejich umístění na zcela libovolný z dostupných I/O pinů.

Nová konfigurace je do obvodu zapisována stiskem tlačítka Write device data. V případě použití obvodů v sériově vyráběných produktech je navíc k dispozici volba Write lock. Po jejím zaškrtnutí a zapsání konfigurace do obvodu již není možné obvod znovu konfigurovat!

Základní použití obvodů
Pro snadné použití obvodů ve vlastní aplikaci jsou k dispozici kompletní a okomentované příklady i knihovny v jazyce C a C++. S jejich pomocí je tak použití obvodů otázkou připojení .H souboru a knihovny LIB k projektu řídící aplikace a využití dostupných a okomentovaných povelů.

Základní přehled dostupných příkazů pro I/O operace expandIO-USB:

Příkaz Popis
Null Odpoví Null, pokud je připojen
Get Register Vyčtení hodnoty registru mikrokontroléru
Set Register Zápis hodnoty do registru mikrokontroléru
Get Register Bit Čtení hodnoty jednoho bitu zvoleného registru
Set Register Bit Zápis hodnoty do jednoho bitu zvoleného registru
Get Port Vyčtení hodnoty I/O portu
Set Port Zápis hodnoty do I/O portu
Get Port Bit Čtení hodnoty jednoho vstupního pinu
Set Port Bit Zápis hodnoty do jednoho výstupního pinu
Get Analog Čtení analogové hodnoty pomocí interního 10-bit ADC na zvoleném kanále
SetSerial Aktivace sériového rozhraní
Execute SPI Práce s rozhraním SPI
Execute UNI/O Práce s rozhraním UNI/O
Execute I2C Práce s rozhraním I2C
Wait Pauza v ms
Interrupt Event Obsluha interruptu
Matrix Scan Čtení maticové klávesnice
Multiplex Output Řízení multiplexního displeje
Stream Data Příjem streamu ze zvolených kanálů ADC
Get Firmware ID Zjištění verze firmware

Veškeré povely jsou, včetně jejich hexadecimálních hodnot, popisu funkce i ukázkového příkladu, dostupné v datasheetu obvodů expandIO-USB, dostupném na konci článku.

Příklady použití
Pro uvedení nejjednodušších příkladů použití bylo využito možností volně dostupného konfiguračního programu HIDconfig. Ten kromě samotné konfigurace obvodu disponuje i základní funkcí Write a Read, s jejichž pomocí je možné do obvodu příkazy jak zasílat, tak z něho vyčítat návratové hodnoty.

Zápis a čtení hodnot z I/O pinů:
Pro zápis hodnoty do výstupních I/O pinů obvodu expandIO jsou dostupné povely Set Port (9Dh) a Set Port Bit (9F). Naproti tomu čtení hodnot ze vstupních pinů je ošetřeno povely Get Port (9Ch) a Get Port Bit (9Eh). To, zda je konkrétní pin nastaven jako vstupní nebo výstupní je řešeno zcela automaticky, podle aktuálně použitého povelu z výše uvedených.

Pro příklad nastavení pinu RB3 do hodnoty log. 1 je tedy potřeba odeslat povel v podobě 9F 02 03 01 (hexa).


Obr. 5: Výřez okna HIDconfig se zadaným povelem z předchozího příkladu

Naprosto shodně je řešen zápis a čtení z/do registrů mikrokontroléru expandIO pomocí příkazů Get/Set Register (Bit). Dále je velice podobným způsobem ošetřen i integrovaný ADC převodník.

Čtení hodnoty z ADC:
Pro čtení hodnoty z 10-bitového integrovaného převodníku ADC je k dispozici povel Get Analog (96h). Zde je potřeba vycházet z datasheetu hostitelského mikrokontroléru, co se dostupnosti kanálů a jejich fyzického umístění na pinech týče.

Příklad zápisu ve formě 96 16 00 00 (hexa) provede jednorázové vyčtení aktuální hodnoty z kanálu AN6 při použití referenčního napětí Vref+


Obr. 6: Výřez okna HIDconfig se zadaným povelem z předchozího příkladu

Řízení sběrnice I2C:
V současné době jsou obvodem podporovány sériové komunikační protokoly kompatibilní se sběrnicemi I2C, SPI, UNI/O a samozřejmě UART. Obvod expandIO-USB je přitom vždy ve funkci Master. Jelikož použití jednotlivých protokolů je navzájem velice podobné, rozlišené především z podhledu specifické obsluhy zvoleného rozhraní, uvedu zde pouze praktický příklad pro použití I2C sběrnice ve spojení s pamětí EEPROM.

Nejprve je potřeba povelem SetSerial (93h) aktivovat sběrnici typu I2C se zvolenou komunikační hodinovou frekvencí. Příklad povelu ve formátu 93 11 3B 00 (hexa) aktivuje I2C s frekvencí 100 kHz.

Dále jsou již k dispozici jednotlivé povely pro čtení a zápis dat z/do připojených obvodů typu slave. Navíc je zde podpora speciálního formátu využívajícího stavu "reset" na sběrnici mezi zápisem dat (například adresou) a následným čtením zvoleného počtu bytů.
Následující obrázek vlevo reprezentuje příklad povelu pro zápis jednoho bytu (33h) na adresu 0000h připojené paměti eeprom s fyzickou adresou A0h.
Druhý příklad, uvedený na následujícím obrázku vpravo představuje zápis povelu ke čtení od adresy 0000h z paměti na fyzické adrese A0h a to celkem tří bytů. Pod odeslaným příkazem je vidět vyčtená hodnota, tedy první tři byty z paměti eeprom s hodnotami 33-04-88h.

Obr. 7: Zápis a čtení dat z/do I2C paměti eeprom

Ostatní funkce:
Dále je k dispozici i celá řada speciálních a specifických funkcí obvodu expandIO-USB pro práci s okolím. Krom obsluhy základních interruptů a dostupnosti čekací smyčky Wait jsou k dispozici i kompletní funkce například pro čtení maticové klávesnice či zápis do multiplexně zapojených sedmisegmentových displejů (obr. 8).


Obr. 8: Příklad podporované maticové klávesnice a multiplexního displeje

Neméně zajímavou funkcí je i povel Stream Data, umožňující automatické čtení hodnoty ADC v pravidelných intervalech.


Obr. 9: Tabulka intervalů povelu Stream Data

Závěr
Jak zde bylo ve zkratce popsáno a v redakci i prakticky ověřeno, obvody expandIO-USB se jeví jako ideální prvky nejen pro doplnění stávajících zařízení pro rozšíření jejich funkcí, ale mohou být použity i v nových aplikacích. Přímo ideální jsou pro použití ve spojení s automatizačními a robotickými kity, kde zajišťují dostatečnou flexibilitu a výrazně zkracují dobu potřebnou k návrhu aplikace.
Kromě naprogramovaných a nakonfigurovaných obvodů jsou navíc u výrobce k dispozici i předkompilované soubory pro integraci do vlastního mikrokontroléru a dopsání požadovaných funkcí přímo na čipu.

Celá řada uvedených obvodů expandIO-USB je dostupná skladem prostřednictvím našeho eShopu.

Odkazy & Download:
Domovská stránka výrobce
Informace o produktech expandIO-USB
expandIO-USB Data Sheet
expandIO-USB v našem eShopu







GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk

Komentáře (7):

Zobrazit starší 30 dnů (7)...



Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
Vývojový kit MEGA48X
Levnější varianta univerzálního vývojového kitu s obvodem ATmega48 společnosti ATMEL je vhodná jak pro začátečníky, tak i profesionály.
Skladem od 545 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007