Udviklet af Philips i 1980'erne, I2C (alternativt stavet I2C) er blevet en af de mest almindeligt anvendte serielle kommunikationsprotokoller inden for elektronik. I2C letter kommunikationen mellem elektroniske komponenter eller integrerede kredsløb, uanset om komponenterne er på det samme printkort eller forbundet med et kabel.
Hvad er I2C-protokollen?
I2C er en seriel kommunikationsprotokol, der kun kræver to signallinjer. Det er designet til kommunikation mellem chips på et printkort (PCB). I2C blev oprindeligt designet til 100 Kbps kommunikation. Der er dog udviklet hurtigere dataoverførselstilstande gennem årene for at opnå hastigheder på op til 3.4 Mbit.
Nøglefunktionen ved I2C er evnen til at have mange komponenter på en enkelt kommunikationsbus med kun to ledninger, hvilket gør I2C perfekt til simple applikationer. I2C-protokollen er blevet etableret som en officiel standard, der muliggør bagudkompatibilitet blandt I2C-implementeringer.
I2C-signaler
I2C-protokollen bruger to tovejssignallinjer til at kommunikere med enhederne på kommunikationsbussen. De to anvendte signaler er:
- Serial Data Line (SDL)
- Serial Data Clock (SDC)
Grunden til, at I2C kun kan bruge to signaler til at kommunikere med flere perifere enheder, er, hvordan kommunikation langs bussen håndteres. Hver I2C-kommunikation starter med en 7-bit (eller 10-bit) adresse, der kalder adressen på den eksterne enhed.
Dette tillader flere enheder på I2C-bussen at spille rollen som den primære enhed, som systemets behov dikterer. For at forhindre kommunikationskollisioner inkluderer I2C-protokollen arbitration og kollisionsdetektionsfunktioner, som tillader jævn kommunikation langs bussen.
Fordele ved I2C
Som kommunikationsprotokol har I2C følgende fordele:
- Fleksible dataoverførselshastigheder.
- Længere distancekommunikation end SPI.
- Hver enhed på bussen kan adresseres uafhængigt.
- Enheder har et simpelt primært/sekundært forhold.
- Det kræver kun to signallinjer.
- Den er i stand til at håndtere flere primære kommunikationer ved at levere voldgifts- og kommunikationskollisionsdetektion.
Begrænsninger af I2C
Med alle disse fordele har I2C også et par begrænsninger, som måske skal designes omkring. De vigtigste I2C-begrænsninger omfatter:
- Da kun 7-bits (eller 10-bits) er tilgængelige til enhedsadressering, kan enheder på den samme bus dele den samme adresse. Nogle enheder kan konfigurere de sidste par bits af adressen, men dette pålægger en begrænsning af enheder på den samme bus.
- Kun få begrænsede kommunikationshastigheder er tilgængelige, og mange enheder understøtter ikke transmission ved højere hastigheder. Delvis understøttelse af hver hastighed på bussen er påkrævet for at forhindre langsommere enheder i at fange delvise transmissioner, der kan resultere i driftsfejl.
- Den delte karakter af I2C-bussen kan resultere i, at hele bussen hænger, når en enkelt enhed på bussen holder op med at fungere. Hvis du slukker for strømmen til bussen, kan det genoprette korrekt drift.
- Da enheder indstiller deres egen kommunikationshastighed, kan langsommere operationelle enheder forsinke driften af hurtigere enheder.
- I2C trækker mere strøm end andre serielle kommunikationsbusser på grund af kommunikationslinjernes open-drain topologi.
- I2C-bussens begrænsninger begrænser typisk antallet af enheder på en bus til omkring et dusin.
I2C-applikationer
I2C er en fantastisk mulighed for applikationer, der kræver lave omkostninger og enkel implementering frem for høj hastighed. F.eks. omfatter almindelige anvendelser af I2C-kommunikationsprotokollen:
- Læser visse hukommelses-IC'er.
- Adgang til DAC'er og ADC'er.
- Overførsel og kontrol af brugerrettede handlinger.
- Læse hardwaresensorer.
- Kommunikation med flere mikrocontrollere.