I²C

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 26. september 2020; checks kræver 14 redigeringer .

I²C ( IIC , russisk ah-square-si eller ah-tu-si , eng.  Inter-Integrated Circuit ) er en seriel asymmetrisk bus til kommunikation mellem integrerede kredsløb inde i elektroniske enheder . Bruger to tovejskommunikationslinjer (SDA og SCL), der bruges til at forbinde lavhastigheds perifere komponenter til processorer og mikrocontrollere (for eksempel på bundkort , indlejrede systemer , mobiltelefoner ).

Historie

Udviklet af Philips Semiconductors i begyndelsen af ​​1980'erne som en simpel 8-bit intercom bus til bygning af kontrolelektronik. Den er designet til en frekvens på 100 kHz.

Standardiseret i 1992, i den første version, blev en 400 kbps højhastighedstilstand ( Fast-mode , Fm ) tilføjet til standardtilstanden 100 kbps ; på grund af 10-bit adressering bliver det muligt at forbinde mere end 1000 enheder til en bus, hvis antal er begrænset af den maksimalt tilladte buskapacitet - 400 pF .

Version 2.0 (1998) introducerer en højhastighedstilstand på 3,4 Mbit/s ( Hs ) og lave strømkrav. Lidt forbedret i version 2.1 (2000).

Version 3 (2007) tilføjede 1 Mbps-tilstand ( Fast-mode plus , Fm+ ) og enhedsidentifikationsmekanisme ( ID ).

Version 4 (2012) introducerede en ensrettet 5 Mbps-tilstand ( Ultra Fast-mode , UFm ) ved hjælp af push-pull- logik uden pull-up-modstande , en tabel med forudindstillede identifikatorer blev tilføjet.

Version 5 (2012) retter fejl.

I version 6 (2014) er de grafer, der bestemmer værdien af ​​pull-up-modstande afhængigt af buskapacitansen og driftsspændingen , blevet genberegnet [1] .

Forbindelsesprincip

I 2 C -bussen er synkron og består af to linjer: data (SDA) og ur (SCL). Der er en mester (mester) og slaver (slave). Initiativtageren til udvekslingen er altid mesteren, udvekslingen mellem to slaver er umulig. I alt kan der være op til 127 enheder på én to-leder bus.

Ure på SCL-linjen genereres af masteren. SDA-linjen kan styres af enten master eller slave, afhængigt af transmissionsretningen. Enheden for informationsudveksling er en pakke indrammet af unikke busbetingelser kaldet start- og stopbetingelser. Masteren i begyndelsen af ​​hver pakke sender en byte, hvor den angiver slavens adresse og retningen for transmission af efterfølgende data. Data overføres i 8-bit ord. Efter hvert ord sendes en bekræftelsesbit af den modtagende side.

Sådan virker det

I²C bruger to tovejsledninger, trukket op til forsyningsspændingen og styret gennem en åben kollektor eller åbent afløb - en seriel datalinje (SDA, eng.  Serial DAta ) og en seriel clock-linje ( SCL, eng.  Serial CLock ). Standardspændinger er +5 V eller +3,3 V, men andre er tilladt.

Klassisk adressering inkluderer et 7-bit adresseområde med 16 reserverede adresser. Det betyder, at op til 112 gratis adresser er tilgængelige for udviklere til at forbinde ydre enheder til én bus.

Hoveddriftstilstanden er 100 kbps; 10 kbps i reduceret hastighedstilstand. Det er også vigtigt, at standarden tillader suspension af clocking at arbejde med langsomme enheder.

Processen med at sende en besked. START og STOP status

Udvekslingsproceduren begynder med, at masteren genererer en START-tilstand : når SCL-linjen er HØJ, genererer den en overgang af SDA-linjesignalet fra HØJ til LAV. Denne overgang opfattes af alle enheder, der er tilsluttet bussen, som et tegn på begyndelsen af ​​udvekslingsproceduren. Urgenerering er altid mesterens ansvar; hver master genererer sit eget clock-signal, når der sendes data over bussen.


Når der sendes pakker over I²C-bussen, genererer hver master sit eget kloksignal på SCL-linjen. Efter START-betingelsen er dannet, sænker masteren tilstanden af ​​SCL-linjen til en LAV-tilstand og sætter den mest signifikante bit af den første byte af meddelelsen til SDA-linjen. Antallet af bytes i en meddelelse er ikke begrænset. I²C-busspecifikationen tillader kun ændringer på SDA-linjen, når SCL-linjen er LAV. Dataene er gyldige og bør kun forblive stabile under urets HØJ-tilstand. For at bekræfte modtagelsen af ​​en byte fra master-senderen af ​​slave-modtageren, indføres en speciel bekræftelsesbit i I²C-busudvekslingsprotokolspecifikationen, som indstilles på SDA-bussen efter at have modtaget 8 databit.


Udvekslingsproceduren afsluttes med, at masteren genererer STOP-tilstanden  - overgangen af ​​tilstanden for SDA-linjen fra en LAV-tilstand til en HØJ-tilstand, når SCL-linjen er HØJ. START- og STOP-tilstandene genereres altid af masteren. Bussen anses for at være optaget, efter at START-tilstanden er låst. Bussen anses for fri nogen tid efter, at STOP-tilstanden er rettet.

Bekræftelse

Således afsluttes transmissionen af ​​8 bits data fra senderen til modtageren med en ekstra cyklus (dannelsen af ​​den 9. clock-impuls af SCL-linjen), hvor modtageren sætter signalniveauet på SDA-linjen lavt som en tegn på vellykket modtagelse af byten.

Kvittering under dataoverførsel er obligatorisk, undtagen når overførslen er fuldført af slavesiden. Den tilsvarende synkroniseringsimpuls genereres af masteren. Senderen frigiver (sætter HØJ) SDA-linjen så længe kvitteringsuret varer. Modtageren skal holde SDA-linjen under bekræftelsesurets HØJ-tilstand i en stabil LAV-tilstand.

I tilfælde af, at modtagerslaven ikke kan bekræfte sin adresse (f.eks. når den i øjeblikket udfører realtidsfunktioner), skal datalinjen efterlades i tilstanden HØJ. Masteren kan derefter udstede en STOP-betingelse for at afbryde dataoverførslen. Hvis en master-modtager er involveret i overførslen, skal den rapportere afslutningen af ​​overførslen til slave-senderen ved ikke at kvittere for den sidste byte. Slavesenderen skal frigive datalinjen for at give masteren mulighed for at udstede en STOP-tilstand eller gentage en START-tilstand.

Synkronisering

Synkronisering udføres ved brug af kablet-AND-forbindelse til SCL-linjen, hvilket betyder, at masteren ikke har eksklusiv kontrol over overgangen af ​​SCL-linjen fra LAV til HØJ. I tilfælde af at slaven har brug for yderligere tid til at behandle den modtagne bit, har den mulighed for at holde SCL-linjen lav, indtil den er klar til at modtage den næste bit. Således vil SCL-linjen være LAV i den længste LAV-urperiode.

Enheder med en kortere LAV-periode går i dvaletilstand i et stykke tid, indtil den lange periode slutter. Når alle aktiverede enheder har passeret LOW clock-perioden, vil SCL-linjen gå HØJ. Alle enheder begynder at gå HØJ på deres ure. Den første enhed, der udløber denne periode, vil køre SCL-linjen LOW igen. Således er LAV-perioden for SCL-kloklinjen bestemt af den længste clock-periode af alle de involverede anordninger, og HØJ-perioden bestemmes af anordningernes korteste clock-periode.

Synkroniseringsmekanismen kan bruges af modtagere som et middel til at kontrollere overførslen af ​​data på byte- og bitniveauer.

På byte-niveau, hvis en enhed kan modtage databytes med en høj hastighed, men det tager en vis tid at gemme den modtagne byte eller forberede sig på at modtage den næste, så kan den holde SCL-linjen LAV efter at have modtaget og bekræftet en byte, hvilket sætter senderen i en inaktiv tilstand. .

På bitniveau kan en enhed såsom en mikrocontroller uden indbyggede I²C-hardwarekredsløb eller med begrænsede kredsløb sænke klokfrekvensen ved at forlænge dens LAV-periode. På denne måde tilpasses baudhastigheden for enhver master til den langsomme enheds hastighed.

Adressering i I²C-bussen

Hver enhed, der er tilsluttet bussen, kan programmeres adresseres til en unik adresse. For at vælge modtageren af ​​beskeden bruger masteren en unik adressekomponent i pakkens format. Ved brug af samme type enheder har IC'er ofte en ekstra adressevælger, som kan implementeres både som ekstra digitale indgange på adressevælgeren og som en analog indgang. I dette tilfælde er adresserne på sådanne enheder af samme type adskilt i adresserummet for enheder, der er tilsluttet bussen.

Normal tilstand bruger 7-bit adressering.

Adresseringsproceduren på I²C-bussen er, at den første byte efter START-signalet bestemmer, hvilken slave der adresseres af masteren til udvekslingscyklussen. Undtagelsen er "Generelt opkald"-adressen, som adresserer alle enheder på bussen. Når denne adresse bruges, skal alle enheder i teorien sende et kvitteringssignal. Enheder, der kan håndtere "generelle opkald", er dog sjældne i praksis.

De første syv bits af de første to bytes danner slaveadressen. Den ottende, mindst signifikante bit, bestemmer retningen for dataoverførsel. "Nul" betyder, at masteren sender information til den valgte slave. "Én" betyder, at masteren vil modtage information fra slaven.

Efter at adressen er sendt, sammenligner hver enhed i systemet de første syv bit efter START-signalet med dens adresse. Hvis der er et match, anser enheden sig for at være valgt som modtager-slave eller som sender-slave, afhængigt af retningsbitten.

Slaveadressen kan bestå af en fast del og en programmerbar del. Det sker ofte, at der er flere enheder af samme type i systemet (for eksempel hukommelses-IC'er eller LED - indikatordrivere ), derfor bliver det ved hjælp af den programmerbare del af adressen muligt at forbinde det maksimalt mulige antal sådanne enheder til bussen. Antallet af programmerbare bits i adressen afhænger af antallet af ledige chipben. Nogle gange bruges en enkelt udgang med en analog indstilling af det programmerbare adresseområde [2] . I dette tilfælde er det, afhængigt af potentialet ved denne adressepin på IC'en, muligt at flytte driverens adresserum, så den samme type IC'er ikke kommer i konflikt med hinanden på en fælles bus.

Alle specialiserede IC'er, der understøtter drift i I²C-busstandarden, har et sæt faste adresser, hvis liste er angivet af producenten i beskrivelserne af controllerne.

Bitkombination 11110XX af adressen er reserveret til 10-bit adressering.

Som det følger af busspecifikationen er både simple udvekslingsformater og kombinerede tilladte, når master og slave i intervallet fra START-tilstand til STOP-tilstand kan fungere som både modtager og datasender. Kombinerede formater kan f.eks. bruges til at styre sekventiel hukommelse.

Under den første byte af data kan en hukommelsesadresse sendes, som skrives til en intern lås . Efter gentagelse af START-signalet og slavens adresse udsendes dataene fra hukommelsen. Alle beslutninger om automatisk at øge eller formindske en tidligere adgang til adresse træffes af den enhedsspecifikke konstruktør. Under alle omstændigheder er den bedste måde at undgå en ukontrolleret situation på bussen, før du bruger en ny (eller tidligere ubrugt) IC, nøje at studere produktdatabladet eller referencemanualen.

Under alle omstændigheder skal alle enheder under udvikling ifølge busspecifikationen nulstille buslogikken, når de modtager et START- eller gen-START-signal og forberede sig på at modtage adressen.

De største problemer med at bruge I²C-bussen opstår dog netop af det faktum, at udviklere, der "begynder" at arbejde med I²C-bussen, ikke tager højde for, at masteren (ofte en mikroprocessor) ikke har eksklusive rettigheder til nogen af buslinjer..

Ansøgning

I²C bruges i enheder, der giver nem udvikling og lave produktionsomkostninger med relativt god hastighed.

Liste over mulige anvendelser:

Eksempler på systemer med I²C-bus

På billedet:
(a) Meget integreret TV

  1. mikrocontroller
  2. PLL synthesizer
  3. Glimtvis erindring
  4. Multisystem krominansdekoder
  5. Stereo audio dekoder
  6. Billedsignalforstærker
  7. Hi-Fi lydprocessor
  8. Analog videoprocessor
  9. Tekst -tv dekoder
  10. OSD-signal IC

(b) DECT radiotelefonbase

  1. DTMF generator
  2. Telefonlinje interface
  3. ADPCM codec
  4. Batch controller
  5. mikrocontroller

Fordele

Fordele for designere

Ulemper

Udvikling

Hvert elektronisk system inkluderer 3 forskellige typer knudepunkter:

På billige enheder emuleres I²C ofte i software ved hjælp af Bit-banging-teknologi .

Understøttelse af operativsystem

Afledte teknologier

På basis af I²C er der udviklet busser til tilslutning af computerudstyr ACCESS.bus , dataudvekslingsbusser mellem en computer og en DDC -skærm, SMBus -systemfunktionskontrolbusser m.fl. I disse teknologier er det muligt at bruge forskellige spændinger, valutakurser og separate afbrydelseslinjer .

SMBus , foreslået af Intel i 1995, er en delmængde af I²C, der definerer strengere brug. Et af målene for SMBus er at forbedre pålideligheden og interoperabiliteten. Derfor inkluderer moderne I²C-systemer nogle SMBus-politikker og -regler, som nogle gange understøtter både I²C og SMBus, hvilket kræver minimal omkonfiguration enten via en kommando eller ved hjælp af en pin.

IPMB- bussen , der er baseret på brugen af ​​to I²C'er til redundans og er grundlaget for IPMI -grænsefladen , bruges i yderst pålidelige systemer med AdvancedTCA- og MicroTCA -standarderne .

TWI (Two Wire Interface) eller TWSI (Two Wire Serial Interface) er i det væsentlige den samme I²C-bus, men bruger et andet navn af licensårsager (I²C-patenter er allerede blevet annulleret, den 1. oktober 2006 blev royalties for brug af I²C-protokollen annulleret. Der beholdes dog fradrag for at tildele en eksklusiv slaveadresse I²C-bussen.)

Den I²C-kompatible protokol bruger kamerabussen Serial Camera Control Bus ( SCCB ) fra OmniVision.

Se også

Noter

  1. I²C-bus-specifikation og brugervejledning. Rev. 6 - 4 april 2014 Arkiveret 11. maj 2013 på Wayback Machine  NXP Semiconductors NV
  2. hvordan det for eksempel implementeres i SAA1064 IC

Links