Skip to main content

Hvad er I2C-protokollen?

I2C Protocol Tutorial | How I2C Protocol works (Kan 2025)

I2C Protocol Tutorial | How I2C Protocol works (Kan 2025)
Anonim

I2C er udviklet af Philips i 1980'erne og er blevet en af ​​de mest almindelige serielle kommunikationsprotokoller i elektronik. I2C muliggør kommunikation mellem elektroniske komponenter eller IC til IC, om komponenterne er på samme PCB eller forbundet via et kabel. Nøglefunktionen ved I2C er evnen til at have et stort antal komponenter på en enkelt kommunikationsbuss med kun to ledninger, hvilket gør I2C perfekt til applikationer, der kræver enkelhed og lav pris over hastighed.

I2C-protokollen

I2C er en seriel kommunikationsprotokol, der kun kræver to signallinjer. Det var designet til kommunikation mellem chips på et printkort. I2C blev oprindeligt designet til kommunikation med 100kbps, men hurtigere dataoverføringsformer er blevet udviklet gennem årene for at opnå hastigheder på op til 3,4 Mbit. I2C-protokollen er blevet oprettet som en officiel standard, der sikrer god kompatibilitet mellem I2C-implementeringer og god bagudkompatibilitet.

I2C-signaler

I2C-protokollen bruger kun to tovejs signallinjer til at kommunikere med alle enhederne på I2C-bussen. De to anvendte signaler er:

  • Seriel Data Line (SDL)
  • Serial Data Clock (SDC)

Årsagen til, at I2C kun kan bruge to signaler til at kommunikere med en række eksterne enheder, er, hvordan kommunikationen langs bussen håndteres. Hver I2C-kommunikation starter med en 7-bit (eller 10-bit) adresse, der kalder op for den perifere adresse, resten af ​​kommunikationen er beregnet til at modtage kommunikationen. Dette gør det muligt for flere enheder på I2C-bussen at spille rollen som masterenheden, efterhånden som systemets behov dikterer. For at forhindre kommunikationskollisioner omfatter I2C-protokollen voldgift og kollisionsdetekteringsfunktioner, der muliggør en jævn kommunikation langs bussen.

Fordele og begrænsninger

I2C har som en kommunikationsprotokol mange fordele, der gør, at det er et godt valg for mange indlejrede designapplikationer. I2C giver følgende fordele:

  • I2C kræver kun to signal linjer
  • Fleksible dataoverførselshastigheder
  • Hver enhed på bussen er uafhængig adresserbar
  • Enheder har et simpelt Master / Slave-forhold
  • I2C er i stand til at håndtere flere masterkommunikation ved at tilvejebringe voldgift og kommunikationskollisionsdetektering
  • Langere fjernkommunikation end SPI

Med alle disse fordele har I2C også nogle få begrænsninger, som måske skal udformes rundt. De vigtigste I2C begrænsninger omfatter:

  • Da kun 7 bit (eller 10 bit) er tilgængelige til enhedsadressering, kan enheder på samme bus dele samme adresse. Nogle enheder er i stand til at konfigurere de sidste få bits af adressen, men det stiller stadig en begrænsning af enheder på den samme bus.
  • Kun få begrænsede kommunikationshastigheder er tilgængelige, og mange enheder understøtter ikke transmissionen ved højere hastigheder. Delvis understøttelse af hver hastighed på bussen er nødvendig for at forhindre langsommere enheder i at fange partielle transmissioner, der vil medføre 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. Cykling af strømmen til bussen kan bruges til at genstarte bussen og genoprette korrekt drift.
  • Da enheder kan indstille deres kommunikationshastighed, kan langsommere operative enheder forsinke driften af ​​hurtigere enheder.
  • I2C trækker mere strøm end andre serielle kommunikationsbusser på grund af kommunikationslinjens åbne dræningstopologi.
  • Begrænsningerne af I2C-bussen begrænser typisk antallet af enheder på en bus til omkring et dusin enheder.

Applikationer

I2C-bussen er en god mulighed for applikationer, der kræver lav pris og enkel implementering frem for høj hastighed. Eksempelvis er det almindeligt brug af I2C-kommunikationsprotokollen at læse visse hukommelses-IC'er, få adgang til DAC'er og ADC'er, læse sensorer, sende og styre brugerstyrede handlinger, læse hardware sensorer og kommunikere med flere mikrocontrollere.