I2C

I2C

I²C (für Inter-Integrated Circuit, meistens gesprochen als I-Quadrat-C oder englisch I-squared-C) ist ein von Philips Semiconductors entwickelter serieller Datenbus.

Er wird hauptsächlich geräteintern für die Kommunikation zwischen verschiedenen Schaltungsteilen mit geringer Übertragungsgeschwindigkeit benutzt, z. B. zwischen einem Controller und Peripherie-ICs. Das ursprüngliche System wurde von Philips (jetzt NXP Semiconductors) in den frühen 1980er Jahren entwickelt, um verschiedene Chips in Fernsehgeräten einfach steuern zu können.

Einige Hersteller verwenden die Bezeichnung TWI (Two-Wire Interface), da I²C ein eingetragenes Markenzeichen von Philips Semiconductors ist. Technisch sind beide Systeme identisch.

Inhaltsverzeichnis

Geschichte

1992 wurde die erste Spezifikation 1.0 veröffentlicht. Diese fügte dem ursprünglichen Standard mit 100 kbit/s einen neuen „schnellen“ Modus mit 400 kbit/s hinzu und erweiterte den Adressraum um einen 10 Bit-Modus, sodass statt der ursprünglichen 112 Knoten seitdem bis zu 1136 unterstützt werden. Version 2.0 aus dem Jahr 1998 fügte einen „Hochgeschwindigkeits-Modus“ mit max. 3,4 Mbit/s hinzu, wobei die Strom- und Spannungsanforderungen in diesem Modus gesenkt wurden. Die Version 2.1 von 2000 enthält nur kleinere Aktualisierungen gegenüber 2.0. Aktuell gültig ist die Version 3.0 von 2007, die einen „extra schnellen“ Modus (Fast-mode Plus) mit bis zu 1 Mbit/s einführt, der im Gegensatz zum „Hochgeschwindigkeits-Modus“ dasselbe Protokoll verwendet wie die 100 kbit/s- und 400 kbit/s-Modi.

Definition

I²C ist als Master-Slave-Bus konzipiert. Der Master sendet und ein Slave reagiert darauf. Mehrere Master sind möglich (Multimaster-Mode). Die Buszuteilung (Arbitrierung) ist dabei per Spezifikation geregelt.

Elektrische Definition

I²C-Bus

Zwei Geräte sind im Diagramm rechts eingezeichnet. I²C benötigt zwei Signalleitungen: Takt (engl. serial clock line, SCL) und Datenleitung (engl. serial data line, SDA). Die Leitungen für Versorgungsspannung U0 und Masse liegen im Diagramm oben und unten. Geräte werden mittels einer Wired-AND-Verschaltung an SDA und SCL am Bus angeschlossen. Die Pull-Up-Widerstände RP an der Takt- und Datenleitung passen den High-Pegel an die Höhe der Versorgungsspannung an. Er soll mindestens 0,7U0 betragen. Der Low-Pegel soll im Bereich −0,5 V bis 0,3U0 liegen. Die Serienwiderstände RS an den Eingängen der Geräte sind optional und werden als Schutzwiderstände verwendet.

Takt und Zustände des Busses

Der Bustakt wird immer vom Master ausgegeben. Für die verschiedenen Modi ist jeweils ein maximal erlaubter Bustakt vorgegeben. Es können aber auch beliebig langsamere Taktraten verwendet werden, falls diese vom Master-Interface unterstützt werden. Die folgende Tabelle listet die maximal erlaubten Taktraten auf.

Modus maximale Taktrate
Standard Mode 100 kHz
Fast Mode 400 kHz
Fast Mode Plus 1 MHz
High Speed Mode 3,4 MHz

Wenn der Slave mehr Zeit benötigt, als durch den Takt des Masters vorgegeben, kann er zwischen der Übertragung einzelner Bytes den Clock auf low halten (clock stretching) und so den Master bremsen.

Daten (Einzelbits) sind nur gültig, wenn sich ihr logischer Pegel während einer Clock-High-Phase nicht ändert. Ausnahmen davon sind das Start, Stop und Repeated Start Signal. Das Start Signal ist eine fallende Flanke auf SDA während SCL high ist. Und das Stop Signal ist eine steigende Flanke auf SDA während SCL high ist. Repeated Start sieht genauso aus wie das Start Signal.

Eine Dateneinheit besteht aus 8 Daten/Adress Bits (1 Byte) und einem ACK Bit. Dieses Bestätigungsbit wird als ACK definiert durch einen Low Pegel während der neunten Takt-High-Phase und als NAK (für engl. Not Acknowledge) durch einen High-Pegel.

Adressierung

Eine Standard-I²C-Adresse ist das Erste vom Master gesendete Byte, wobei die ersten sieben Bit die eigentliche Adresse darstellen und das achte Bit (R/W-Bit) die Lese- oder Schreibrichtung festlegt. I²C nutzt daher einen Adressraum von 7 Bit, was bis zu 112 Knoten auf einem Bus erlaubt (16 der 128 möglichen Adressen sind für Sonderzwecke reserviert).

Jedes I²C-fähige IC hat eine festgelegte Adresse, von der in der Regel die untersten drei Bits (Subadresse genannt) über drei Steuerpins festgelegt werden. Es können also bis zu acht gleichartige ICs an einem I²C-Bus betrieben werden.

Wegen Adressknappheit wurde später eine 10 Bit-Adressierung eingeführt. Sie ist abwärtskompatibel zum 7 bit-Standard durch Nutzung von 4 der 16 reservierten Adressen. Beide Adressierungsarten sind gleichzeitig verwendbar, was bis zu 1136 Knoten auf einem Bus erlaubt.

Übertragungsprotokoll

Der Beginn einer Übertragung wird mit dem Start Signal vom Master angezeigt, dann folgt die Adresse. Diese wird durch das ACK-Bit vom entsprechenden Slave bestätigt. Abhängig vom R/W-Bit werden nun Daten Byte-weise geschrieben (Daten an Slave) oder gelesen (Daten vom Slave). Das ACK beim Schreiben wird vom Slave gesendet und beim Lesen vom Master. Das letzte Byte eines Lesezugriffs wird vom Master mit einem NAK quittiert, um das Ende der Übertragung anzuzeigen. Eine Übertragung wird durch das Stop-Signal beendet. Oder es wird ein Repeated Start am Beginn einer erneuten Übertragung gesendet, ohne die vorhergehende Übertragung mit einem Stop-Signal zu beenden.

Alle Bytes werden hierbei „Most Significant Bit First“ übertragen.

Für den High Speed Mode wird zuerst im Fast oder Standard Mode ein Master Code geschickt, bevor auf die erhöhte Frequenz umgeschaltet wird.

Der I²C-Bus ist von der Definition her recht einfach, aber auch störanfällig. Diese Tatsache schränkt die Verwendung auf störungsarme Anwendungsbereiche ein, wo weder mit Übersprechen, Rauschen, EMV-Problemen, noch mit Kontaktproblemen (Stecker, Buchsen) zu rechnen ist.

Verwendung

Eine besondere Stärke von I²C ist die Tatsache, dass ein Mikrocontroller ein ganzes Netzwerk von Chips mit nur zwei I/O-Pins und einfacher Software kontrollieren kann.

Busse dieses Typs kamen auf, als die Ingenieure bemerkten, dass ein Großteil der Kosten einer integrierten Schaltung und der verwendeten Leiterplatte von der Größe des Gehäuses und der Anzahl der Pins abhingen. Ein großes Gehäuse hat mehr Pins, braucht mehr Platz auf der Leiterplatte, wiegt mehr und hat mehr Verbindungen, die versagen können. All das steigert die Entwicklungs-, Produktions- und Testkosten und später auch die Betriebskosten, oder verringert den Komfort – Gewicht ist ein sehr wichtiger Faktor für mobile Geräte.

Obwohl langsamer als die meisten anderen Bus-Systeme, ist I²C durch seine niedrigen Kosten geradezu ideal für Peripherie-Geräte, die zwar unbedingt notwendig sind, aber nicht schnell sein müssen. Er wird häufig für Lautstärkeregler, Analog-Digital- oder Digital-Analog-Wandler, Echtzeituhren, kleine nichtflüchtige Speicher oder bidirektionale Schalter und Multiplexer eingesetzt. Auch elektronische Sensoren haben oft einen Analog-Digital-Wandler mit I²C-Schnittstelle integriert.

Während des Betriebes können Chips zum Bus hinzugefügt oder entfernt werden (Hot-Plugging).

I²C wurde auch als Basis für ACCESS.bus und VESAs Monitordaten-Interface (Display Data Channel, kurz DDC) benutzt. Der vom Prozessorhersteller Intel für die Kommunikation von Mainboard-Komponenten definierte SMBus ist dem I²C-Bus sehr ähnlich, die meisten ICs erlauben einen Betrieb an beiden Bussen.

Große Bedeutung hatte das I²C-Protokoll in der Vergangenheit im Chipkartenbereich. Die in Deutschland verwendete Krankenversichertenkarte ist eine I²C-Karte, d. h. unter den goldenen Kontaktflächen der Chipkarte befindet sich ein einfacher I²C-EEPROM, der vom Kartenleser über das I²C-Protokoll ausgelesen und beschrieben werden kann.

Ungeeignet ist der I²C-Bus zur Überbrückung größerer Entfernungen, wie es beispielsweise für Feldbusse typisch ist. Für Übertragungen zwischen verschiedenen Geräten mit getrennten Gehäusen ist der Bus nicht störsicher genug. Störungen sowohl des SDA- als auch des SCL-Signals resultieren in fehlerhaft übertragenen Daten, die vor allem bei Störungen auf SDA nicht einmal erkannt werden können.

Siehe auch

  • SMBus: Technisch sehr ähnlicher Bus, die Bauteile sind oftmals auch kompatibel zum I²C-Bus.
  • Serial Peripheral Interface: Ein weiterer serieller Bus, der aber CS-Leitungen für den Zugriff auf individuelle ICs benutzt, Totem-Pole-Ausgänge und getrennte Sende- und Empfangsleitungen aufweist.
  • 1-Wire: Eine serielle Schnittstelle, die mit einer Datenader auskommt, die sowohl als Stromversorgung als auch als Sende- und Empfangsleitung genutzt wird.
  • Display Data Channel (DDC): serieller Bus zur Kommunikation zwischen PC und Bildschirm, basierend auf dem I²C-Bus.

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • I2C —   [Abk. für Inter Integrated Circuit (Bus), dt. sinngemäß »Verbindung für integrierten Schaltkreis«], serielles, synchrones Übertragungsprotokoll sowie entsprechend ausgelegter Bus für ein Embedded System oder eine Chip Karte …   Universal-Lexikon

  • I2C — Logo I2C Un bus I2C (pour Inter Integrated Circuit) est un bus série et synchrone composé de trois fils : un signal de donnée (SDA) ; un signal d horloge (SCL) ; un signal de référence (masse). Le bus I2C fut développé par Philips… …   Wikipédia en Français

  • I2c Inc — Infobox Company company name = i2c, Inc. company company type = Private foundation = 1987 location = flagicon|USA Redwood Shores, CA, USA flagicon|PAK Lahore, PK (offshore office) key people = Amir Wain, CEO num employees = 250 industry =… …   Wikipedia

  • I2c — …   Википедия

  • I2C — …   Википедия

  • I2C — INTER INTEGRATED CIRCUIT (Academic & Science » Electronics) Inter Integrated Circuit (Computing » Drivers) …   Abbreviations dictionary

  • I2C — abbr. Inter Integrated Circuit (bus) …   United dictionary of abbreviations and acronyms

  • I²C — (Inter Integrated Circuit) is a multi master serial computer bus invented by Philips that is used to attach low speed peripherals to a motherboard, embedded system, or cellphone. The name is pronounced eye squared see or eye two see . As of… …   Wikipedia

  • I²C — (рус. ай ту си/и два цэ)  последовательная шина данных для связи интегральных схем, разработанная фирмой Philips в начале 1980 х как простая шина внутренней связи для создания управляющей электроники. Используется для соединения… …   Википедия

  • Simius — Développeur Semi Umons Dernière version 1.5 (09 2009) [ …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”