I²C, SPI und UART: Wie Chips und Sensoren miteinander reden
Kurz: UART, I²C und SPI sind die drei klassischen seriellen Schnittstellen zwischen Mikrocontrollern, Sensoren und Displays, mit unterschiedlicher Leitungszahl, Geschwindigkeit und Adressierung.
Genauer: Sensoren, Displays, Speicher und Module hängen über wenige Leitungen am Mikrocontroller (Arduino, ESP32, Raspberry Pi). Welches Protokoll passt, entscheidet das Datenblatt des Bauteils.
Im Detail
UART (seriell)
- 2 Leitungen (TX, RX) + GND, asynchron (keine Taktleitung): beide Seiten einigen sich auf Baudrate (z. B. 9600, 115200), 8N1 (8 Datenbits, keine Parität, 1 Stoppbit).
- TX ↔ RX kreuzen; gleiche Pegel (3,3 V vs 5 V!).
- Typisch: Serieller Monitor/Debug, GPS-Module, Bluetooth-Module, Konsolen-Zugang (Router/Raspberry Pi), USB-Seriell-Adapter.
- RS-232 (± 12 V) und RS-485 (differenziell, lange Leitungen, Industrie) sind verwandte Pegel/Standards.
I²C (Inter-Integrated Circuit)
- 2 Leitungen: SDA (Daten), SCL (Takt) + GND; mehrere Geräte an einem Bus, jedes mit 7-Bit-Adresse (z. B. 0x3C OLED, 0x68 Echtzeituhr).
- Pull-up-Widerstände (4,7 kΩ) nötig (oft auf Breakout-Boards).
- Geschwindigkeit 100 kHz / 400 kHz (Fast-Mode) bis MHz; Master/Slave (Controller/Target).
- Ideal für Sensoren (Temperatur, Beschleunigung), kleine OLED-Displays, EEPROMs.
- Adresskonflikte (zwei gleiche Sensoren) → Adress-Pin/Multiplexer. Debug:
i2cdetect -y 1(Raspberry Pi) / I²C-Scanner (Arduino).
SPI (Serial Peripheral Interface)
- 4 Leitungen: MOSI, MISO, SCK, CS/SS (Chip-Select je Gerät) + GND; vollduplex, sehr schnell (MHz bis zig MHz).
- Für Displays (TFT), SD-Karten, Flash-Speicher, ADC/DAC, LED-Treiber, Funkmodule (nRF24).
- Pro Gerät eine CS-Leitung (mehr Pins als I²C); kein Standard-Adressierungsschema.
- Modi (Taktpolarität/-phase 0–3) müssen passen.
Auswahl und Praxis
- Wenige Pins, mehrere Geräte, mittlere Geschwindigkeit → I²C.
- Hohe Datenrate (Display/SD) → SPI.
- Punkt-zu-Punkt, einfach → UART.
- Pegelwandler bei 5 V ↔ 3,3 V (Pi/ESP32 sind 3,3 V! 5 V an GPIO kann zerstören).
- Kabellängen kurz halten (I²C/SPI sind für Platine/wenige Dezimeter gedacht).
- Bibliotheken (Wire, SPI,
smbus,spidev, MicroPythonmachine) kapseln Details. - Logikanalysator (günstig, Sigrok/PulseView) zeigt Signale zum Debuggen.
- Verwandt: 1-Wire (DS18B20), CAN (Auto), USB, Ethernet.
Siehe auch: Arduino und Mikrocontroller, ESP32, Raspberry Pi