I2C vs. SPI vs. UART: Welches Kommunikationsprotokoll sollten Sie verwenden?

20.10.2026
I2C vs SPI vs UART: which communication protocol should you use?

Inhaltsverzeichnis

Inhaltsverzeichnis
Was sind Kommunikationsprotokolle in der Elektronik?I2C vs. SPI vs. UART auf einen BlickWas ist I2C?Was ist SPI?Was ist UART?I2C vs. SPI: Was ist der Unterschied?UART vs. I2C und SPIWelches Protokoll sollten Sie für Sensoren verwenden?Welches Protokoll sollten Sie für Displays verwenden?I2C, SPI und UART mit ArduinoI2C, SPI und UART mit ESP32I2C, SPI und UART mit Raspberry PiHäufige Fehler bei der Wahl von I2C, SPI oder UARTKurze EntscheidungsübersichtWarum Soldered der ideale Ort ist, um Kommunikationsprotokolle zu lernenHäufig gestellte Fragen

I2C, SPI und UART sind die drei Wege, über die fast jeder Sensor, jedes Display und jedes Modul mit einem Mikrocontroller kommuniziert. Keines davon ist das beste. Jedes löst ein anderes Problem, und die Wahl des richtigen hängt davon ab, wie viele Geräte Sie haben, wie schnell die Daten fließen sollen und welche Strecke sie zurücklegen müssen.

Die Kurzfassung: Verwenden Sie I2C, um mehrere Sensoren mit zwei Drähten anzuschließen, SPI, wenn ein Display oder eine Speicherkarte Geschwindigkeit erfordert, und UART für eine einfache serielle Kommunikation zwischen zwei Geräten.

Was sind Kommunikationsprotokolle in der Elektronik?

Ein Mikrocontroller benötigt eine Möglichkeit, Daten mit den umliegenden Komponenten auszutauschen: einen Sensor auslesen, auf einem Display zeichnen, auf einer Speicherkarte speichern. Ein Protokoll ist das Regelwerk für diesen Austausch. Es legt fest, welcher Draht was überträgt, wer wann spricht und wie ein Byte Bit für Bit gesendet wird.

I2C, SPI und UART sind die drei Protokolle, denen Sie zuerst begegnen werden. Jedes Arduino-kompatible Board, ESP32 und Raspberry Pi unterstützt alle drei, und fast jedes Breakout-Board nutzt eines davon. Das NULA Mini ESP32-C6 ist ein gutes Board, um sie zu erlernen: Es verfügt über einen Qwiic-Anschluss für I2C und freie Pins für SPI und UART. Das Zero to Hero Kit führt Sie Schritt für Schritt an I2C-Sensoren und -Displays heran.

I2C vs. SPI vs. UART auf einen Blick

Protokoll Hauptleitungen Am besten geeignet für Stärke Einschränkung
I2C 2 Signalleitungen: SDA, SCL Sensoren, RTC-Module, kleine Displays, IO-Expander Viele Geräte an einem Bus Langsamer als SPI, kurze Distanzen
SPI 4 oder mehr: MOSI, MISO, SCLK, CS Schnelle Displays, SD-Karten, Speicher, schnelle Sensoren Schnell Verbraucht mehr Pins
UART 2 Signalleitungen: TX, RX Debugging, GPS, Kommunikation zwischen zwei Boards Einfach, überall unterstützt Meist nur zwei Geräte

Alle drei benötigen zudem eine gemeinsame Masse zwischen den Geräten.

Was ist I2C?

I2C (Inter-Integrated Circuit) verwendet zwei Signalleitungen. SDA überträgt die Daten und SCL das Taktsignal. Jedes Gerät am Bus ist mit denselben zwei Leitungen verbunden und hat eine eigene Adresse, sodass der Controller jeweils mit einem Gerät kommunizieren kann.

  • Wenig Verkabelung. Zehn Sensoren benötigen immer noch nur SDA, SCL, Strom und Masse.
  • Adressen. Jedes Gerät hat eine 7-Bit-Adresse, wie z. B. 0x3C für ein kleines OLED. Zwei Geräte mit derselben Adresse können sich einen Bus nur teilen, wenn die Adresse eines Geräts geändert wird.
  • Geschwindigkeit. Normalerweise 100 kHz oder 400 kHz. Ausreichend für Sensoren, zu langsam für große Grafiken.
  • Distanz. Entwickelt für Verbindungen innerhalb eines Geräts, nicht für lange Kabel.

I2C ist das gängige Protokoll für Sensoren, Echtzeituhren, Zeichen-LCDs, IO-Expander und kleine Displays. Qwiic-Anschlüsse übertragen I2C über ein einziges Steckkabel, sodass kein Löten erforderlich ist. Die PCF85063A Echtzeituhr und das 16x2 I2C-LCD werden beide auf diese Weise angeschlossen.

Kleines OLED-Display mit Hello World Anzeige, verbunden mit einem NULA-Board über ein Qwiic-Kabel
Ein I2C-OLED an einem Qwiic-Kabel: SDA, SCL, Strom und Masse in einem einzigen Stecker

Unser I2C-Protokoll-Leitfaden behandelt die Adressierung und Pull-up-Widerstände im Detail.

Was ist SPI?

SPI (Serial Peripheral Interface) ist das schnelle Protokoll. Es nutzt separate Leitungen für jede Richtung plus einen Taktgeber, sodass Daten gleichzeitig in beide Richtungen fließen können:

  • MOSI überträgt Daten vom Controller zum Gerät.
  • MISO überträgt Daten vom Gerät zurück zum Controller.
  • SCLK ist der Takt, der vom Controller vorgegeben wird.
  • CS (Chip Select) wählt aus, welches Gerät zuhört.

SPI läuft oft im zweistelligen MHz-Bereich, um ein Vielfaches schneller als I2C. Deshalb steuert es Grafikdisplays, SD-Karten, Flash-Speicher und schnelle Sensoren an. Der Preis dafür sind Pins: Geräte teilen sich MOSI, MISO und SCLK, aber jedes benötigt seine eigene CS-Leitung.

Soldered microSD-Karten-Breakout auf einem Breadboard mit sechs Jumper-Kabeln mit einem NULA-Board verbunden
Ein microSD-Breakout über SPI: MOSI, MISO, SCLK und CS, plus Strom und Masse

Das microSD-Breakout von Soldered ist ein gutes erstes SPI-Gerät: Die Arduino SD-Bibliothek übernimmt das Protokoll und Sie erhalten einen Dateispeicher für die Datenprotokollierung.

Was ist UART?

UART (Universal Asynchronous Receiver-Transmitter) ist das einfachste der drei Protokolle. Ein Draht sendet (TX), einer empfängt (RX), und es gibt keine Taktleitung. Stattdessen vereinbaren beide Geräte im Voraus eine Geschwindigkeit, die Baudrate, wie z. B. 9600 oder 115200.

  • Punkt-zu-Punkt. UART verbindet normalerweise genau zwei Geräte.
  • Gekreuzte Leitungen. Die TX-Leitung des einen Geräts geht an RX des anderen und umgekehrt.
  • Überall. Der Serielle Monitor, GPS-Module, Bluetooth-Module, USB-zu-Seriell-Adapter und Board-zu-Board-Verbindungen nutzen es alle.

Der Arduino Serielle Monitor ist UART: Ihr Board kommuniziert mit dem Computer über einen USB-zu-Seriell-Chip. Für ein Board ohne diesen Chip erledigt ein USB-UART-CH340-Konverter dieselbe Aufgabe. Bei Geräten, deren UART-Schnittstelle in einem USB-C-Port verborgen ist, liest der USB-Cereal die serielle Ausgabe, ohne das Gehäuse öffnen zu müssen.

L86-M33 GNSS GPS-Breakout auf zwei Breadboards mit einem NULA-Board verbunden, mit TX, RX, Strom- und Massekabeln
Ein GPS-Modul über UART: Es streamt Positionsdaten als Text, etwa einmal pro Sekunde

GPS-Module sind das klassische UART-Gerät. Das L86-M33 GNSS-Breakout sendet seine Position als Textzeilen, sogenannte NMEA-Sätze, und Ihr Code liest diese wie jeden anderen seriellen Input. Für längere Kabel überträgt RS485 dieselben UART-Daten über Hunderte von Metern durch einen Transceiver. Unser RS485-Leitfaden erklärt, wie das funktioniert.

I2C vs. SPI: Was ist der Unterschied?

Merkmal I2C SPI
Leitungen 2 Signalleitungen 4 oder mehr Signalleitungen
Geschwindigkeit Meist 100 bis 400 kHz Oft zweistellige MHz-Bereiche
Mehrere Geräte Über Adresse, an denselben zwei Leitungen Über Chip Select, jedes mit eigener CS-Leitung
Datenrichtung Eine Richtung gleichzeitig Beide Richtungen gleichzeitig
Beste Verwendung Sensoren, RTC, IO-Expander, kleine Displays Displays, SD-Karten, Speicher
Anfängerfreundlichkeit Einfachere Verkabelung Aufwendigere Verkabelung, aber schneller

Wenn Sie Sensoren anschließen, beginnen Sie mit I2C. Wenn ein Gerät große Datenmengen überträgt, wie ein Farbdisplay oder eine SD-Karte, ist es meist SPI.

UART vs. I2C und SPI

UART funktioniert anders als die anderen beiden. I2C und SPI haben eine Taktleitung und einen steuernden Controller und verbinden meist Bauteile innerhalb eines Geräts. UART hat keinen Takt: Beide Seiten senden, wann immer sie wollen, bei einer vereinbarten Baudrate. Es verbindet in der Regel ein Gerät mit einem anderen.

  • ein GPS-Modul, das seinen Standort sendet
  • ein Board, das Debug-Meldungen an den Seriellen Monitor ausgibt
  • zwei Boards, die Nachrichten austauschen
  • ein RS485-Transceiver, der serielle Daten über ein langes Kabel überträgt

Welches Protokoll sollten Sie für Sensoren verwenden?

  • I2C für die meisten Sensorprojekte für Anfänger. Temperatur-, Feuchtigkeits-, Licht-, Abstands- und Drucksensoren nutzen fast alle dieses Protokoll.
  • SPI, wenn der Sensor schnell Daten liefert, wie manche IMUs und Hochgeschwindigkeits-ADCs.
  • UART, wenn der Sensor serielle Daten streamt, wie z. B. GPS-Module.
  • RS485, wenn der Sensor Dutzende oder Hunderte von Metern entfernt ist.

Manche Sensoren nutzen keines dieser Protokolle. Der wasserdichte DS18B20 verwendet 1-Wire, das nur eine Datenleitung benötigt und es mehreren Sensoren ermöglicht, diese gemeinsam zu nutzen.

Welches Protokoll sollten Sie für Displays verwenden?

  • I2C für einfachen Text: ein 16x2 Zeichen-LCD oder ein kleines monochromatisches OLED.
  • SPI für schnellere Grafik- und Farbdisplays, bei denen ein voller Pixelbildschirm schnell aktualisiert werden muss.
  • Ein Inkplate, wenn das Projekt ein permanent sichtbares, stromsparendes Dashboard benötigt. Der integrierte ESP32 steuert das E-Paper-Display, und sein Qwiic-Anschluss nimmt I2C-Sensoren auf.

Wählen Sie zuerst das Display für die Aufgabe, das Protokoll ergibt sich daraus. Ein 16x2 LCD zeigt Live-Werte an. Ein Inkplate 10 oder Inkplate 6FLICK zeigt den ganzen Tag über ein Wetter-Dashboard, einen Kalender oder ein Türschild an. Unser LCD-Display-Leitfaden vergleicht die Optionen.

I2C, SPI und UART mit Arduino

Arduino-kompatible Boards unterstützen alle drei, jeweils mit einer eingebauten Bibliothek:

Protokoll Arduino-Bibliothek Typische Verwendung
I2C Wire Sensoren, LCDs, RTC-Module
SPI SPI SD-Karten, Displays
UART Serial Serieller Monitor, GPS, andere Boards

Die meisten Sensor- und Display-Bibliotheken rufen diese Funktionen automatisch auf, sodass Sie selten direkt mit dem Protokoll arbeiten müssen. Das Make your own NULA Kit lässt Sie ein Arduino-kompatibles Board zusammenlöten und alle drei Protokolle verwenden.

I2C, SPI und UART mit ESP32

ESP32-Boards unterstützen alle drei, und die meisten Pins können im Code zugewiesen werden, was die Verkabelung flexibel macht. Der Unterschied zu Arduino ist das WLAN: Ein ESP32 liest einen I2C-Sensor aus, protokolliert die Daten auf einer SPI-Karte und sendet die Messwerte per MQTT oder an Home Assistant im selben Sketch.

Das NULA Mini ESP32-C6 eignet sich hervorragend als vernetzter Controller für Sensor- und Display-Projekte. Für batteriebetriebene Projekte schläft das NULA DeepSleep ESP32-S3 zwischen den Messungen mit etwa 16 µA. Unsere ESP32-Projekte für Anfänger enthalten Aufbauten, die alle drei Protokolle verwenden.

I2C, SPI und UART mit Raspberry Pi

Ein Raspberry Pi verfügt über alle drei an seiner GPIO-Leiste. Aktivieren Sie jedes Protokoll in raspi-config unter Interface Options und verwenden Sie es dann mit Python oder einer anderen Sprache.

Ein Pi ist die bessere Wahl, wenn das Projekt Linux, eine Datenbank, ein Dashboard oder mehr Rechenleistung benötigt: ein Datenlogger, der I2C-Sensoren ausliest, ein GPS-Tracker über UART oder ein Display über SPI. Das 8-GB-Modell bietet Raum für leistungsintensivere Dienste. Unsere Raspberry Pi-Projektideen bieten weitere Aufbauten.

Häufige Fehler bei der Wahl von I2C, SPI oder UART

  • SPI verwenden, obwohl I2C ausreicht. Vier zusätzliche Drähte für einen Temperatursensor, der einmal pro Sekunde aktualisiert.
  • I2C über lange Kabel. Es ist für kurze Distanzen gedacht; nutzen Sie RS485 für lange Strecken.
  • Die I2C-Adresse nicht kennen. Führen Sie einen I2C-Scanner-Sketch aus, um zu sehen, was am Bus angeschlossen ist.
  • SDA und SCL vertauscht. Nichts reagiert, und es wird kein Fehler gemeldet.
  • TX an TX. UART-Leitungen müssen gekreuzt werden: TX an RX, RX an TX.
  • Nicht übereinstimmende Baudraten. Der Serielle Monitor zeigt nur Zeichensalat.
  • Fehlendes SPI Chip Select. Jedes SPI-Gerät benötigt seine eigene CS-Leitung.
  • Zwei I2C-Geräte mit derselben Adresse. Ändern Sie die Adresse eines Geräts über den Adress-Jumper oder nutzen Sie einen zweiten Bus.
  • Ein Display nach dem Protokoll wählen. Wählen Sie es danach aus, was es anzeigen soll.
  • UART über die Länge eines Gebäudes. Nutzen Sie RS485 für große Entfernungen.

Unser Leitfaden zu Pull-up-Widerständen erklärt die andere häufige Ursache für einen stummen I2C-Bus.

Kurze Entscheidungsübersicht

Projektanforderung Beste Wahl
Mehrere Sensoren mit wenigen Drähten I2C
Einfaches Text-LCD I2C
Schnelles Display oder SD-Karte SPI
GPS-Modul UART
Debugging über den Seriellen Monitor UART
Zwei Boards kommunizieren direkt UART
Langes, kabelgebundenes Sensornetzwerk RS485
Smart-Home-Sensor mit WLAN ESP32 mit einem I2C-Sensor
Stromsparendes Dashboard Inkplate
Raspberry Pi Datenlogger I2C, SPI oder UART, je nach Modul

Warum Soldered der ideale Ort ist, um Kommunikationsprotokolle zu lernen

Man lernt Protokolle am schnellsten, indem man sie anwendet. Beginnen Sie mit einem I2C-LCD oder einer RTC über ein Qwiic-Kabel, fügen Sie eine microSD-Karte über SPI hinzu, lesen Sie ein GPS-Modul über UART aus und senden Sie alles per ESP32 ins WLAN. Soldered fertigt die Boards, Breakouts und Displays für jeden Schritt, und jedes davon enthält eine Dokumentation mit Verkabelungsplänen und Beispiel-Code.

Häufig gestellte Fragen

Was ist der Unterschied zwischen I2C, SPI und UART?
I2C verbindet viele Sensoren oder Module mit zwei Signalleitungen. SPI ist schneller und eignet sich für Displays, SD-Karten und Speicher. UART ist eine einfache serielle Kommunikation zwischen zwei Geräten, die oft für Debugging genutzt wird.

Ist I2C besser als SPI?
Für eine einfache Verkabelung und viele Geräte an einem Bus, ja. Für Geschwindigkeit, wie bei schnellen Displays, SD-Karten oder Speichern, ist SPI besser.

Ist SPI schneller als I2C?
Ja, meist um ein Vielfaches schneller. Deshalb nutzen datenintensive Geräte dieses Protokoll.

Wofür wird UART verwendet?
Einfache serielle Kommunikation zwischen zwei Geräten: Debugging, GPS-Module, serielle Adapter, Bluetooth-Module und Board-zu-Board-Verbindungen.

Welches Protokoll ist am besten für Arduino-Sensoren?
I2C. Es benötigt nur zwei Signalleitungen, und viele Sensoren können diese gemeinsam nutzen.

Welches Protokoll ist am besten für Displays?
Es kommt auf das Display an. Zeichen-LCDs und kleine OLEDs nutzen I2C, schnellere Grafikdisplays nutzen SPI, und das Inkplate steuert sein E-Paper-Display selbst.

Kann der ESP32 I2C, SPI und UART nutzen?
Ja, alle drei, was ihn zu einem guten Controller für vernetzte Sensor-, Display-, MQTT- und Home-Assistant-Projekte macht.

Kann der Raspberry Pi I2C, SPI und UART nutzen?
Ja, über seine GPIO-Pins, sobald die Schnittstellen in raspi-config aktiviert wurden.

Was bedeuten SDA und SCL?
SDA ist die I2C-Datenleitung und SCL die I2C-Taktleitung.

Was bedeuten MOSI, MISO und SCLK?
Das sind SPI-Leitungen. MOSI überträgt Daten vom Controller zum Gerät, MISO zurück zum Controller, und SCLK ist der Takt.

Was bedeuten TX und RX?
Transmit und Receive (Senden und Empfangen), die zwei UART-Leitungen. Die TX-Leitung des einen Geräts wird mit der RX-Leitung des anderen verbunden.

Wann sollte ich stattdessen RS485 verwenden?
Wenn Geräte weit voneinander entfernt sind, sich an einem Ort mit vielen Störungen befinden oder ein langes, drahtgebundenes Netzwerk teilen müssen. I2C, SPI und UART sind für kurze Verbindungen gedacht.

In diesem Artikel erwähnte Produkte