I2C (alternativt stavet I2C) ble utviklet av Philips på 1980-tallet, og har blitt en av de mest brukte seriekommunikasjonsprotokollene innen elektronikk. I2C forenkler kommunikasjon mellom elektroniske komponenter eller integrerte kretser, enten komponentene er på samme PCB eller koblet med en kabel.
Hva er I2C-protokollen?
I2C er en seriell kommunikasjonsprotokoll som bare krever to signallinjer. Den ble designet for kommunikasjon mellom brikker på et kretskort (PCB). I2C ble opprinnelig designet for 100 Kbps kommunikasjon. Imidlertid har raskere dataoverføringsmoduser blitt utviklet gjennom årene for å oppnå hastigheter på opptil 3.4 Mbit.
Nøkkelfunksjonen til I2C er muligheten til å ha mange komponenter på en enkelt kommunikasjonsbuss med bare to ledninger, noe som gjør I2C perfekt for enkle applikasjoner. I2C-protokollen er etablert som en offisiell standard, som tillater bakoverkompatibilitet mellom I2C-implementeringer.
I2C-signaler
I2C-protokollen bruker to toveis signallinjer for å kommunisere med enhetene på kommunikasjonsbussen. De to signalene som brukes er:
- Serial Data Line (SDL)
- Serial Data Clock (SDC)
Årsaken til at I2C kun kan bruke to signaler til å kommunisere med flere perifere enheter er hvordan kommunikasjon langs bussen håndteres. Hver I2C-kommunikasjon starter med en 7-biters (eller 10-biters) adresse som kaller opp adressen til det eksterne enheten.
Dette lar flere enheter på I2C-bussen spille rollen som den primære enheten etter behovene til systemet. For å forhindre kommunikasjonskollisjoner inkluderer I2C-protokollen arbitrering og kollisjonsdeteksjonsfunksjoner, som tillater jevn kommunikasjon langs bussen.
Fordeler med I2C
Som en kommunikasjonsprotokoll har I2C følgende fordeler:
- Fleksible dataoverføringshastigheter.
- Lengre avstandskommunikasjon enn SPI.
- Hver enhet på bussen kan adresseres uavhengig.
- Enheter har et enkelt primært/sekundært forhold.
- Det krever bare to signallinjer.
- Den er i stand til å håndtere flere primære kommunikasjoner ved å gi voldgifts- og kommunikasjonskollisjonsdeteksjon.
Begrensninger for I2C
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 enhetsadressering, kan enheter på samme buss dele samme adresse. Noen enheter kan konfigurere de siste bitene av adressen, men dette medfører en begrensning av enheter på samme buss.
- Bare noen få begrensede kommunikasjonshastigheter er tilgjengelige, og mange enheter støtter ikke overføring ved høyere hastigheter. Delvis støtte for hver hastighet på bussen er nødvendig for å forhindre at tregere enheter fanger opp delvise sendinger som kan føre til driftsfeil.
- Den delte karakteren til I2C-bussen kan føre til at hele bussen henger når en enkelt enhet på bussen slutter å fungere. Å slå på strømmen til bussen kan gjenopprette riktig drift.
- Siden enheter angir sin egen kommunikasjonshastighet, kan tregere driftsenheter forsinke driften av raskere enheter.
- I2C trekker mer strøm enn andre serielle kommunikasjonsbusser på grunn av åpen-drain-topologien til kommunikasjonslinjene.
- Begrensningene til I2C-bussen begrenser vanligvis antall enheter på en buss til rundt et dusin.
I2C-applikasjoner
I2C er et flott alternativ for applikasjoner som krever lave kostnader og enkel implementering i stedet for høy hastighet. Vanlige bruksområder for I2C-kommunikasjonsprotokollen inkluderer for eksempel:
- Leser visse minne-ICer.
- Tilgang til DAC-er og ADC-er.
- Sende og kontrollere brukerstyrte handlinger.
- Lese av maskinvaresensorer.
- Kommunisere med flere mikrokontrollere.