I2C, som står for Inter-Integrated Circuit, er en mye brukt seriell kommunikasjonsprotokoll som gjør det mulig for flere enheter å kommunisere med hverandre ved hjelp av en to-tråds grensesnitt. Det er vanligvis brukt for å koble lavhastighets periferiutstyr til et hovedkort, innebygde systemer eller mikrokontrollere.
I2C benytter en master-slave-arkitektur, der en enhet fungerer som master og initierer kommunikasjonen, mens de andre enhetene fungerer som slaver og svarer på masterens forespørsler. Protokollen støtter multi-master-konfigurasjoner, noe som betyr at flere enheter kan kobles til den samme bussen, slik at de kan kommunisere med hverandre.
De to essensielle ledningene i I2C-bussen er:
I2C-kommunikasjon kan foregå ved forskjellige hastigheter, vanligvis referert til som I2C bus-hastigheter. De vanligste bus-hastighetene er Standardmodus (opptil 100 kbit/s), Hurtigmodus (opptil 400 kbit/s) og Høyhastighetsmodus (opptil 3,4 Mbit/s).
I2C-protokollen bruker en start-stopp-mekanisme for å etablere kommunikasjon mellom master- og slaveenheter. Startbetingelsen indikerer begynnelsen av dataoverføringen, mens stoppbetingelsen markerer slutten. Kommunikasjonsprosessen involverer følgende trinn:
Startbetingelse: Mastern enheten starter kommunikasjon ved å sende en startbetingelse. Den trekker SDA-linjen lav mens SCL-linjen forblir høy.
Adresse: Etter startbetingelsen sender master 7-bits adressen til slaveenheten den ønsker å kommunisere med, etterfulgt av en lese- eller skrivebit. Lesebiten indikerer at master ønsker å lese data fra slaven, mens skrivebiten indikerer at master ønsker å skrive data til slaven. Hver slaveenhet på bussen har en unik adresse.
Bekreftelse: Når slaven med den spesifiserte adressen mottar adressebitene, svarer den med en bekreftelsesbit (ACK). ACK er en nedtrekning på SDA-linjen av slaveenheten.
Dataoverføring: Etter adresseprosessen kan master- og slaveenhetene overføre data til hverandre. Dataene overføres i 8-bits segmenter, og hvert segment blir fulgt av en ACK fra mottakerenheten. Denne prosessen fortsetter til masteren bestemmer seg for å stoppe kommunikasjonen.
Stoppbetingelse: Mastern enheten genererer en stoppbetingelse ved å trekke SDA-linjen høy mens SCL-linjen forblir høy. Stoppbetingelsen informerer slavene om at kommunikasjonen har avsluttet.
Det er viktig å merke seg at under dataoverføringen kan SDA-linjen kun endres når SCL-linjen er lav. Dette sikrer synkronisert kommunikasjon mellom master- og slave-enhetene.
I2C er mye brukt i ulike elektroniske systemer for kommunikasjon mellom integrerte kretser. Noen av de vanligste bruksområdene for I2C inkluderer:
I2C brukes ofte til å kommunisere med et bredt spekter av sensorer som temperatursensorer, fuktighetssensorer og akselerometre. Disse sensorene kan gi data om sine respektive parametere, slik at de tilkoblede enhetene kan ta informerte beslutninger basert på mottatt informasjon.
Mange skjermmoduler, som LCD og OLED-skjermer, kan kobles med I2C. Dette forenkler integreringen av skjermer i ulike systemer, da I2C-protokollen tillater enkel kommunikasjon mellom skjermmodulen og kontrollenheten.
I2C brukes ofte til programmering og lesing av Electrically Erasable Programmable Read-Only Memory (EEPROM)-brikker. EEPROM-er er ikke-flyktige minneenheter som kan lagre data selv når strømmen er fjernet. I2C-protokollen letter effektiv dataoverføring mellom kontrollenheten og EEPROM.
I2C benyttes i realtidsklokker for å gi nøyaktige tidtakingsfunksjoner i ulike enheter. Disse klokkene kan opprettholde nøyaktig tid- og datoinformasjon og er vanligvis brukt i applikasjoner som dataregistrering, planlegging og tidssensitive operasjoner.
I2C (Inter-Integrated Circuit) er en mye brukt seriell kommunikasjonsprotokoll som gjør det mulig for enheter å kommunisere med hverandre ved hjelp av et to-tråds grensesnitt. Den har en enkel arkitektur og støtter multi-master-konfigurasjoner, som gir fleksibilitet ved tilkobling av flere enheter til en enkelt buss. I2C brukes ofte i applikasjoner som sensorgrensesnitt, skjermmoduler, EEPROM-programmering og realtidsklokker. Selv om I2C har sine begrensninger, forblir det et populært valg for lavhastighetskommunikasjon i ulike elektroniske systemer.