Technische Leitfäden
I²C vs. SPI für Drucksensoren – Wählen Sie den richtigen Bus oder hassen Sie Ihr Layout später
Sie haben Ihren Drucksensor ausgewählt. Sie kennen die Reichweite, die Genauigkeit, das Paket. Dann sehen Sie auf der Bestellseite zwei Varianten: I²c Und Spi. Gleicher Sensor. Gleicher Preis. Verschiedene vier Buchstaben. So entscheiden Sie – mit reellen Zahlen, nicht mit Lehrbuchtheorie.
Die zweiminütige Auffrischung
Überspringen Sie dies, wenn Sie beide Busse bereits verkabelt haben. Falls nicht, finden Sie hier genug Informationen, um den Rest des Artikels zu lesen:
- Drähte: 2 – SDA (Daten) + SCL (Uhr)
- Signaltyp: Open-Drain, hochgezogen mit Widerständen
- Adressierung: 7-Bit-Adresse pro Gerät
- Richtung: Halbduplex
- Geschwindigkeit: 100 kHz / 400 kHz / 1 MHz / 3,4 MHz
- Kontrolle: Vom Meister initiiert; Slaves antworten nur, wenn sie angesprochen werden
- Drähte: 4 – MOSI, MISO, SCLK + 1× CS pro Gerät
- Signaltyp: Push-Pull-CMOS
- Adressierung: Keine – CS-Leitung wählt das Gerät aus
- Richtung: Vollduplex
- Geschwindigkeit: 1 MHz bis 50 MHz
- Kontrolle: Master steuert die Uhr; keine Uhrdehnung
An diesem Punkt könnten Sie denken: "SPI is faster, so SPI wins, end of article." Nicht ganz – Geschwindigkeit spielt für einen Drucksensor fast nie eine Rolle. Hier erfahren Sie, warum.
Das Geschwindigkeitsargument, das keine Rolle spielt
Ein typischer MEMS-Drucksensor führt jeden Tag einen Messwert durch 1 bis 100 Millisekunden — Die ADC-Wandlungszeit dominiert, nicht die Busgeschwindigkeit. Selbst bei 1 ms pro Abtastung (1-kHz-Abtastung) übertragen Sie möglicherweise 48 Bit pro Messwert. Das ist 48 kbit/s.
I²C bei 400 kHz überträgt ca. 320 kbps nach Overhead. SPI bei 1 MHz überträgt 1 Mbit/s. Entweder ist es so 7× bis 20× schneller als die Datenrate des Sensors. Sofern Sie nicht mit Ultraschallfrequenzen messen – was nicht der Fall ist, da sich der Druck nicht so schnell ändert – ist die Busgeschwindigkeit irrelevant. Der Sensor ist der Engpass, nicht die Kabel.
Fazit zur Geschwindigkeit: Spielt keine Rolle. Der ADC des Sensors ist der begrenzende Faktor. Entscheiden Sie sich aus anderen Gründen.
Pin-Anzahl: Das Argument, das auf kleinen Boards tatsächlich zählt
| Szenario | Verwendete I²C-Pins | SPI-Pins verwendet |
|---|---|---|
| 1 Sensor | 2(SDA+SCL) | 4 (MOSI + MISO + SCLK + CS) |
| 2 Sensoren | 2 (Sammelbus) | 5 (gemeinsamer Bus + 2× CS) |
| 4 Sensoren | 2 (Sammelbus) | 7 (gemeinsamer Bus + 4× CS) |
Wenn Ihr MCU ein STM32 mit 80 GPIOs ist – wen interessiert das? Aber auf einem ESP32-C3 mit 15 nutzbaren GPIOs, einem Display, BLE, zwei Tasten und einer SD-Karte – diese 2 zusätzlichen Pins für SPI stechen. I²C spart Ihnen Pins, unabhängig davon, wie viele Sensoren sich den Bus teilen.
Hinweis: I²C kostet Sie zwei Pull-up-Widerstände. SPI kostet nichts. Zwei 4,7-kΩ-0402-Widerstände kosten insgesamt etwa 0,002 US-Dollar und nehmen 2 mm² Platz auf der Platine ein – nicht nichts, aber nahe daran.
Fazit zu den Pins: I²C gewinnt, wenn die GPIOs knapp sind. Mit einer pinreichen MCU verschwindet der Vorteil – entscheiden Sie sich für andere Faktoren.
Multi-Sensor-Designs: Wo I²C wirklich glänzt
Drei Drucksensoren auf derselben Platine – eine barometrische Referenz, ein Tankfüllstand, ein Pumpenauslass. Mit I²C: Jedem Sensor eine andere Adresse zuweisen, SDA und SCL parallel verdrahten, fertig. Zwei Spuren. Drei Sensoren. Keine zusätzlichen MCU-Pins. Mit SPI: drei separate CS-Leitungen über dem gemeinsamen MOSI/MISO/SCLK – insgesamt sechs Drähte.
Achtung: I²C-Geräte benötigen eindeutige Adressen. Die meisten Drucksensoren bieten genau das zwei Adressen (eine Nadel, die hoch oder niedrig befestigt ist). Das bedeutet, dass Sie zwei Sensoren an den Bus anschließen, bevor Sie einen I²C-Multiplexer wie den TCA9548A benötigen – was etwa 0,50 US-Dollar und ein paar mm² hinzufügt. SPI hat keine solche Grenze; Fügen Sie einfach eine CS-Linie pro Sensor hinzu.
Fazit zum Multisensor: I²C überzeugt durch die einfache Verkabelung von bis zu zwei identischen Sensoren. Darüber hinaus verwenden Sie SPI oder einen I²C-Mux – beides ist eindeutig nicht besser, es ist ein Layout-Aufruf.
Störfestigkeit: Diejenige, bei der SPI die Nase vorn hat
Hochauflösende Drucksensoren messen Änderungen von nur 0,03 hPa – ungefähr das Gewicht einer Mücke, die auf Ihrem Schreibtisch landet, und werden in ein elektrisches Signal umgewandelt. Bei dieser Auflösung spielt das Rauschen eine Rolle.
I²C-Rauscheigenschaften
Open-Drain-Leitungen mit Pull-Up-Widerständen erzeugen RC-Rampenflanken, keine sauberen CMOS-Übergänge. Pull-up-Werte sind ein Kompromiss: zu stark verschwendet Kraft; zu schwach macht die Anstiegszeit langsam und öffnet ein Fenster für die Rauschkopplung. In einer lauten Umgebung – neben einem Motortreiber, Schaltregler oder irgendetwas mit PWM – kann es bei I²C zu Störungen kommen. Das Protokoll verfügt über keine integrierte Fehlererkennung über das ACK-Bit hinaus (einige Sensoren fügen der Nutzlast ein CRC-Byte hinzu, was hilfreich ist).
SPI-Rauscheigenschaften
Push-Pull-CMOS-Treiber steuern aktiv sowohl den High- als auch den Low-Zustand. Kanten sind scharf. Die CS-Leitung schaltet genau dann, wenn der Slave zuhören soll – und ignoriert in der restlichen Zeit alles auf dem Bus. Von Natur aus besseres SNR.
In der Praxis sorgt ein sauberes PCB-Layout mit kurzen Leiterbahnen, einer Masseebene und Bypass-Kappen dafür, dass I²C bei den meisten Designs zufrieden ist. Wenn sich Ihr Sensor jedoch an einem Kabel befindet, das einen Meter von der MCU entfernt ist, oder ein Gehäuse mit etwas teilt, das Stromstärken schaltet, ist die Störfestigkeit von SPI ein echter Vorteil.
Fazit zum Thema Lärm: SPI ist die sicherere Wahl in elektrisch feindlichen Umgebungen. Auf derselben Platine, ein paar Zentimeter von der MCU entfernt, ist I²C in Ordnung.
Firmware-Komplexität: Der Tiebreaker, über den niemand spricht
I²C-Firmware
A state machine. Start condition → send address + R/W bit → wait for ACK → read/write register pointer → read/write data → stop condition. Every step has a timeout, a retry path, and a "what if the sensor holds SDA low because it's still converting" case. Most MCU vendors provide a HAL. Most of those HALs have edge-case bugs you'll discover at 11 PM.
SPI-Firmware
Assert CS → shift bytes → de-assert CS. That's it. The sensor doesn't get to say "I'm not ready" by clock-stretching or NAKing. The master controls the clock; the slave responds or stays silent.
Debugging-Schmerz: Wenn SPI nicht funktioniert, prüfen Sie vier Leitungen mit einem Logikanalysator und sehen genau, was passiert. Wenn I²C nicht funktioniert, starren Sie auf einen Bildschirm voller NAKs und fragen sich, ob es an den Pull-up-Werten, der Adresse, dem Timing oder der Buskapazität liegt. Ein Logikanalysator für 8 US-Dollar löst beides – aber I²C wird mehr Zeit in Anspruch nehmen.
Fazit zur Firmware: SPI ist weniger störend als Bare-Metal. Bei einem HAL oder einer Bibliothek ist es ungefähr ein Wash. Das Debuggen von I²C dauert länger, wenn es kaputt geht.
Stromverbrauch: Beides sind Rundungsfehler
Ein 400-kHz-I²C-Bus mit 4,7-kΩ-Pullups brennt ungefähr 0,7 mA während aktiv. SPI verbraucht im Wesentlichen nichts auf Busebene – reiner CMOS-Schaltstrom bei diesen Geschwindigkeiten (Mikroampere).
Context: the pressure sensor element and ADC draw ~5 µA at 1 Hz sampling and 0.3 µA in standby. Whether the bus burns 0.5 mA or 0.05 mA for the 2 ms it takes to read a sample — the energy difference is picowatt-hours. Your BLE radio burns more power sending one "hello" packet than the bus choice will save across the sensor's entire operating lifetime.
Fazit zur Leistung: Wählen Sie I²C oder SPI nicht aufgrund der Leistung. Der Unterschied ist zu gering, um von Bedeutung zu sein. Entscheiden Sie sich stattdessen für Pins, Rauschen oder Firmware-Sicherheit.
Entscheidungsfluss – Vier Fragen, keine Matrix
1Wie viele identische Sensoren an einem Bus?
So oder so kein Vorteil. Gehen Sie zu Frage 2.
Zwei Adressen, zwei Leitungen. Es sei denn, die Sensoren sind weit voneinander entfernt – dann SPI.
Es sei denn, Sie lesen gerne I²C-Multiplexer-Datenblätter.
2Wie weit ist der Sensor von der MCU entfernt?
I²C ist auf Platinenebene mit klarem Layout in Ordnung.
Oder I²C mit Differenzpuffer (PCA9615). I²C wurde nie für Kabel entwickelt.
Verwenden Sie 4–20 mA oder RS-485. Sie befinden sich im Gebiet der Industriesender.
3Wie ist die EMI-Umgebung?
Das klare Layout mit Bypass-Kappen sorgt dafür, dass I²C zufrieden ist.
Push-Pull-Treiber und CS-Gating verhindern Phantommessungen.
4Bist du derjenige, der den Treiber schreibt?
Die Abstraktion macht den Unterschied vernachlässigbar. Verwenden Sie, was der Rest des Boards verwendet.
Weniger Zustände, keine Zeitüberschreitung, keine Adresskonflikte.
Die meisten Hobby-Sensorbibliotheken verwenden standardmäßig I²C. Überprüfen Sie zuerst die Bibliothek.
The "Why Not Both" Card
Duale SchnittstelleEinige Sensoren werden mitgeliefert Sowohl I²C als auch SPI auf demselben Chip, wählbar über Stiftlasche oder Registerbit. Dies ist in zwei Szenarien wirklich nützlich:
Flexibilität beim Prototyping
Beginnen Sie mit I²C auf einem Arduino oder Breakout-Board, da es einfacher zu verkabeln ist. Wenn Sie Ihre eigene Leiterplatte drehen, wechseln Sie zu SPI, wenn Ihr Layout davon profitiert. Gleicher Sensor, gleiche Firmware-Logik, nur ein anderer HAL-Aufruf.
Flexibilität der Produktions-SKU
Ein PCB-Design, verschiedene SKUs. Eine SKU verwendet I²C, da sie den Bus mit einem Temperatur-/Feuchtigkeitssensor teilt. Ein anderer benötigt SPI für längere Trace-Läufe zu einer Remote-Sensorplatine. Sie entwerfen nichts neu – ändern Sie eine Stücklistenzeile und einen Widerstandsgurt.
Wenn Ihr Sensorkandidat nicht beide Busse unterstützt, ist das kein Problem. Aber diese Option zu haben, gehört zu den Dingen, die man erst zu schätzen weiß, wenn man um 2 Uhr morgens ein Spielbrett neu dreht.
Nebeneinander-Zusammenfassung
| Faktor | I²c | Spi | Gewinner |
|---|---|---|---|
| Anzahl der Drähte | 2 | 4 + 1 pro Sensor | I²c |
| Speed | Bis zu 3,4 MHz | Bis zu 50 MHz | Tie-Sensor-ADC ist der Engpass |
| Multisensor (gleicher Typ) | Max. 2 ohne Mux | Unbegrenzt (ein CS pro Sensor) | SPI über 2 Sensoren hinaus |
| Störfestigkeit | Open-Drain, RC-Kanten | Push-Pull-CMOS, scharfe Kanten | Spi |
| Komplexität der Firmware | Zustandsmaschine, ACK/NAK, Timeouts | CS aktivieren, Bytes verschieben, fertig | SPI (Bare-Metal); Krawatte (mit HAL) |
| Debug-Schwierigkeit | Schwieriger – NAK-Jagd | Einfacher – klare Signale | Spi |
| Stromverbrauch | ~0,7 mA (Pull-Ups aktiv) | ~0 mA (keine Pull-Ups) | Tie – Delta ist Pikowattstunden |
| Kabelführungen | Nicht empfohlen >200 mm | Verträgt längere Spuren | Spi |
| External components | 2× Pull-Up-Widerstände | Keiner | Gleichstand – 2× 0402 Widerstände ≈ 0,002 $ |
TL;DR
Sind Sie unsicher, ob Sie überhaupt einen Absolutdruck-, Überdruck- oder Differenzdrucksensor benötigen? Lesen Sie den Leitfaden in einfacher Sprache →
Sie sind sich nicht sicher, welche Schnittstelle zu Ihrem Design passt? Teilen Sie uns Ihre MCU, Ihre Platinenbeschränkungen und Ihre Umgebung mit – wir weisen Sie in der Regel innerhalb einer Stunde auf den richtigen Teil hin.
Nehmen Sie Kontakt auf →



