Skip to main content

Wat is het I2C-protocol?

How I2C Communication Works and How To Use It with Arduino (April 2025)

How I2C Communication Works and How To Use It with Arduino (April 2025)
Anonim

I2C, ontwikkeld door Philips in de jaren 80, is een van de meest gebruikte seriële communicatieprotocollen in de elektronica geworden. I2C maakt communicatie tussen elektronische componenten of IC naar IC mogelijk, ongeacht of de componenten zich op dezelfde PCB bevinden of via een kabel zijn aangesloten. Het belangrijkste kenmerk van I2C is de mogelijkheid om een ​​groot aantal componenten op een enkele communicatiebus met slechts twee draden te hebben, wat I2C perfect maakt voor toepassingen die eenvoud en lage kosten sneller dan snel vereisen.

Het I2C-protocol

I2C is een serieel communicatieprotocol dat slechts twee signaallijnen vereist. Het is ontworpen voor communicatie tussen chips op een PCB. I2C is oorspronkelijk ontworpen voor communicatie met 100 kbps, maar in de loop der jaren zijn snellere datatransmissiemodi ontwikkeld om snelheden tot 3,4 Mbit te behalen. Het I2C-protocol is opgezet als een officiële standaard, die zorgt voor een goede compatibiliteit tussen I2C-implementaties en goede compatibiliteit met eerdere versies.

I2C-signalen

Het I2C-protocol gebruikt slechts twee bidirectionele signaalleidingen om te communiceren met alle apparaten op de I2C-bus. De twee gebruikte signalen zijn:

  • Seriële datalijn (SDL)
  • Seriële dataklok (SDC)

De reden dat I2C slechts twee signalen kan gebruiken om met een aantal randapparaten te communiceren, is hoe de communicatie langs de bus wordt afgehandeld. Elke I2C-communicatie begint met een 7-bits (of 10-bits) adres dat het adres van het randapparaat oproept, de rest van de communicatie is bedoeld om de communicatie te ontvangen. Hierdoor kunnen meerdere apparaten op de I2C-bus de rol van het masterapparaat spelen, zoals de behoeften van het systeem vereisen. Om communicatie-botsingen te voorkomen, omvat het I2C-protocol arbitrage- en botsingsdetectiemogelijkheden die een soepele communicatie langs de bus mogelijk maken.

Voordelen en beperkingen

Als communicatieprotocol heeft I2C veel voordelen die maken een goede keuze is voor veel ingebedde ontwerptoepassingen. I2C biedt de volgende voordelen:

  • I2C heeft slechts twee signaallijnen nodig
  • Flexibele datatransmissiesnelheden
  • Elk apparaat op de bus is onafhankelijk adresseerbaar
  • Apparaten hebben een eenvoudige Master / Slave-relatie
  • I2C is in staat om meerdere mastercommunicaties af te handelen door middel van arbitrage- en communicatiebotsingsdetectie
  • Communicatie over langere afstanden dan SPI

Met al deze voordelen heeft I2C ook een paar beperkingen die misschien moeten worden ontworpen. De belangrijkste I2C-beperkingen zijn onder meer:

  • Omdat alleen 7-bits (of 10-bits) beschikbaar zijn voor apparaatadressering, kunnen apparaten op dezelfde bus hetzelfde adres delen. Sommige apparaten zijn in staat om de laatste paar bits van het adres te configureren, maar dit betekent nog steeds een beperking van apparaten op dezelfde bus.
  • Er zijn slechts enkele beperkte communicatiesnelheden beschikbaar en veel apparaten ondersteunen de transmissie niet bij hogere snelheden. Gedeeltelijke ondersteuning voor elke snelheid op de bus is vereist om te voorkomen dat tragere apparaten gedeeltelijke transmissies opvangen die resulteren in operationele storingen.
  • Het gedeelde karakter van de I2C-bus kan ertoe leiden dat de hele bus blijft hangen wanneer een enkel apparaat op de bus stopt met werken. De stroom naar de bus kan worden gebruikt om de bus opnieuw te starten en de juiste werking te herstellen.
  • Omdat apparaten hun communicatiesnelheid kunnen instellen, kunnen langzamere operationele apparaten de werking van apparaten met een snellere snelheid vertragen.
  • I2C trekt meer kracht dan andere seriële communicatiebussen vanwege de open drain-topologie van de communicatielijnen.
  • De beperkingen van de I2C-bus beperken doorgaans het aantal apparaten op een bus tot een tiental apparaten.

toepassingen

De I2C-bus is een geweldige optie voor toepassingen die een lage kosten en eenvoudige implementatie vereisen in plaats van hoge snelheid. Het lezen van bepaalde geheugen-IC's, toegang tot DAC's en ADC's, het lezen van sensoren, het verzenden en besturen van gebruikersgerichte acties, het lezen van hardwaresensoren en het communiceren met meerdere microcontrollers zijn veelvoorkomende toepassingen van het I2C-communicatieprotocol.