Site hosted by Angelfire.com: Build your free website today!

Grundlagen



Der I²C Bus


Der I²C (sprich:"I quadrat C Bus") oder "Inter IC Bus" wurde von Philips entwickwelt und diente ursprünglich der Vernetzung von IC's in Kosumartikeln, wie Videorekordern ö.ä. Er ist aber auch bei Hobbyelektronikern sehr beliebt. Inzwischen gibt es eine breite Auswahl von IC's welche über ein I²C Interface verfügen. Die Tatsache das der Bus, ausser Masse, nur 2 Leitungen benötigt erlaubt eine unkomplizierte und platzsparende Vernetzung Kommunikation zwischen einen Microcontroller und der Peripherie.
Die Zeichnung verdeutlicht den grundsätzlichen Hardwareaufbau des I²C Busses:

Der I2C Bus besitzt, wie schon gesagt, 2 Leitungen. Eine Datenleitung und eine Taktleitung. Am Bus gibt es zumeinst einen Master (es können aber auch mehrere sein) und mehrere Slaves.

Der Grundsätzliche Abflauf einer Datenkommunikation am I²C Bus ist wie folgt:

Ruhezustand
Master: Startbedingung
Master: Übertragung der Slave Adresse (RW Bit(LSB)) LOW)
Angesprochener Slave: ACK Zustand
Master: Sendet Byte(s)
Slave: ACK Zustand / NoAck Zustand
. . .
Master: Startbedingung
Master: Übertragung der Slave Adresse (RW Bit(LSB)) HIGH)
Slave: Sendet Byte(s)
Master: ACK Zustand/NoAck Zustand
. . .
Master: Stopbedingung

So könnte eine Kommunikation aussehen. Muss aber nicht. Hier werden jetzt die einzelnen Schritte erklärt.


Der Ruhezustand des Buses

Der definierte Ruhezustand des I²C Bus liegt dann vor wenn sowohl SDA als auch SCL auf HIGH liegen. Deshalb benötigt der Bus ein Paar 10k PullUp Wiederstände. Diese besitzt meist der Master, sie können aber an jedem Punkt des Buses vorhanden sein.

Die Startbedingung

Am Anfang der Kommunikation muss der Master die Startbedingung herbeiführen. Dazu zieht er zuerst die SDA Leitung auf LOW und dann die SCL Leitung.

Die Slave Adresse

Jeder Slave am Bus, besitzt eine eindeutige 7-Bit Adresse. Das niederwertigste Bit (LSB) ist das RW Bit. Dieses Signalisiert dem Slave ob der Master Daten schreiben oder lesen will. Das erste übertragene Byte, nach der Startbedingung, ist IMMER die Slave Adresse.

Daten Senden

Um Daten (gilt auch für die Adresse) über den I²C Bus zu übertragen legt der jeweilige Sender zuerst das höherwertigste Bit (MSB) auf die SDA Leitung und gibt anschließend eine positiven Impulas auf die Taktleitung (SCL). Dieser Vorgang wiederholt sich bis zum niederwertigsten Bit (LSB).

Acknowlede Zustand

Nach einer Datenübertragung (8-Bit) läßt der Sender die Datenleitung los und gibt einen 9. Taktimpuls auf SCL. Der Empfänger zieht dann die SDA Leitung auf LOW um seine Bereitschaft zu signalisieren. Dabei läßt der jeweilige Empfänger dieses Ackknowledge Signal aus (SDA auf HI), wenn dieser anzeigen möchte, das kein weiteres Byte mehr empfangen werden soll (NoAck Zustand).

Die Stopbedingung

Um die Stopbedingung, und somit das Ende er aktuellen Datenkommunikation anzuzeigen, zieht der Master zuerst die SCL Leitung, und dann die SDA Leitung auf HIGH Pegel. Da normalerweise Änderung an SDA nur durchgeführt werden wenn SCL LOW ist, ist die Stopbedingung für alle Busteilnehmer erkennbar.

Wichtig:

Der Master und die Slaves können beide Sender oder Empfänger sein, aber der Takt kommt IMMER vom Master. Dieser allein bestimmt die Busgeschwindigkeit. Normalerweise darf diese bis zu 100KHz betragen.



Software dazu: I2C Bus für die C-Control 1
Hersteller /Infos : Philips