I²C vs. SPI für Drucksensoren – Leitfaden zur Schnittstellenauswahl

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:

I²c
  • 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
Spi
  • 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

SzenarioVerwendete I²C-PinsSPI-Pins verwendet
1 Sensor2(SDA+SCL)4 (MOSI + MISO + SCLK + CS)
2 Sensoren2 (Sammelbus)5 (gemeinsamer Bus + 2× CS)
4 Sensoren2 (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?

Eins → Beides funktioniert

So oder so kein Vorteil. Gehen Sie zu Frage 2.

Zwei → I²C gewinnt wahrscheinlich

Zwei Adressen, zwei Leitungen. Es sei denn, die Sensoren sind weit voneinander entfernt – dann SPI.

Drei oder mehr → SPI

Es sei denn, Sie lesen gerne I²C-Multiplexer-Datenblätter.

2Wie weit ist der Sensor von der MCU entfernt?

Gleiche Platine, <100 mm → Entweder

I²C ist auf Platinenebene mit klarem Layout in Ordnung.

Kabel >200 mm → SPI

Oder I²C mit Differenzpuffer (PCA9615). I²C wurde nie für Kabel entwickelt.

>1 Meter → Weder noch

Verwenden Sie 4–20 mA oder RS-485. Sie befinden sich im Gebiet der Industriesender.

3Wie ist die EMI-Umgebung?

Leise Platine, keine Motoren → Entweder

Das klare Layout mit Bypass-Kappen sorgt dafür, dass I²C zufrieden ist.

BLDC, GSM, Abwärtswandler in der Nähe → SPI

Push-Pull-Treiber und CS-Gating verhindern Phantommessungen.

4Bist du derjenige, der den Treiber schreibt?

HAL/Bibliothek existiert → Entweder

Die Abstraktion macht den Unterschied vernachlässigbar. Verwenden Sie, was der Rest des Boards verwendet.

Von Grund auf schreiben → SPI

Weniger Zustände, keine Zeitüberschreitung, keine Adresskonflikte.

Portierung einer Arduino-Bibliothek → I²C

Die meisten Hobby-Sensorbibliotheken verwenden standardmäßig I²C. Überprüfen Sie zuerst die Bibliothek.


The "Why Not Both" Card

Duale Schnittstelle

Einige 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

FaktorI²cSpiGewinner
Anzahl der Drähte24 + 1 pro SensorI²c
SpeedBis zu 3,4 MHzBis zu 50 MHzTie-Sensor-ADC ist der Engpass
Multisensor (gleicher Typ)Max. 2 ohne MuxUnbegrenzt (ein CS pro Sensor)SPI über 2 Sensoren hinaus
StörfestigkeitOpen-Drain, RC-KantenPush-Pull-CMOS, scharfe KantenSpi
Komplexität der FirmwareZustandsmaschine, ACK/NAK, TimeoutsCS aktivieren, Bytes verschieben, fertigSPI (Bare-Metal); Krawatte (mit HAL)
Debug-SchwierigkeitSchwieriger – NAK-JagdEinfacher – klare SignaleSpi
Stromverbrauch~0,7 mA (Pull-Ups aktiv)~0 mA (keine Pull-Ups)Tie – Delta ist Pikowattstunden
KabelführungenNicht empfohlen >200 mmVerträgt längere SpurenSpi
External components2× Pull-Up-WiderständeKeinerGleichstand – 2× 0402 Widerstände ≈ 0,002 $

TL;DR

Anzahl der Pins I²C benötigt weniger Drähte. Entscheidend, wenn GPIOs knapp sind.
Speed Spielt keine Rolle. Der ADC des Sensors ist immer der Flaschenhals.
Multisensor I²C ist sauberer für ≤2 identische Sensoren. Darüber hinaus lässt sich SPI besser skalieren.
Lärm SPI gewinnt. Entscheidend in der Nähe von Motoren, Schaltern oder GSM-Modulen.
Firmware SPI ist einfacheres Bare-Metal. Mit einem HAL ist es eine Wäsche. Das Debuggen von I²C dauert länger, wenn es kaputt geht.
Leistung Treffen Sie Ihre Entscheidungen nicht aufgrund Ihrer Macht. Der Unterschied beträgt Pikowattstunden.
Dual-Schnittstelle Das Beste aus beiden Welten – ein Design, beliebig austauschbar. Nutzen Sie es als Funktion, nicht als nachträglichen Gedanken.

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 →
Scrollen Sie nach oben

Kontaktieren Sie uns