Introduktion til I2C-Bussen

Denne artikel dækker de væsentlige karakteristika og fremtrædende fordele af den inter–integreret kredsløb (AKA I2C) seriel-kommunikation-protokollen.

kommunikation mellem komponenter: kommunikationsprotokoller

Det bør ikke komme som nogen overraskelse, at et fælles træk ved elektroniske systemer er behovet for at dele information mellem to eller tre eller ti separate komponenter.,

Ingeniører har udviklet en række standard-protokoller, som hjælper de forskellige chips kommunikere med succes—et faktum, der bliver tydeligt, når du konfrontere den spærreild af akronymer under “kommunikation” i listen af funktioner til en microcontroller eller digital signal processor: UART, USART, SPI, I2C, KAN. . . . Hver protokol har sine fordele og ulemper, og det er vigtigt at vide lidt om hver enkelt, så du kan træffe en informeret beslutning, når du vælger komponenter eller grænseflader.,

denne artikel handler om I2C, som typisk bruges til kommunikation mellem individuelle integrerede kredsløb placeret på samme PCB. To andre almindelige protokoller, der også passer ind i denne generelle kategori, er UART (Universal Asynchronous Receiver/Transmitter) og SPI (Serial Peripheral Interface). Du skal kende de grundlæggende egenskaber ved I2C, før du grundigt kan forstå en sammenligning mellem disse tre grænseflader, så vi vil diskutere dette emne i slutningen af denne artikel.

Hvad er I2C-bussen?

I2C står for inter–integrated circuit bus., Der er dog ingen tvivl om, at I2C-protokollen lider af et alvorligt terminologiproblem. Den mest ligetil—og sandsynligvis den mindst almindelige—forkortelse er IIc. Måske er denne forkortelse blevet foragtet, fordi de to hovedstæder i ligner to 1 ‘er, eller to små bogstaver l’ er, eller romertal II, eller symbolet for parallelle modstande. . . . Under alle omstændigheder blev forkortelsen I2C (talt som “I S .uared C”) populær, på trods af den tvivlsomme logik at behandle et normalt bogstav som om det er en variabel eksponentiering., Den tredje mulighed er I2C (“jeg har to C”), som undgår besværet med hævet formatering og er også lidt nemmere at udtale end “jeg squared C.”

Det sidste lag af tåge lægger sig i, når du opdager, at SMB eller SMBus er tilsyneladende bruges som endnu en måde at referere til I2C-bussen. Faktisk henviser disse forkortelser til Systemstyringsbussen, som adskiller sig fra, men næsten identisk med I2C-bussen. Den oprindelige I2C-protokol blev udviklet af Phillips Semiconductor, og år senere definerede Intel SMBus-protokollen som en udvidelse af I2C., De to busser er stort set udskiftelige; hvis du er interesseret i de mindre forskelle mellem dem, Se side 57 I System Management Bus Specification.

som at prøve at have en vigtig samtale i et rum fuld af mennesker

for at værdsætte de smarte teknikker, der gør I2C så effektiv, skal du tænke på vanskeligheden ved at opnå pålidelig, men alligevel alsidig kommunikation mellem flere uafhængige komponenter. Situationen er enkel nok, hvis du har en chip, der altid er mesteren og en chip, der altid er slaven.,

men hvad nu hvis du har flere slaver? Hvad hvis slaverne ikke ved, hvem mesteren er? Hvad hvis der er flere mestre? Hvad sker der, hvis en mester anmoder om data fra en slave, der af en eller anden grund er blevet ikke-funktionel? Eller hvad hvis slaven bliver ikke-funktionel midt i en transmission? Hvad hvis en mester hævder, at bussen foretager en transmission, styrter derefter, før han frigiver bussen?

pointen er, at der er mange ting, der kan gå galt i denne form for kommunikationsmiljø., Du skal huske dette, når du lærer om I2C, fordi protokollen ellers vil virke uudslettelig kompliceret og fin. Faktum er, at denne ekstra kompleksitet er det, der giver I2C mulighed for at give fleksibel, udvidelig, robust seriel kommunikation med lavt pin-antal.

Oversigt over I2C Kommunikation

Før vi kommer ind i alle detaljer, her er de vigtigste kendetegn for I2C:

  • Kun to signaler (clock og data), der er brugt, uanset hvor mange enheder der er på bussen.,
  • begge signaler trækkes op til en positiv strømforsyningsspænding gennem modstande i passende størrelse.
  • hver enhed grænseflader til uret og datasignalet gennem open-drain (eller open-collector) output drivere.
  • hver slaveenhed identificeres ved hjælp af en 7-bit adresse; masteren skal kende disse adresser for at kommunikere med en bestemt slave.
  • alle transmissioner initieres og afsluttes af en master; mesteren kan skrive data til en eller flere slaver eller anmode om data fra en slave.,
  • etiketterne “master ” og” slave ” er i sagens natur ikke-permanente: enhver enhed kan fungere som en master eller slave, hvis den indeholder den nødvendige hard .are og/eller firm .are. I praksis anvender indlejrede systemer dog ofte en arkitektur, hvor en mester sender kommandoer til eller samler data fra flere slaver.,
  • data signal er opdateret på den faldende kanten af clock-signal, og stikprøven på den stigende kant, som følger:

  • Data, der er overført i en-byte sektioner, med hver byte efterfulgt af en én-bit-handshaking-signal, der er nævnt som ACK/NACK (anerkender eller ikke anerkender) bit.

Hvad er fordelene ved I2C?,jeg>indeholder ACK/NACK-funktionalitet, forbedret fejlhåndtering

Og her er nogle ulemper:

  • øger kompleksiteten af firmware eller lavt niveau hardware
  • pålægger protokol overhead, der reducerer gennemløb
  • kræver pull-up modstande, som
    • limit-ur hastighed
    • forbruger værdifulde PCB fast ejendom i yderst rum-begrænset systemer
    • øge effekttab

Vi kan se fra disse punkter, at I2C er specielt velegnet, når du har en kompliceret, forskelligartede, eller omfattende netværk af de kommunikerende enheder., UART-grænseflader bruges generelt til punkt-til-punkt-forbindelser, fordi der ikke er nogen standard måde at adressere forskellige enheder eller dele pins på. SPI er stor, når du har en master og et par slaver, men hver slave kræver en separat “slave vælg” signal, fører til høj pin tæller og routing vanskeligheder, når mange enheder er på bussen. Og SPI er akavet, når du har brug for at støtte flere mestre.

det kan være nødvendigt med vilje at undgå I2C, hvis gennemstrømning er en dominerende bekymring; SPI understøtter højere urfrekvenser og minimerer overhead., Hard .aredesignet på lavt niveau til SPI (eller UART) er også meget enklere, så hvis du arbejder med en FPGA og udvikler din serielle grænseflade fra bunden, skal I2C sandsynligvis betragtes som en sidste udvej.

konklusion

Vi har præsenteret de fremtrædende egenskaber ved I2C, og vi ved nu nok om protokollens fordele og ulemper til at give mulighed for en informeret beslutning om, hvilken seriel bus du muligvis vælger til en given applikation. I fremtidige artikler vil vi undersøge protokollen, og hvordan man rent faktisk implementerer den, mere detaljeret.,

Yderligere Læsning

  • I2C Bus: Hardware Gennemførelse Detaljer
  • I2C Bus: Firmware Gennemførelse Detaljer
  • I2C Design Matematik: Kapacitans og Modstand
  • I2C Bus: Hvornår skal man Bruge en I2C Buffer

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *