Einstellung der I2C-Bus-Baudrate beim Raspberry Pi (B, 2, 3, Zero W)

Mini-PC, Steuerzentrale und mehr sind hier Thema

Moderatoren: mane, flax

wuff
Mitglied
Beiträge: 19
Registriert: 26.05.2016, 17:51

Einstellung der I2C-Bus-Baudrate beim Raspberry Pi (B, 2, 3, Zero W)

Beitragvon wuff » 01.07.2017, 03:04

Der I2C-Bus (oder SMB) des Raspberry Pi bietet sich für die gesamte Bandbreite der Messtechnik an,
da viel Messtechnik-Peripherie und auch die meisten Microcontroller mit I2C-Slave-Interfaces aus-
gestattet sind.

Die aktuellen Raspbian-Distributionen (02/, 04/, 06/ und 08/2017) bieten eine simple Aktivierungsmöglichkeit
des I2C-Bus 1 (GPIO Pin 3 und 5 mit Pull-ups gegen 3,3 V) durch Aktivierung einer Checkbox in der Interface-
Sektion der Raspbian-Konfiguration an. Auf den PCBs sind 1,8-kOhm Pullup-Widerstände am SCL- und SDA-Pin
gegen 3,3 V verlötet.

Der I2C-Standard sieht als Clockraten in der Regel 100 kHz und 400 kHz (seltener noch 1 MHz) vor.

In Raspbian ist von einer voreingestellten Clockrate von 100 kHz die Rede.

Durch Nachprüfen an 4 Boards (RPi-B, RPi-2, RPi-3 und RPi Zero W) mittels eines Oszilloskops ergaben sich
folgende Differenzen:

Der RPi-Modell B zeigte im Default-Modus die richtige Baudrate von 100 kHz. Der RPi-Modell 2 zeigte
die halbe Clockrate von 50 kHz und der RPi-Modell 3 sowie Zero W zeigten ca. 63 kHz.

Nach längerem Herumsuchen im Web fand ich nun die richtige Möglichkeit, um die Clockrate entsprechend
zu korrigieren. Erschwerend dabei ist, dass für verschiedene Versionen des Betriebssystems unterschiedliche
Systemdateien mit unterschiedlichen Befehlen editiert werden müssen und dass sich das auch für zukünftige
Versionen immer wieder ändern kann.

Für die aktuellen Raspbian-Versionen (Raspbian-jessie bis 07/17 und Raspbian-stretch ab 08/17) gilt:

Raspberry Pi B: für 100 kHz ist kein Eingriff nötig. Es kann aber mit "sudo nano /boot/config.txt" nach dem
schon existierenden Eintrag "dtparam=i2c_arm=on" zusätzlich die Zeile "dtparam=i2c1_baudrate=100000"
eingegeben werden. Für 400 kHz lautet der Eintrag dann entsprechend "dtparam=i2c1_baudrate=400000".

Raspberry Pi 2: für reale 100 kHz ist entsprechend "dtparam=i2c1_baudrate=200000" und für reale 400 kHz
ist "dtparam=i2c1_baudrate=800000" einzugeben.

Raspberry Pi 3: für reale 100 kHz ist entsprechend "dtparam=i2c1_baudrate=160000" und für reale 400 kHz
ist "dtparam=i2c1_baudrate=640000" einzugeben.

Raspberry Pi Zero W: für reale 100 kHz ist entsprechend "dtparam=i2c1_baudrate=160000" und für reale 400 kHz
ist "dtparam=i2c1_baudrate=640000" einzugeben.

Es ist damit zu rechnen, dass zukünftige Distributionen bezüglich der I2C-Baudrate wieder geändert werden.

Nach anschliessenden Neustarts werden die aktualisierten Baudraten dann übernommen.

W. Wachter

Zurück zu „Raspberry & Co“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast