Aus Raspberry Pi Geek 06/2021

I2C-Workshop (Teil 35): Der zweite I2C-Port des RasPi

© Iofoto, Fotolia

Doppelt gemoppelt

Martin Mohr

Viele Anwender wissen nicht, dass der RasPi ab Version 2 zwei I<+>2<+>C-Ports besitzt. Wir zeigen, wie Sie diese nutzen.

Der Raspberry Pi besaß schon immer zwei I2C-Ports. Bei den ersten Modellen musste man noch einen zusätzlichen Header auflöten, um I2C zu verwenden. Seit dem RasPi 2 führen die Platinen beide I2C-Ports auf dem 40-poligen Header heraus. Den Port 0 finden Sie auf dem Header an den Pins 27 (SDA0) und 28 (SCL0). Der viel bekanntere Port 1 liegt auf den Pins 3 (SDA1) und 5 (SCL1) an.

Testaufbau

Für unseren Versuch verwenden wir einen RasPi 2. Die SD-Karte bereiten wir mithilfe des Tools RPi-Imager [1] vor, das auf der Webseite des Raspberry-Pi-Projekts bereitsteht. Da die folgenden Versuche keine grafische Oberfläche erfordern, kommt das Image Raspberry Pi OS Lite zum Einsatz. Nach dem Booten des Pi bringen die Kommandos aus Listing 1 das RasPi OS auf den aktuellen Stand und installieren die benötigten I2C-Tools.

Listing 1

I<+>2<+>C-Tools installieren

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install i2c-tools

Mit dem Kommando i2cdetect -l prüfen Sie das System auf aktive I2C-Schnittstellen. Wie nicht anders zu erwarten, zeigt das Kommando keine an. Um die Schnittstellen nach dem Aktivieren zu testen, schließen Sie an jede einen 24AA025E48-IC an. Um welchen Baustein es sich dabei handelt, erklärt der Kasten “EEPROM”.

EEPROM

Beim 24AA025E48 handelt es sich um einen EEPROM-Speicherchip mit einer Speicherkapazität von 2048 Bit (128 Byte) – auf den ersten Blick nichts besonderes. Zusätzlich enthält er aber noch eine weltweit eindeutige, 6 Byte lange ID, was jeden dieser Bausteine einzigartig macht. Üblicherweise stellen die Chips MAC-Adressen für Netzwerk-Interfaces bereit. Theoretisch lassen sie sich aber überall dort einsetzen, wo man eine weltweit eindeutige Kennung benötigt. Neben dem 24AA025E48 gibt es noch den 24AA025E464, der eine eindeutige ID mit 8 Byte bereitstellt. Die Speicheradressen 0x00h bis 0x7Fh dürfen Sie frei verwenden, ab 0x80h beginnt ein Read-only-Bereich, dessen letzte Bytes die ID enthalten. Mehr Informationen über den IC finden Sie im Datenblatt [2].

Dem Schaltplan (Abbildung 1) können Sie entnehmen, welche Verbindungen Sie zwischen den ICs und dem RasPi benötigen. Um Ihnen den Aufbau zu erleichtern, zeigt Abbildung 2 das Pinout des 24AA025E48. In Abbildung 3 sehen Sie den kompletten Testaufbau.

Abbildung 1: F&uuml;r das vorliegende Projekt schlie&szlig;en Sie den IC wie hier gezeigt am RasPi an.

Abbildung 1: Für das vorliegende Projekt schließen Sie den IC wie hier gezeigt am RasPi an.

Abbildung 2: Das Pinout des EEPROM-ICs 24AA025E48.

Abbildung 2: Das Pinout des EEPROM-ICs 24AA025E48.

Abbildung 3: Der Testaufbau mit zwei 24AA025E48-EEPROMs.

Abbildung 3: Der Testaufbau mit zwei 24AA025E48-EEPROMs.

Erster Test

Zunächst aktivieren Sie wie gewohnt mit dem Tool raspi-config die I2C-1-Schnittstelle unter dem Punkt 3 Interface Options | P5 I2 | Yes. Anschließend geben Sie über das Kommando i2cdetect -l die aktiven I2C-Schnittstellen aus – und siehe da: Die Schnittstelle i2c-1 erscheint. Das Kommando i2cdetect -y 1 zeigt an, ob es Geräte am Bus gibt (Listing 2). Wie die Ausgabe zeigt, meldet sich der 24AA025E48 unter der Adresse 0x50h.

Listing 2

Gerätesuche auf dem I<+>2<+>C-Bus 1

$ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Nun geht es daran, die zweite I2C-Schnittstelle zu aktivieren – mit Raspi-config klappt das nicht. Stattdessen bearbeiten Sie als Nutzer root die Datei /boot/config.txt mit einem Texteditor und fügen an deren Ende die Zeile dtparam=i2c_vc=on ein. Anschließend starten Sie den Raspberry Pi via sudo reboot neu.

Danach liefert das Kommando i2cdetect -l erwartungsgemäß die I2C-Schnittstellen 0 und 1. Darüber hinaus tauchen nun auch die I2C-Schnittstellen 10 und 11 auf, die das System normalerweise für den VideoCore-Prozessor reserviert. Sie sind aber aktuell nicht im Einsatz und spielen für das Projekt keine Rolle. Jetzt lässt sich aber überprüfen, ob die I2C-Schnittstelle 0 arbeitet (Listing 3).

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben