Raspberry Pi SPI und I2C
Aktion: Gratis-Lektionen anschauen ✓
NEWS
RASPBERRY PI SPI UND I2C

SPI und I2C am Raspberry Pi nutzen
Passende Hardware im Überblick
Boards mit 40-Pin-Header:
Raspberry Pi 5 mit 8GB RAM – die Empfehlung (Link)*
Raspberry Pi 5 mit 4GB RAM – reicht für Sensorik locker (Link)*
Raspberry Pi 5 mit 16GB RAM (Link)*
Raspberry Pi 4 Starter-Set – der günstige Einstieg (Link)*
Raspberry Pi Zero 2 W – winzig, aber mit vollem Header (Link)*
Sensoren und Module für den Bus:
37-in-1-Sensoren-Kit – zum Ausprobieren ideal (Link)*
Quimat-Bastelset mit Bauteilen und Kabeln (Link)*
Breadboard-Set mit Netzteil und Jumperkabeln (Link)*
DS3231 Echtzeituhr – der Klassiker am I2C-Bus (Link)*
Tiny DS3231 – die Mini-Variante direkt auf dem Header (Link)*
Sensirion SCD40 CO2-Sensor mit I2C (Link)*
DS18B20 Temperaturfühler 5er-Set – 1-Wire statt I2C (Link)*
Displays und Zubehör:
3,5-Zoll-Touchdisplay für den Pi 5 – hängt am SPI-Bus (Link)*
ELECROW 7-Zoll-Display (Link)*
USB-TTL-Kabel mit FTDI-Chip – für die serielle Konsole (Link)*
WS2812B-LED-Streifen 5m – lässt sich über SPI ansteuern (Link)*
Offizielles 27-W-Netzteil für den Pi 5 (Link)*
Kurz gesagt: Wofür braucht man SPI und I2C am Raspberry Pi?
Die Kurzfassung:
- Beides sind Datenbusse auf dem GPIO-Header, über die der Pi mit Sensoren, Displays, Uhren-Modulen und ganzen Erweiterungsplatinen spricht – ohne dass jedes Bauteil eigene Leitungen bekommt.
- I2C braucht zwei Leitungen (SDA auf GPIO2/Pin 3 und SCL auf GPIO3/Pin 5) und spricht Geräte über eine Adresse an. Bis zu rund 110 Adressen teilen sich dasselbe Leitungspaar.
- SPI braucht vier Leitungen (MOSI, MISO, SCLK und mindestens ein Chip-Select) und ist dafür deutlich schneller – 10 bis 50 MHz statt 100 bis 400 kHz.
- Aktiviert wird beides in einer Minute: sudo raspi-config → 3 Interface Options → I4 SPI beziehungsweise I5 I2C. Alternativ die Zeilen dtparam=spi=on und dtparam=i2c_arm=on in /boot/firmware/config.txt.
- Die Faustregel: Viele langsame Bauteile an wenigen Pins → I2C. Ein schnelles Bauteil wie ein Display oder ein A/D-Wandler → SPI.
- Achtung Spannung: Der Pi arbeitet ausschließlich mit 3,3 Volt. Ein 5-Volt-Modul direkt an SDA oder SCL zerstört den Anschluss.
SPI und I2C am Raspberry Pi – der Unterschied verständlich erklärt
Wer SPI und I2C am Raspberry Pi zum ersten Mal nutzt, steht vor derselben Frage: Warum gibt es zwei Systeme für scheinbar dieselbe Aufgabe? Die Antwort liegt in einem Zielkonflikt, den kein einzelner Bus auflösen kann – zwischen möglichst wenig Leitungen auf der einen und möglichst viel Tempo auf der anderen Seite.
I2C (gesprochen „I-Quadrat-C") ist die sparsame Variante. Zwei Leitungen genügen: eine für die Daten (SDA), eine für den Takt (SCL). Dazu kommen noch 3,3 Volt und Masse – macht vier Kabel, egal ob ein Bauteil angeschlossen ist oder zwölf. Damit die Module sich nicht in die Quere kommen, hat jedes eine eigene Adresse, eine Zahl zwischen 0x03 und 0x77. Der Pi ruft die Adresse auf, und nur dieses eine Bauteil antwortet. Wer tiefer einsteigen will, findet die Grundlagen in unserer Erklärung, was I2C genau ist.
SPI geht den umgekehrten Weg. Statt Adressen bekommt jedes Bauteil eine eigene Auswahlleitung, das sogenannte Chip-Select. Dafür laufen Daten in beide Richtungen gleichzeitig über getrennte Leitungen – MOSI vom Pi zum Bauteil, MISO zurück. Dieses Vollduplex-Verfahren und der Verzicht auf Adress-Protokoll machen SPI um Größenordnungen schneller. Der Preis: mehr Pins, und für jedes weitere Bauteil kommt eine Leitung dazu.
Beide Busse sind auf jedem Modell mit 40-Pin-Header vorhanden, vom Zero 2 W bis zum Raspberry Pi 5. Beim Pi 5 sitzen die Anschlüsse im RP1-Chip statt direkt im Hauptprozessor – an der Belegung des Steckers und an den Befehlen ändert das nichts. Wichtig ist nur: Ab Werk sind beide Busse abgeschaltet. Erst nach dem Freischalten tauchen die Gerätedateien im System auf.
SPI und I2C aktivieren – Schritt für Schritt
- System aktualisieren: sudo apt update && sudo apt full-upgrade. Bei neueren Sensoren hängt die Unterstützung am Kernel-Treiber.
- Konfigurationswerkzeug starten: sudo raspi-config aufrufen und zu 3 Interface Options wechseln (die komplette Menü-Übersicht erklärt die restlichen Punkte).
- I2C freischalten: I5 I2C auswählen und die Frage „Would you like the ARM I2C interface to be enabled?" mit Yes beantworten.
- SPI freischalten: Zurück ins Menü, I4 SPI wählen, ebenfalls mit Yes bestätigen. Auf dem Desktop geht beides auch über Einstellungen → Control Centre → Interfaces per Schalter.
- Neu starten: sudo reboot. Ohne Neustart lädt der Kernel die Treibermodule nicht.
- Werkzeuge nachinstallieren: sudo apt install i2c-tools – darin stecken die Befehle i2cdetect, i2cget, i2cset und i2cdump. Für Python kommen noch sudo apt install python3-smbus2 python3-spidev dazu.
- Kontrollieren: ls /dev/i2c-* muss /dev/i2c-1 zeigen, ls /dev/spidev* die beiden Einträge /dev/spidev0.0 und /dev/spidev0.1. Fehlt etwas, hat das Freischalten nicht gegriffen.
- Ersten Sensor suchen: Modul anschließen, dann i2cdetect -y 1. In der Tabelle erscheint die Adresse des Bauteils, zum Beispiel 76 für einen Luftdrucksensor. Ab diesem Moment ist der Rest reine Software.
SPI oder I2C – welcher Bus passt zu welchem Bauteil?
| I2C | SPI | |
|---|---|---|
| Leitungen | 2 (SDA, SCL) | 3 + je eine Auswahlleitung |
| Typisches Tempo | 100 kHz, im Fast Mode 400 kHz | 10–50 MHz |
| Geräteauswahl | über Adresse (0x03–0x77) | über Chip-Select-Leitung |
| Geräte pro Bus | viele, solange die Adressen frei sind | zwei per Hardware, mehr über freie GPIOs |
| Datenrichtung | abwechselnd (Halbduplex) | gleichzeitig (Vollduplex) |
| Leitungslänge | bis etwa 30–50 cm unkritisch | möglichst kurz, wenige Zentimeter |
| Typisch für | Sensoren, Uhren, kleine OLEDs, Erweiterungsplatinen | Displays, A/D-Wandler, Funkmodule, SD-Karten-Leser |
Die Entscheidung nimmt einem das Bauteil meist ab: Ein Sensor bringt genau eine der beiden Schnittstellen mit, und dann ist die Frage beantwortet. Interessant wird es bei Modulen, die beides können – etwa viele Luftdruck- und Temperatursensoren. Dann gilt: Wer mehrere Bauteile in Reihe hängen will, nimmt I2C; wer viele Messwerte pro Sekunde braucht oder ein Display mit Pixeln füttert, nimmt SPI. Für einzelne Temperaturfühler gibt es mit 1-Wire noch einen dritten Weg, den unsere Anleitung zum Temperatursensor beschreibt.
Die Pinbelegung von SPI und I2C auf dem 40-Pin-Header
Beide Busse liegen auf festen Positionen des Steckers. Diese Belegung ist seit dem Raspberry Pi B+ unverändert und gilt auch für Pi 4, Pi 5 und Zero 2 W – ein Grund, warum alte Bastelanleitungen erstaunlich lange gültig bleiben. Die vollständige Karte aller Anschlüsse steht in unserem GPIO-Pinout.
| Signal | GPIO | Pin am Header | Bus |
|---|---|---|---|
| SDA (Daten) | GPIO2 | 3 | I2C |
| SCL (Takt) | GPIO3 | 5 | I2C |
| MOSI (Pi → Modul) | GPIO10 | 19 | SPI0 |
| MISO (Modul → Pi) | GPIO9 | 21 | SPI0 |
| SCLK (Takt) | GPIO11 | 23 | SPI0 |
| CE0 (Auswahl 1) | GPIO8 | 24 | SPI0 |
| CE1 (Auswahl 2) | GPIO7 | 26 | SPI0 |
Zwei Details sind wichtig. Erstens sitzen an GPIO2 und GPIO3 fest verlötete Pull-up-Widerstände von 1,8 Kiloohm gegen 3,3 Volt – deshalb laufen die meisten I2C-Module ohne Zusatzbeschaltung. Zweitens gibt es neben SPI0 weitere SPI-Einheiten, die sich über Overlays wie dtoverlay=spi1-3cs auf andere Pins legen lassen. Das rettet Projekte, bei denen SPI0 schon belegt ist.
Typische Projekte mit I2C- und SPI-Bauteilen
- Umweltmessung: Luftdruck-, Feuchte- und CO2-Sensoren hängen fast immer an I2C. Mehrere davon an denselben zwei Leitungen ergeben ohne Verkabelungsaufwand eine kleine Wetterstation.
- Echtzeituhr nachrüsten: Ein DS3231-Modul am I2C-Bus gibt dem Pi eine gepufferte Uhr für den Betrieb ohne Netzwerk – die RTC-Anleitung zeigt die Einrichtung im Detail.
- Kleine Displays: OLED-Anzeigen mit 128×64 Pixeln laufen über I2C, größere TFT- und E-Ink-Panels über SPI. Beim LCD-Display entscheidet die Auflösung, welcher Bus überhaupt schnell genug ist.
- Analoge Signale einlesen: Der Pi hat keinen A/D-Wandler an Bord. Ein MCP3008 am SPI-Bus füllt diese Lücke und macht Potentiometer, Fotowiderstände und Bodenfeuchte-Fühler auswertbar.
- Erweiterungsplatinen: Jeder HAT trägt einen EEPROM-Baustein, der über einen eigenen I2C-Bus gelesen wird. Deshalb erkennt das System aufgesteckte Platinen von allein.
- Bewegung und Zugang: RFID-Leser vom Typ RC522 sprechen SPI, Beschleunigungs- und Gestensensoren dagegen I2C. Beides lässt sich mit wenigen Zeilen Python auslesen.
Der Reiz liegt darin, dass sich solche Projekte stapeln lassen: Ist der I2C-Bus einmal verdrahtet, kostet der nächste Sensor nur noch zwei Steckverbindungen.
Fehler und Stolpersteine bei SPI und I2C
- Nichts in i2cdetect zu sehen: In neun von zehn Fällen liegt es an der Verkabelung – SDA und SCL vertauscht, Masse vergessen oder das Modul an 5 Volt statt 3,3 Volt gehängt. Erst prüfen, dann am Code zweifeln.
- Adresskonflikt: Zwei Module mit derselben Werksadresse blockieren sich. Viele Platinen haben dafür Lötbrücken zum Umstellen. Hilft das nicht, legt dtoverlay=i2c-gpio einen zweiten, in Software nachgebildeten Bus auf freie Pins.
- 5-Volt-Module: Bauteile aus der Arduino-Welt arbeiten oft mit 5 Volt. Ohne Pegelwandler gehen die GPIO-Anschlüsse dabei kaputt – und zwar dauerhaft, weil der Pi keine Schutzdioden an den Signalpins hat.
- Zu lange Leitungen: I2C ist für Zentimeter gedacht, nicht für Meter. Wird es länger, sinkt die Zuverlässigkeit spürbar; dann hilft es, die Taktrate über dtparam=i2c_arm_baudrate=50000 zu senken.
- Falsche Busnummer: i2cdetect -y 1 gilt für alle aktuellen Modelle. Nur die allerersten Pi-1-Platinen von 2012 nutzen Bus 0 – ältere Anleitungen im Netz führen hier in die Irre.
- SPI-Gerät ohne Gegenstelle: Wenn /dev/spidev0.0 fehlt, obwohl SPI aktiv ist, hat meist ein Kernel-Treiber die Chip-Select-Leitung übernommen. Beides gleichzeitig geht nicht – entweder der Treiber steuert das Bauteil oder das Programm über spidev.
- Konflikt mit anderen Funktionen: Aufgesteckte Platinen, die serielle Konsole und manche Displays greifen auf dieselben Pins zu. Wer parallel UART nutzt, sollte die Belegung vorher abgleichen.
Häufige Fragen zu SPI und I2C am Raspberry Pi
Muss ich beide Schnittstellen aktivieren?
Nein, jede lässt sich einzeln freischalten. Es schadet aber auch nicht, beide anzuschalten – solange kein Bauteil angeschlossen ist, verbrauchen sie weder Rechenleistung noch nennenswert Strom.
Wie viele Geräte passen an einen I2C-Bus?
Theoretisch rund 110, praktisch begrenzt die Leitungskapazität die Zahl auf etwa acht bis zwölf Module. Sobald die Adressen knapp werden, hilft ein Multiplexer wie der TCA9548A oder ein zweiter Bus über das Overlay i2c-gpio.
Was bedeuten die Zahlen in der i2cdetect-Tabelle?
Es sind die belegten Adressen in Hexadezimalschreibweise. Ein 76 steht also für 0x76 – genau diese Zahl braucht die Python-Bibliothek später, um mit dem Bauteil zu sprechen.
Wie schnell darf SPI am Raspberry Pi laufen?
Der Treiber teilt den Systemtakt und erlaubt rechnerisch sehr hohe Werte. Als Faustregel gilt: Über 50 MHz funktioniert praktisch nichts mehr zuverlässig, und viele Bauteile setzen ihre eigene, deutlich niedrigere Grenze.
Funktioniert das alles auf dem Raspberry Pi 5 genauso?
Ja. Die Pinbelegung, die Menüpunkte in raspi-config und die Gerätedateien sind identisch. Der Pi 5 bringt zusätzliche Bus-Einheiten mit, die sich über Overlays auf weitere Pins legen lassen.
Brauche ich Pull-up-Widerstände für I2C?
Auf GPIO2 und GPIO3 sind sie bereits verbaut, deshalb funktioniert der Standardfall ohne Zusatzteile. Nur wenn ein selbst aufgebauter Bus auf andere Pins gelegt wird, muss man sie selbst ergänzen.
Kann ich SPI und I2C gleichzeitig betreiben?
Ohne Einschränkung – die Busse nutzen völlig getrennte Pins und stören sich nicht. Ein Display am SPI-Bus und eine Handvoll Sensoren am I2C-Bus sind ein völlig normales Projekt.
Welche Befehle sollte ich mir merken?
i2cdetect -y 1 zum Suchen, i2cget -y 1 0x76 0xd0 zum Auslesen eines einzelnen Registers und ls /dev/spidev* zur Kontrolle der SPI-Geräte. Mehr braucht es für den Einstieg nicht.
Fazit
SPI und I2C am Raspberry Pi sind kein Expertenthema, sondern zwei Schalter im Konfigurationswerkzeug und ein halbes Dutzend Befehle. Unsere klare Empfehlung: Schalte beide Busse gleich beim Einrichten frei und installiere i2c-tools mit – der Aufwand ist minimal, und beim ersten Sensor spart es die Fehlersuche, warum sich nichts meldet. Für den Aufbau selbst gilt eine einfache Regel: Alles, was misst, kommt an I2C; alles, was Daten am Stück schaufelt, an SPI. Wer sich daran hält, hängt neue Module später einfach dazu, statt die Verkabelung jedes Mal neu zu planen. Und die wichtigste Vorsichtsmaßnahme bleibt die Spannung: 3,3 Volt sind die Grenze, jedes 5-Volt-Modul braucht einen Pegelwandler.
* = Affiliate Link (raspi-config.de ist Teilnehmer des Partnerprogramms von Amazon EU, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu Amazon.de Werbekostenerstattung verdient werden kann.)
Aktion: Gratis-Lektionen anschauen ✓
VORSCHAU
Was Dich im Raspberry Pi Videokurs erwartet.
Play klicken & Video abspielen.
NEWS
EMPFEHLUNG
Danke für Deine Weiterempfehlung!
© 2026 raspi-config.de | Datenschutz | Impressum


