Tam Hanna Selbstständig

Um zu verstehen, dass man mit Android Things keine Rakete ins Ziel bringen wird, genügt ein Blick in die Modulationsebene. Das Betriebssystem brilliert nur dann, wenn wir Zeitkritisches an einen hardwaregesteuerten Bus auslagern.

Um zu verstehen, dass man mit Android Things keine Rakete ins Ziel bringen wird, genügt ein Blick in die Modulationsebene. Das Betriebssystem brilliert nur dann, wenn wir Zeitkritisches an einen hardwaregesteuerten Bus auslagern.

Android Things ist in unserem Fall auf das Entgegennehmen der Informationen beschränkt – eine wenig zeitkritische Aufgabe. Im letzten Teil der Serie hatten wir den SPI-Bus vorgestellt und ein kleines Display verwendet. Diese Vorgehensweise war sinnvoll, weil das Display nicht unerheblich Bandbreite konsumiert – die farbige Variante ist übrigens noch in der Post.

In der Praxis gibt es immer wieder Situationen, in denen es auf Bandbreite nicht ankommt und man sich stattdessen freut, wenn eine Vielzahl verschiedener Sensoren an ein und demselben Prozessrechner hängt. An diesem Punkt schlägt die Stunde des als I²C bezeichneten Busses, den man in der Literatur aufgrund von Patentstreitigkeiten mit Philips auch unter dem Namen Two Wire Interface (TWI) findet. Damit ist die Rolle des Busses eigentlich auch schon beschrieben: Zwei Leitungen (plus die prinzipiell nicht mitgezählte Masse) verbinden Sensoren nach dem in Abbildung 1 gezeigten Schema mit dem Prozessrechner.

Abb. 1: Der Sinn des Begriffs Two Wire Interface erschließt sich bei einem Blick auf dieses Diagramm (Bildquelle: I²C-Spezifikation)

Abb. 1: Der Sinn des Begriffs Two Wire Interface erschließt sich bei einem Blick auf dieses Diagramm (Bildquelle: I²C-Spezifikation)

Die beiden oben eingezeichneten Widerstände Rp, in der Fachsprache als Pull-ups bezeichnet, haben die Aufgabe, die als SCL (Serial Clock) und SDA (Serial Data) bezeichneten Leitungen leicht in Richtung der Versorgungsspannung zu ziehen. Wer kommunizieren möchte, zieht die Leitungen über einen Transistor auf Masse. Das Hochlimitieren zur Versorgungsspannung erfolgt in I²C prinzipiell selbsttätig.

Im nächsten Schritt wollen wir I²C auf logischer Ebene betrachten (Abb. 2). Kanal 1 zeigt hierbei die vom als Master bezeichneten Gerät generierte „Arbeitstaktrate“. Ein I²C-System arbeitet immer mit der Frequenz, die der Master am Pin SCL ausgibt. In der Literatur sind hier zwei Betriebsmodi bekannt: erstens der Standardmodus mit 100 KBit/s, zweitens der Schnellmodus mit 400 KBit/s. Die Spezifikation kennt zudem Fast Mode mit 1 MBit/s und Highspeed mit 3,2 MBit/s – diese Sondermodi sind allerdings nicht universell implementiert. Viele Bauteile unterstützen auch schnellere, langsamere oder dazwischenliegende Werte – eine Situation, die Sie in der Praxis ausprobieren müssen.

Abb. 2: I²C-Bus plus LeCroy 9354 AM = futuristisches Schirmbild

Abb. 2: I²C-Bus plus LeCroy 9354 AM = futuristisches Schirmbild

Die eigentliche Kommunikation erfolgt über die Leitung SDA. Interessant ist in diesem Zusammenhang die 7 Bit lange Adresse jedes Teils; es handelt sich dabei um eine im gesamten Bus einzigartige numerische ID, die dem Master das Ansprechen einzelner Zielgeräte erlaubt.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 7.18 - "Coding Culture"

Alle Infos zum Heft
579844001I²C-Bus in Android Things
X
- Gib Deinen Standort ein -
- or -