In den 1980er Jahren von Philips entwickelt, hat sich I2C (alternativ I2C geschrieben) zu einem der am häufigsten verwendeten seriellen Kommunikationsprotokolle in der Elektronik entwickelt. I2C erleichtert die Kommunikation zwischen elektronischen Komponenten oder integrierten Sch altkreisen, unabhängig davon, ob sich die Komponenten auf derselben Leiterplatte befinden oder mit einem Kabel verbunden sind.
Was ist das I2C-Protokoll?
I2C ist ein serielles Kommunikationsprotokoll, das nur zwei Signalleitungen benötigt. Es wurde für die Kommunikation zwischen Chips auf einer Leiterplatte (PCB) entwickelt. I2C wurde ursprünglich für 100-Kbps-Kommunikation entwickelt. Im Laufe der Jahre wurden jedoch schnellere Datenübertragungsmodi entwickelt, um Geschwindigkeiten von bis zu 3.4 Mbit.
Das Hauptmerkmal von I2C ist die Fähigkeit, viele Komponenten auf einem einzigen Kommunikationsbus mit nur zwei Drähten zu haben, was I2C perfekt für einfache Anwendungen macht. Das I2C-Protokoll wurde als offizieller Standard etabliert, der eine Abwärtskompatibilität zwischen I2C-Implementierungen ermöglicht.
I2C-Signale
Das I2C-Protokoll verwendet zwei bidirektionale Signalleitungen, um mit den Geräten auf dem Kommunikationsbus zu kommunizieren. Die beiden verwendeten Signale sind:
- Serielle Datenleitung (SDL)
- Serial Data Clock (SDC)
Der Grund dafür, dass I2C nur zwei Signale verwenden kann, um mit mehreren Peripheriegeräten zu kommunizieren, liegt darin, wie die Kommunikation entlang des Busses gehandhabt wird. Jede I2C-Kommunikation beginnt mit einer 7-Bit- (oder 10-Bit-) Adresse, die die Adresse des Peripheriegeräts aufruft.
Dadurch können mehrere Geräte auf dem I2C-Bus die Rolle des primären Geräts spielen, wie es die Anforderungen des Systems erfordern. Um Kommunikationskollisionen zu vermeiden, enthält das I2C-Protokoll Arbitrierungs- und Kollisionserkennungsfunktionen, die eine reibungslose Kommunikation entlang des Busses ermöglichen.
Vorteile von I2C
Als Kommunikationsprotokoll hat I2C folgende Vorteile:
- Flexible Datenübertragungsraten.
- Kommunikation über längere Distanzen als SPI.
- Jedes Gerät am Bus ist unabhängig adressierbar.
- Geräte haben eine einfache primäre/sekundäre Beziehung.
- Es benötigt nur zwei Signalleitungen.
- Es ist in der Lage, mehrere primäre Kommunikationen zu handhaben, indem es Arbitration und Kommunikationskollisionserkennung bereitstellt.
Einschränkungen von I2C
Bei all diesen Vorteilen hat I2C auch einige Einschränkungen, die möglicherweise umgangen werden müssen. Zu den wichtigsten I2C-Einschränkungen gehören:
- Da nur 7-Bit (oder 10-Bit) für die Geräteadressierung zur Verfügung stehen, können sich Geräte auf demselben Bus dieselbe Adresse teilen. Einige Geräte können die letzten paar Bits der Adresse konfigurieren, dies führt jedoch zu einer Beschränkung der Geräte auf demselben Bus.
- Nur wenige begrenzte Kommunikationsgeschwindigkeiten sind verfügbar und viele Geräte unterstützen die Übertragung mit höheren Geschwindigkeiten nicht. Teilweise Unterstützung für jede Geschwindigkeit auf dem Bus ist erforderlich, um zu verhindern, dass langsamere Geräte Teilübertragungen abfangen, die zu Betriebsstörungen führen können.
- Die gemeinsame Natur des I2C-Busses kann dazu führen, dass der gesamte Bus hängen bleibt, wenn ein einzelnes Gerät im Bus den Betrieb einstellt. Durch Aus- und Wiedereinsch alten der Stromversorgung zum Bus kann der ordnungsgemäße Betrieb wiederhergestellt werden.
- Da Geräte ihre eigene Kommunikationsgeschwindigkeit festlegen, können langsamer arbeitende Geräte den Betrieb schnellerer Geräte verzögern.
- I2C verbraucht aufgrund der Open-Drain-Topologie der Kommunikationsleitungen mehr Strom als andere serielle Kommunikationsbusse.
- Die Einschränkungen des I2C-Busses begrenzen die Anzahl der Geräte in einem Bus normalerweise auf etwa ein Dutzend.
I2C-Anwendungen
I2C ist eine großartige Option für Anwendungen, die statt hoher Geschwindigkeit niedrige Kosten und eine einfache Implementierung erfordern. Zu den üblichen Verwendungen des I2C-Kommunikationsprotokolls gehören beispielsweise:
- Auslesen bestimmter Speicher-ICs.
- Zugriff auf DACs und ADCs.
- Übermitteln und Steuern von benutzergesteuerten Aktionen.
- Lesen von Hardwaresensoren.
- Kommunikation mit mehreren Mikrocontrollern.