Piese: Expander 8 bio (PCF8574)

În unele cazuri, un loc de muncă are mult mai mulți senzori, butoane sau LED-uri decât microcontrolerul dvs. are pini. PCF8574 este o metodă simplă pentru a adăuga 8 pini de intrare cu viteză mică sau de ieșire la un microcontroler. O adresă configurabilă permite mai multor PCF8574s să existe în același autobuz, astfel încât două pini de microcontroler pot gestiona o mulțime de pini io. Vă vom arăta exact cum să utilizați acest cip de mai jos.

Ti PCF8574 I2C 8bit IO Expander (Mouser # 595-PCF8574N, $ 1.86)

Am descoperit amprentele PCB pentru acest chip în i2c.lbr, precum și micro-phillips.lbr pe pagina de descărcare a bibliotecii CADSOFT Eagle. PCF8574 este gestionat cu protocolul de 2 cabluri I2C, așa că am folosit interfața serială universală cu autobuzul Pirate pentru a demonstra acest cip. Aceleași operații fundamentale se vor aplica oricărui tip de microcontroler.

Schema arată circuitul nostru ușor de testare pentru PCF8574, iată data firului (PDF). Am alimentat cipul cu 5voluri, precum și a folosit un condensator de decuplare 0.1UF (C1) între putere, precum și știfturile solului. R1, precum și R2 țineți ceasul i2C, precum și autobuzul de date la 5Volts. Vom folosi un LED pentru a testa caracteristicile de ieșire ale cipului; P0 este legat de LED1 cu rezistor de limitare prezent R3 (330+ ohmi). P6, precum și P7 sunt conectate la înțelegerea specifică, astfel încât să putem testa rapid capacitățile de intrare ale cipului.

Adresa I2C a PCF8574 este de 0100xxxi, cu trei biți (x) identificați prin specificarea paginilor de adresă A2-0, precum și un bit final (y) care stabilește modul verificat (1) sau compuneți (0). Numeroasele PFC8574S pot partaja un autobuz I2C prin utilizarea diferitelor setări PIN de adrese. Pentru că am conectat pinii de adresă la masă, adresa compozei este 01000000 (0x40).

Ieșire

LED-ul pe P0 este gestionat prin compunerea unui 1 (ON) sau 0 (OFF) la bitul 0 al octetului care respectă adresa compozită.

I2c> {0x40 0B00000001} <-Command 210 I2C Începeți condiția 220 I2C Scrieți: 0x40 ACK: Da <- adresa de scriere 220 I2C Scrieți: 0x01 Got ACK: Da <-output valoare 240 condiția de oprire I2C I2C>

{Probleme O condiție I2C începe, respectată de adresa compusă, 0x40. Valoarea de ieșire, 0B00000001, stabilește P0 High, precum și biții de ședere scăzută. } Trimite starea stației de autobuz I2C, terminând tranzacția. Când bitul corespunzător este amplasat ridicat, LED-ul se aprinde.

Pentru a dezactiva LED-ul, repetați secvența cu bitul de ieșire corespunzător setat la 0.

I2c> {0x40 0B00000000} <- comanda 210 I2C Începeți condiția 220 I2C Scrieți: 0x40 ACK: Da <- adresa de scriere 220 I2C Scrieți: 0x00 ACK: Da <-output valoare 240 condiția de oprire I2C I2C>

Cu P0 acum setați la masă, LED-ul se oprește.

Intrare

Pinii setați la ieșire ridicată pot fi, de asemenea, utilizați ca intrări (foaia de date Pagina 1). În exemplul, P6 este ținut ridicat (+5 volți), precum și P7 este ținut scăzut (sol), totuși acestea ar putea fi, de asemenea, butoane, senzori sau altă logică digitală. Ceilalți pini sunt lăsați plutitoare, precum și nu reprezintă date valide.

I2c> {0x40 0B11000000} <- comanda 210 I2C Începeți condiția 220 I2C Scrieți: 0x40 ACK: Da <- adresa de scriere 220 I2C Scrierea: 0xc0 a primit ack: da <-output valoare 240 condiția de oprire I2C I2C>

În primul rând, am setat știfturile de intrare preferate pentru a ieși ridicate prin compunerea 1 la biții corespunzători din valoarea de ieșire. Bits 6, precum și 7 set P6, precum și P7 pentru a ieși ridicat.

Acum, putem verifica codul PIN. Am făcut această operație cu ieșirea de la Bus Pirate setată în modul binar pentru a vă asigura că valorile PIN sunt prompt evidente.

I2c> {0x41 r} <- comanda 210 I2C Începeți condiția 220 I2C Scrieți: 0B01000001 Got ACK: Da <-Adress 230 i2c Citiți: 0B01000000 <-pin State 240 condiția de oprire I2C I2C>

{Probleme O condiție I2C începe, 0x41 este adresa verificată, precum și R citește un octet de pe dispozitiv. } Trimite starea stației de autobuz I2C, terminând tranzacția.

Răspunsul, 01000000, reprezintă specificarea pinilor de intrare. Cel mai considerabil bit este 0 deoarece P7 este conectat la sol. Următorul bit este 1 de când P6 este ținut ridicat ceilalți biți (0) sunt date de gunoi.

Acest lucru este departe de singurul IO Expander IC. Ai folosit încă un cip?

Nu reușiți să vă amintiți să prindeți orice tip de mesaje de piese pe care le-ați pierdut.

Share this post

Leave a Reply

Your email address will not be published. Required fields are marked *