www.mikrocontroller.net

I2C

I²C ist ein synchroner serieller Zweidraht-Bus (eine Daten- und eine Taktleitung), der für die Kommunikation zwischen ICs über kleine Distanzen geeignet ist. Entwickelt wurde er Anfang der 80er Jahre von Philips. Gesprochen "I quadrat C" steht für IIC = Inter IC Bus. Aus Lizenzgründen heißt der I²C Bus bei manchen Herstellern auch TWI, two wire interface.

Inhaltsverzeichnis

[Bearbeiten] I2C

In einem I²C-Bus gibt es mindestens einen Master und bis zu 128 Slaves. Ein I²C-Bus mit mehreren Mastern wird als "Multi-Master-Bus" bezeichnet. Der (oder die) Master sprechen die Slaves an; ein Slave kann NIE selbstständig Daten senden. Dazu übernimmt der Master, der Daten senden oder empfangen möchte, den Bus und gibt die (7-bit- bzw. 10-bit-)Adresse des Slaves aus, mit dem er kommunizieren möchte. Nach der Adresse teilt der Master dem entsprechenden Slave mit, ob er Daten senden oder empfangen möchte. Danach werden die eigentlichen Daten (entweder vom Master oder Slave) auf den Bus gelegt. Hat der Master den Lese- oder Schreibvorgang abgeschlossen, so gibt er den Bus wieder frei. Sofern mehrere Master vorhanden sind, stellt ein Protokoll sicher, dass sich diese nicht gegenseitig stören.

[Bearbeiten] I2C - Übertragungsraten

Die Übertragungsrate beträgt beim Standard mode bis zu 100 kbit/s, beim Fast mode bis zu 400 kbit/s und beim High-speed mode bis zu 3,4 MBit/s. Falls die Taktrate für einen Slave zu hoch ist, kann er die Clock-Leitung auf Null ziehen und die Übertragung damit verlangsamen. Dies ist auf Bit- wie auf Byte-Ebene möglich; ersteres allerdings nicht im High-speed mode. Um längere Übertragungswege zu realisieren, kann man die Taktrate fast beliebig vermindern (einige Bausteine erzeugen aber irgendwann ein Time-Out). Mit einer Taktfrequenz von nur 5 kbit/s können dann durchaus mehrere Meter überbrückt werden.

Im PC wird ein dem I²C-Bus sehr ähnliches System benutzt, um z. B. die Daten eines SDRAM-Modules auszulesen. Dieser nennt sich SMBus (System Management Bus).

gemessene I2C Takt Erfahrungen mit den Atmegas: 16,000MHz - schafft sauber bis zu 700Khz 18,432MHz - schafft sauber bis zu 950Khz

Bedingungen waren die schlechtesten...

  • Streckenlänge 50cm, 6 adriges Spiralkabel (Frei schwingend verbaut in einem Rennwagen als Verbindung zwischen Lenkraddiplay und Amaturenbrett
  • nicht geschirmt andere Leitungen 12, GND und 5V PWM für LED Helligkeit
  • Umgebungs Bedingungen grausam, Fahrten im Regen, Schnee oder

glühender Sonne bei gefühlten 100C° ;-) auf der Rennstrecke. --> Probleme gab es keine...

[Bearbeiten] Bausteine

Neben Mikrocontrollern gibt es eine Reihe von Peripheriebausteinen, die per I²C angeschlossen werden können. Eine gute Anlaufstelle bei der Suche ist die unten angegebene Seite des "Erfinders" Philips, heute als NXP bekannt.

  • I/O-Portexpander
    • PCF8574
    • MCP23008 (8-bit) von Microchip
    • MCP23017 (16-bit) von Microchip
  • I2C MUX, zum Anschluss von ICs mit gleicher, fester Adresse

[Bearbeiten] Galvanische Trennung

[Bearbeiten] Siehe auch

[Bearbeiten] Weblinks

[Bearbeiten] Bibliotheken

[Bearbeiten] I²C-Interface

[Bearbeiten] I²C-Monitor

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net