Deler: 8Bit IO Expander (PCF8574)

Deler: 8Bit IO Expander (PCF8574)

March 21, 2023 Uncategorized 0

I noen tilfeller har en jobb mye flere sensorer, knapper eller lysdioder enn mikrokontrolleren din har pins. PCF8574 er en enkel metode for å legge til 8 lavhastighetsinngang eller utgangspinner til en mikrokontroller. En konfigurerbar adresse lar flere PCF8574S eksisterer på nøyaktig samme buss, så to mikrokontrollerpinner kan håndtere mange IO-pinner. Vi viser deg nøyaktig hvordan du bruker denne brikken nedenfor.

TI PCF8574 I2C 8BIT IO Expander (Mouser # 595-PCF8574N, $ 1,86)

Vi oppdaget PCB fotspor for denne brikken i i2c.lbr samt micro-phillips.lbr på Cadsoft Eagle Library Last ned siden. PCF8574 styres med 2 Cable I2C-protokollen, slik at vi benyttet vårt busspirat universelt serielt grensesnitt for å demonstrere denne brikken. Den nøyaktige samme fundamentale operasjonen gjelder for enhver type mikrokontroller.

Skjemaet viser vår enkle testkrets for PCF8574, her er databladet (PDF). Vi drev brikken med 5volts, så vel som utnyttet en 0,1UF-avkoblingskondensator (C1) mellom kraften og bakken. R1 samt R2 holder I2C-klokken samt databuss ved 5volts. Vi vil bruke en LED for å teste chipets utgangsfunksjoner; P0 er knyttet til LED1 med nåværende begrensningsresistens R3 (330 + ohm). P6 så vel som P7 er koblet til forstått spesifiserer, slik at vi raskt kan teste chipets inngangsfunksjoner.

PCF8574s I2C-adresse er 0100xxxy, med tre biter (X) identifisert ved å spesifisere om adresselinene A2-0, samt en endelig bit (Y) som angir den sjekket ut (1) eller komponere (0) modus. Tallrike PFC8574S kan dele en I2C-buss ved å benytte forskjellige adressepinneinnstillinger. Fordi vi koblet adressepinnene til bakken, er komponenadressen 01000000 (0x40).

Produksjon

Lysdioden på P0 styres ved å komponere en 1 (på) eller 0 (av) til bit 0 av byte som overholder komponenadressen.

I2c> {0x40 0b00000001} <-Command 210 i2c begynner tilstand 220 I2C Skriv: 0x40 GOT ACK: Ja <-write adresse 220 I2C Skriv: 0x01 GOT ACK: Ja <-outputverdi 240 i2c stopp tilstand I2c>

{Problemer En I2C begynner tilstand, oppfylt av komponenadressen, 0x40. Utgangsverdien, 0b00000001, setter P0 høyt, så vel som de forblir bitene lave. } sender I2C-bussholdeplassen, og avslutter transaksjonen. Når den tilsvarende biten er satt høy, slår Lysten på.

For å slå av ledningen av, gjenta sekvensen med den tilsvarende utgangsbiten satt til 0.

I2c> {0x40 0b00000000} <- kommando 210 i2c begynner tilstand 220 I2C Skriv: 0x40 GOT ACK: Ja <-write adresse 220 I2C Skriv: 0x00 GOT ACK: Ja <-outputverdi 240 i2c stopp tilstand I2c>

Med P0 nå satt til bakken, slår Lysten av.

Input.

Pins satt til utgang Høy kan også benyttes som innganger (Datablad side 1). I eksemplet holdes P6 høyt (+5 volt) så vel som P7 holdes lavt (jord), men disse kan også være knapper, sensorer eller annen digital logikk. De andre pinnene er igjen flytende, så vel som ikke representerer gyldige data.

I2c> {0x40 0b11000000} <- kommando 210 i2c begynner tilstand 220 I2C Skriv: 0x40 GOT ACK: Ja <-write adresse 220 I2C Skriv: 0xC0 GOT ACK: Ja <-outputverdi 240 i2c stopp tilstand I2c>

Først setter vi de foretrukne inngangspinnene for å utføre høyt ved å komponere 1 til de tilsvarende bitene i utgangsverdien. Bits 6 samt 7 sett P6 så vel som P7 for å sende høyt.

Nå kan vi sjekke ut PIN-koden. Vi gjorde denne operasjonen med bussen piratutgang satt til binær modus for å sikre at PIN-verdiene er raskt åpenbare.

I2c> {0x41 r} <- kommando 210 i2c begynner tilstand 220 I2C Skriv: 0B01000001 GOT ACK: JA <-Address 230 I2C LES: 0B01000000 <-PIN STAT 240 i2c stopp tilstand I2c>

{Problemer En I2C Begining Condition, 0x41 er den sjekket ut adressen, så vel som R leser en byte fra enheten. } sender I2C-bussholdeplassen, og avslutter transaksjonen.

Svaret, 01000000, representerer spesifiseringen om inngangspinnene. Den mest betydelige biten er 0 siden P7 er koblet til bakken. Neste bit er 1 siden P6 holdes høyt de andre bitene (0) er søppeldata.

Dette er langt fra den eneste IO Expander IC. Har du brukt en flink?

Ikke unnlater å huske å hente på noen form for deler meldinger du kanskje har savnet.

Leave a Reply

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