Der I²C-Bus des Raspberry Pi (Teil 1)

© Konstantin Sutyagin, 123RF

I-Quadrat-C

Für umfangreiche Projekte genügen die Anschlussmöglichkeiten der RasPI-GPIO-Schnittstelle oft nicht. Hier bietet der I

README

Viele RasPi-Projekte nutzen zur Kommunikation mit Aktoren oder Sensoren die GPIO-Schnittstelle. Doch diese ist in ihren Möglichkeiten limitiert. Mit dem I2C-Bus steht als Alternative ein industriell standardisierter Datenbus zur Verfügung, der sich mit den richtigen Tools leicht in eigene Projekte einbinden lässt. In dieser Artikelreihe erläutern wir den I2C-Bus des RasPi Schritt für Schritt.

Die leistungsfähige GPIO-Schnittstelle des Raspberry Pi nutzen Bastler für viele interessante Hardware-Projekte. Allerdings lassen sich einige Dinge via GPIO nicht oder nur in begrenztem Umfang umsetzen. Dazu gehören etwa analoge Ein- und Ausgaben, die die GPIO generell nicht unterstützt.

Auch das Vorhandensein von nur einem PWM-Ausgang erweist sich schnell als Bremsklotz. Software-Lösungen wie etwa ServoBlaster [1] bieten dafür zwar schnelle Abhilfe, doch auch diese sind nur von begrenztem Nutzen. Benötigen Sie für ein Projekt wirklich viele digitale IOs, dann stoßen Sie schnell an die Grenzen des Möglichen.

Eine einfache und professionelle Lösung für umfangreiche Projekte stellt der I2C-Bus dar. Auf der Platine des Raspberry Pi finden Sie zwei entsprechende Schnittstellen. In den folgenden Teilen dieser Artikelreihe beschäftigen wir uns mit verschiedenen Halbleitern, die alle eine Gemeinsamkeit aufweisen: eine Schnittstelle zum I2C-Bus.

Allgemeines

Beim I2C-Bus – man spricht das I-Quadrat-C aus – handelt es sich um einen seriellen Master-Slave-Bus, der sich für die Kommunikation über kurze Distanzen eignet, also hauptsächlich innerhalb von Platinen oder Geräten. Die Technik stammt aus den frühen 1980er-Jahren und wurde ursprünglich von Philips (heute NXP Semiconductors) für den Einsatz in der Unterhaltungselektronik entwickelt.

Die Datenübertragung erfolgt synchron über 2 Leitungen: eine Datenleitung (SDA) und eine Taktleitung (SCL). Beide Leitungen ziehen Pullup-Widerstände auf ein positives Potenzial. Ein Bus-Master gibt Takt und Betriebsmodus vor und initiiert die byteweise erfolgende Kommunikation. Die Übertragungsgeschwindigkeit des Busses beträgt zwischen 100 kbit/s bidirektional im Standard-Mode und bis zu 5 MBit/s unidirektional im Ultra-Fast-Mode (siehe Tabelle "I2C-Taktraten").

I2C-Taktraten

Modus

Maximale Übertragungsrate

Richtung

Standard-Mode

100 kbit/s

bidirektional

Fast-Mode

400 kbit/s

bidirektional

Fast-Mode Plus

1 MBit/s

bidirektional

High-Speed-Mode

3,4 MBit/s

bidirektional

Ultra-Fast-Mode

5,0 MBit/s

unidirektional

Der I2C-Bus arbeitet mit einem Adressbereich von 7 Bit. Dadurch ergeben sich bis zu 128 Adressen, von denen allerdings 16 für Sonderaufgaben reserviert bleiben – es gibt also 112 freie Adressen. Das achte Bit teilt dem Slave mit, ob er Daten vom Master empfangen soll oder Daten an den Master zu übertragen hat.

Üblicherweise lassen sich nur die unteren Bits der Adressen an den Slaves frei wählen, die oberen Bits stehen fest. Die möglichen Adressen für einen Baustein entnehmen Sie am besten dem Datenblatt des fraglichen Produkts. Die Tabelle "I2C-Adressen" zeigt einige Beispiele zu den verschiedenen Adressbereichen.

I2C-Adressen

Typ

Funktion

Adresse

PCF8574

Port-Expander

0x20 - 0x27

PCF8574A*

Port-Expander

0x38  - 0x3F

PCF8591

A/D- und D/A-Konverter

0x90 - 0x9F

PCF8583

Clock/Calendar

0xA0 - 0xA2

* Der Typ A unterscheidet sich nur durch den Adressraum vom Standard-PCF8574.

Benötigen Sie für ein größeres Projekt mehr als die 112 möglichen Adressen, dann sorgen Sie mit einem auf den primären I2C-Bus aufgesetzten Busmultiplexer für neue Adressierungsmöglichkeiten. Diesem speziellen Baustein widmen wir uns in einem der folgenden Teile dieser Reihe.

Aufgrund der ursprünglichen Konzeption, nur wenige Zentimeter überbrücken zu müssen, zeigt sich der I2C-Bus in der Praxis als sehr anfällig für Störungen. Es gibt allerdings verschiedene Möglichkeiten, die elektrischen Eigenschaften des I2C-Busses zu verbessern. Sie reichen vom Anpassen der Pullup-Widerstände bis zum Tunneln durch CAN-Bus-Treiber. In einigen der späteren Teile dieser Reihe setzen wir uns intensiver mit unterschiedlichen I2C-Bus-Treibern auseinander.

Testaufbau

Direkt auf der GPIO des Raspberry Pi finden Sie auch eine I2C Schnittstelle. Die Pins P1-03 (SDA_1) und P1-05 (SCL_1) besitzen sogar schon die benötigten Pullup-Widerstände (1,8 kOhm gegen +3,3 Volt). Eine zweite I2C-Schnittstelle erreichen Sie über den Verbinder P5, allerdings müssen Sie diese erst auf der Rückseite des Raspberry Pi auflöten. Die zweite Schnittstelle sprechen Sie über die Pins P5-3 (SDA_0) und P5-4 (SCL_0) an, es fehlen jedoch die vorbestückten Pullup-Widerstände.

Zum Testen schließen wir nun einen PCF8574-Mikrocontroller an den Bus an und betrachten anschließend die wichtigsten Grundfunktionen des I2C-Busses. Das Datenblatt des PCF8574 finden Sie im Internet [2]; der Schaltplan unseres simplen Testaufbaus (Abbildung 1) mit vier LEDs und Tastern liegt als ic2_test.eps sowie i2c_test.sch (für Gschem aus dem gEDA-Projekt [3]) auf der Heft-DVD bei.

Abbildung 1: Der Testaufbau mit einem PCF8574-Mikrocontroller und vier LEDs mit jeweils einem eigenen Taster.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

08/2019
Smarte Hacks

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Immer der Reihe nach

    Mit einer einfachen Schaltung testen Sie Bausteine, die über den SPI-Bus miteinander kommunizieren.

  • Einzigartig

    Eine MAC-Adresse ermöglicht die Kommunikation im Netzwerk. Der 24AA02E48 liefert sie für Setups, die aus grundlegenden Komponenten bestehen.

  • Steinkuchen

    Der Raspberry Pi hat viele Fans, doch nicht ohne Grund sehnen sich viele Anwender nach einem RasPi 4. Der Rock Pi 4 übertrumpft den RasPi 3 in Sachen Leistung um Längen und schlägt sich auch in der Praxis gut.

  • Kerngeschäft

    Der Einstieg in die Welt der Mikrocontroller fällt nicht ganz leicht. Mit dem Nucleo F401RE haben Sie jedoch ein Entwicklerboard samt abgestimmter Entwicklungsumgebung an der Hand.

  • Himbeer-Geräte

    Mit Maus und Tastatur im weiß-roten Raspberry-Look macht die Raspberry Pi Foundation das eigene Angebot an Peripheriegeräten für den Mini-Rechner komplett.

  • Unter Kontrolle

    PiCockpit ist eine speziell auf den RasPi zugeschnittene Online-Monitoring-Lösung. Wir werfen einen ersten Blick auf den brandneuen und in Ausbau befindlichen kostenlosen Dienst.

  • Ins rechte Licht gesetzt

    Selbst ohne eigenen Garten holen Sie sich Pflanzen mithilfe von LEDs in jeden Raum und sehen ihnen mit dem RasPi beim Wachsen zu.

  • Helligkeit nach Maß

    Wer bei wechselnden Lichtverhältnissen nicht ständig die Beleuchtung manuell nachregeln möchte, der spannt dafür einen PiXtend ein.

  • Geschrumpft

    Kleine Bildschirme gibt es zwar viele, aber der Support von Raspbian ist überraschend schlecht. Mit ein paar Tricks erzielen Sie trotzdem ein optimales Ergebnis.

  • Brüllwürfel

    Kompakt-Stereoanlagen mit CD-Spieler und Kassettendeck sind inzwischen oft ein Fall für den Recyclinghof – oder für die digitale Wiederbelebung mit einem RasPi und etwas Geschick.