Diely: 8bit IO Expander (PCF8574)
V niektorých prípadoch má práca oveľa viac senzorov, tlačidiel alebo LED diódy, než je váš mikrokontrolér má kolíky. PCF8574 je jednoduchý spôsob, ako pridať 8 nízko-rýchlostných vstupných alebo výstupných kolíkov na mikrokontrolér. Konfigurovateľná adresa umožňuje niekoľko PCF8574S existujú na presne rovnakom autobuse, takže dva mikrokontroller pins môže riadiť veľa io pinov. Ukážeme vám presne, ako používať tento čip nižšie.
Ti PCF8574 I2C 8bit IO Expander (Mouses # 595-PCF8574N, $ 1.86)
Objavili sme PCB Footprints pre tento čip v I2C.LBR, rovnako ako Micro-Phillips.LBR na stránke sťahovania Eagle Library. PCF8574 je spravovaný s 2 káblom I2C protokolom, takže sme využili naše autobusové pirátske univerzálne sériové rozhranie na preukázanie tohto čipu. Presné rovnaké základné operácie sa budú vzťahovať na akýkoľvek typ mikrokontroléra.
Schematické ukazuje náš jednoduchý testovací okruh pre PCF8574, tu je dátový list (PDF). Spojili sme čipu s 5Volts, ako aj využil 0,1UF oddeľovací kondenzátor (C1) medzi silou, ako aj zemnými kolíkmi. R1, ako aj R2 Držte hodiny I2C, ako aj dátový zbernicu pri 5Volts. Využijeme LED diódu na testovanie výstupných funkcií čipov; P0 je spojený s LED1 s aktuálnym obmedzujúcim odporom R3 (330+ ohms). P6, ako aj p7 sú pripojené k pochopeniu špecifikácie, takže môžeme rýchlo otestovať vstupné možnosti čipu.
Adresa I2C I2C PCF8574 je 0100xxxy, s tromi bitmi (x) identifikovanými podľa špecifikácie adresa pinov A2-0, ako aj konečný bit (Y), ktorý nastaví kontrolu (1) alebo model (0) režim. Početné PFC8574s môže zdieľať I2C zbernicu využitím rôznych nastavení PIN adresy. Pretože sme pripojili kolíky adresy po zemi, adresa komponujú je 01000000 (0x40).
Výkon
LED dióda na P0 je riadená skladaním 1 (zapnutého) alebo 0 (vypnuté) na bit 0 bajtu spĺňajúcej adresu.
I2C> {0x40 0B00000001} <-command 210 I2C Začnite stav 220 I2C Napíšte: 0x40 GOT ACK: Áno <-write Adresa 220 I2C Napíšte: 0x01 dostal ACK: áno <-output hodnota 240 I2C Stav zastavenia I2C>
{Problémy A I2C Začína stav, spĺňajúca adresu komponujú, 0x40. Výstupná hodnota, 0B00000001, sady P0 vysoká, ako aj zostávajúce bity. } Odosiela stav zastavenia I2C, ukončenie transakcie. Keď je príslušný bit nastavený vysoký, LED sa zapne.
Ak chcete vypnúť LED, zopakujte sekvenciu so zodpovedajúcim výstupným bitom nastaveným na 0.
I2C> {0x40 0B00000000} <- príkaz 210 I2C Začnite stav 220 I2C Napíšte: 0x40 GOT ACK: Áno <-write Adresa 220 I2C Write: 0x00 dostal ACK: áno <-output hodnota 240 I2C Stav zastavenia I2C>
S P0 teraz nastaveným na zem, LED dióda sa vypne.
Zaviesť
Kolíny nastavené na výstupné vysoké, môžu byť tiež využité ako vstupy (Dátové listy). V príklade P6 sa drží vysoký (+5 voltov), ako aj P7 je držaný nízko (mletý), ale tieto môžu byť aj tlačidlá, snímače alebo iné digitálne logiky. Ďalšie kolíky sú ľavé plávajúce, ako aj nepredstavujú platné údaje.
I2C> {0x40 0B11000000} <- príkaz 210 I2C Začnite stav 220 I2C Napíšte: 0x40 GOT ACK: Áno <-write Adresa 220 I2C Napíšte: 0xc0 dostal ACK: áno <-output hodnota 240 I2C Stav zastavenia I2C>
Po prvé, nastavujeme preferované vstupné kolíky na výstup s vysokou zložením 1 na zodpovedajúce bity vo výstupnej hodnote. Bity 6, ako aj 7 set P6, ako aj P7 na výstup vysoký.
Teraz môžeme skontrolovať kód PIN. Urobili sme túto operáciu s výstupom zbernice Pirate Set do binárneho režimu, aby sme zabezpečili, že hodnoty pin sú okamžite zrejmé.
I2C> {0x41 R} <- príkaz 210 I2C Začnite stav 220 I2C Napíšte: 0B01000001 GOT ACK: ÁNO <-ADDRESS 230 I2C Čítanie: 0B01000000 <-pin State 240 I2C Stav zastavenia I2C>
{Problémy A I2C Začiatok Stav, 0x41 je kontrolovaná adresa, rovnako ako R číta jedno bajt zo zariadenia. } Odosiela stav zastavenia I2C, ukončenie transakcie.
Odpoveď, 01000000 predstavuje špecifikáciu vstupných kolíkov. Najviac značnejší bit je 0, pretože p7 je pripojený k zemi. Nasledujúci bit je 1, pretože p6 sa drží vysoké, ostatné bity (0) sú odpadu.
To je ďaleko od jediného expandéra IO. Využili ste ešte jeden čip?
Nezabudnite si nepamätať, aby sa dohovil na akýkoľvek typ správ dielov, ktoré ste mohli vynechať.