Metainformationen zur Seite

Mehrere I2C Busse an einem Raspberry

Nutzt ihr mehrere Plugins, die auf Hardware am I2C Bus des Raspberry zugreifen, macht es Sinn die Hardware auf separate Busse zu legen. Das verhindert Störungen und teilt zudem die Buslast auf. Der Raspberry bietet zwei "echte" I2C Busse und kann zudem per Emulation auch auf verschiedenen anderen GPIOs I2C Busse bereitstellen.

Standardmäßig ist am LoxBerry nur der Bus 1 (i2c-1) aktiviert. Der Bus 1 liegt an PIN 3 und 5, oft beschriftet mit SDA und SCL. Der zweite Bus liegt an PIN 27 und 28, oft beschriftet mit ID_SD und ID_SC.

GPIO Header, (C) https://www.raspberrypi-spy.co.uk/

Um den zweiten Bus an PIN 27 und 28 zu aktivieren, müsst ihr als Root die Datei /boot/config.txt auf der Konsole editieren. Loggt Euch dazu per SSH oder dem Terminal Widget auf euren LoxBerry ein und werdet zu Root. Anschließend editiert ihr die Datei z. B. mit dem Befehl nano /boot/config.txt. Alternativ könnt ihr die Datei auch mit Notepad++ auf dem Windowsrechner editieren. Dazu müsst ihr die SD-Karte in euren Kartenleser einlegen und die Datei auf der Boot-Partition der SD-Karte öffnen. Sucht den Abschnitt mit den I2C Befehlen und fügt folgende Zeile hinzu:

dtparam=i2c_vc=on

Nach einem Reboot steht Euch der zweite Bus 0 (i2c-0) an den PINs zur Verfügung. Kontrollieren könnt ihr das auf der Konsole mit dem Befehl i2cdetect -l. Der Befehl muss folgende Ausgabe enthalten (den Bus i2c-10 und i2c-11 könnt ihr ignorieren - das sind interne Busse des Raspberry).

i2c-1   i2c             bcm2835 (i2c@7e804000)                  I2C adapter
i2c-11  i2c             bcm2835 (i2c@7e205000)                  I2C adapter
i2c-0   i2c             i2c-11-mux (chan_id 0)                  I2C adapter
i2c-10  i2c             i2c-11-mux (chan_id 1)                  I2C adapter

Immer noch nicht genug?

Braucht ihr noch mehr separate Busse? Kein Problem! Dann könnt ihr einige weitere GPIO PINs zu i2C Bussen definieren. Wie das geht könnt ihr hier nachlesen: https://medium.com/cemac/creating-multiple-i2c-ports-on-a-raspberry-pi-e31ce72a3eb2