Herunterladen Inhalt Inhalt Diese Seite drucken

Bild 15: I2C Start- Und Stoppbedingung (Quelle: Datasheet Mcp23008) - Texas Instruments Msp430 Benutzerhandbuch

Education system v3.3
Vorschau ausblenden Andere Handbücher für MSP430:
Inhaltsverzeichnis
Das I2C-Protokoll ist relativ einfach und funktioniert bei einer einfachen Master–Slave-
Kommunikation wie folgt:
Der Master(MSP430) sendet ein Startzeichen (definierter Pegelwechsel auf der Daten- und
Takt-Leitung)
Der Master sendet anschließend die Slave-Adresse, hier die vom Portextender. Die Adresse ist
eindeutig und vom Hersteller vorgegeben, sie kann meist durch Adress-Pins (A0, A1, A2) am
IC, um einige Bit hardwareseitig geändert werden.
Der Slave bestätigt seine eigene Adresse durch ein „ACK" und der Master kann Daten senden
oder anfordern (abhängig vom R/W-Bit in der Slave-Adresse). Sollte sich kein IC auf dem Bus
angesprochen fühlen, dann bleibt das „ACK" aus und der MSP430 meldet ein „NACK", der
über einen Interrupt abgefangen werden kann.
Ist die Übertragung abgeschlossen sendet der Master ein Stoppzeichen (definierter
Pegelwechsel auf der Daten- und Takt-Leitung) und der BUS ist für die nächste
Kommunikation frei.
Daraus resultiert, dass für jede Kommunikation immer ein Startzeichen, ein Adressbyte, ein oder
mehrere Datenbytes und ein Stoppzeichen verwendet werden müssen (Siehe dazu Bild 15: I2C Start-
und Stoppbedingung (Quelle: Datasheet MCP23008)).

Bild 15: I2C Start- und Stoppbedingung (Quelle: Datasheet MCP23008)

Die Adresse des Protextenders lautet in Hex 0x20h bzw. in Binär 0b0010 0000. Es ist wichtig zu
wissen, dass ein zu lesendes Byte auf den I2C-Bus mit einem R/W-Bit (0b0010 000x, hier als „X"
markiert) in der Slave-Adresse angezeigt wird. Das bedeutet allerdings auch, dass dieses Bit
irgendwer mal setzen muss (Bild 16: Aufbau Slave-Adresse (Quelle: Datasheet MCP23008).
Dazu gibt es zwei Methoden.
Einmal kann der Benutzer einfach zwei Adressen definieren und diese entsprechend senden. Zum
Lesen wäre dass in unserem Beispiel eine 0x21h bzw. 0b0010 0001 und zum Schreiben eine 0x20h
bzw. 0b0010 0000. Anschließend wird beim Schreiben ein Datenbyte gesendet und beim Lesen
entsprechende Takte auf der Taktleitung ausgegeben um ein Byte empfangen zu können, da nur der
Master die Taktleitung bedient.
Auf der Anderen Seite kann dass die I2C-Baugruppe übernehmen und dort einfach die Slave-Adresse
angeben, es muss aber immer angeben werden ob man lesen oder schreiben möchte und
anschließend einfach die entsprechenden Bytes in das Senderegister schreiben bzw. aus dem
Empfangsregister lesen.
Handbuch MSP430 Education System
Literatur- und Quellenverzeichnis
Seite 28

Quicklinks ausblenden:

Inhaltsverzeichnis
loading

Inhaltsverzeichnis