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.
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).









