I2C er utviklet av Philips på 1980-tallet, og er blitt en av de vanligste serielle kommunikasjonsprotokollene i elektronikk. I2C muliggjør kommunikasjon mellom elektroniske komponenter eller IC til IC, om komponentene er på samme PCB eller koblet via en kabel. Nøkkelfunksjonen til I2C er muligheten til å ha et stort antall komponenter på en enkelt kommunikasjonsbuss med bare to ledninger som gjør I2C perfekt for applikasjoner som krever enkelhet og lavpris overfart.
I2C-protokollen
I2C er en seriell kommunikasjonsprotokoll som bare krever to signallinjer. Den ble designet for kommunikasjon mellom sjetonger på en PCB. I2C ble opprinnelig utviklet for kommunikasjon på 100kbps, men raskere dataoverføringsmoduser har blitt utviklet gjennom årene for å oppnå hastigheter på opptil 3,4 Mbit. I2C-protokollen er etablert som en offisiell standard, noe som gir god kompatibilitet blant I2C-implementeringer og god bakoverkompatibilitet.
I2C-signaler
I2C-protokollen bruker bare to toveis signallinjer for å kommunisere med alle enhetene på I2C-bussen. De to signalene som brukes er:
- Seriell datalinje (SDL)
- Serial Data Clock (SDC)
Årsaken til at I2C kun kan bruke to signaler for å kommunisere med en rekke eksterne enheter, er hvordan kommunikasjonen langs bussen håndteres. Hver I2C-kommunikasjon starter med en 7-biters (eller 10-biters) adresse som ringer ut adressen til den perifere resten av kommunikasjonen er ment å motta kommunikasjonen. Dette tillater at flere enheter på I2C-bussen spiller rollen som masterenheten ettersom systemets behov dikterer. For å hindre kommunikasjonskollisjoner inkluderer I2C-protokollen voldgifts- og kollisjonsdetekteringsfunksjoner som tillater jevn kommunikasjon langs bussen.
Fordeler og begrensninger
Som en kommunikasjonsprotokoll har I2C mange fordeler som gjør er et godt valg for mange innebygde designapplikasjoner. I2C gir følgende fordeler:
- I2C krever kun to signallinjer
- Fleksible dataoverføringshastigheter
- Hver enhet på bussen er uavhengig adresserbar
- Enheter har et enkelt Master / Slave-forhold
- I2C er i stand til å håndtere flere masterkommunikasjon ved å gi voldgift og kommunikasjonskollisjonsdeteksjon
- Lengre avstandskommunikasjon enn SPI
Med alle disse fordelene har I2C også noen få begrensninger som kanskje må utformes rundt. De viktigste I2C begrensningene inkluderer:
- Siden bare 7-bits (eller 10-bits) er tilgjengelig for adressering av enheter, kan enheter på samme buss dele samme adresse. Noen enheter kan konfigurere de siste bitene av adressen, men dette stiller fortsatt begrensning på enheter på samme buss.
- Bare noen få begrensede kommunikasjonshastigheter er tilgjengelige, og mange enheter støtter ikke overføringen ved høyere hastigheter. Delvis støtte for hver hastighet på bussen kreves for å hindre at langsommere enheter fanger delvise sendinger som vil resultere i driftslogg.
- Den delte naturen til I2C-bussen kan føre til at hele bussen henger når en enkelt enhet på bussen slutter å fungere. Sykling av kraften til bussen kan brukes til å starte bussen på nytt og gjenopprette riktig drift.
- Siden enheter kan sette kommunikasjonshastigheten, kan langsommere operasjonsenheter forsinke driften av hurtigere enheter.
- I2C trekker mer strøm enn andre serielle kommunikasjonsbusser på grunn av kommunikasjonslinjens åpne drenertopologi.
- Begrensningene til I2C-bussen begrenser vanligvis antallet enheter på en buss til rundt et dusin enheter.
applikasjoner
I2C-bussen er et godt alternativ for programmer som krever lav kostnad og enkel implementering i stedet for høy hastighet. For eksempel, er det vanlig å bruke I2C-kommunikasjonsprotokollen til å lese visse minnekretser, få tilgang til DAC og ADC, lese sensorer, sende og kontrollere brukerstyrte handlinger, lese maskinvare sensorer og kommunisere med flere mikrokontroller.