I2C vs. SPI: Die wichtigsten Unterschiede einfach erklärt
Stehen Sie vor der Entscheidung zwischen I2C und SPI für Ihr Projekt und wissen nicht, welches Protokoll die bessere Wahl ist? Dieser Artikel hilft Ihnen, die Unterschiede zu verstehen und die richtige Entscheidung zu treffen.
Sowohl I2C als auch SPI sind „einfache“ Kommunikationsprotokolle, die sich ideal für die chip-zu-chip-Kommunikation auf einer Leiterplatte (PCB) eignen. Sie sind leicht zu implementieren, aber die falsche Wahl kann zu unerwünschten Ergebnissen führen. Deshalb beleuchten wir hier die Funktionsweise, Vor- und Nachteile sowie typische Anwendungsfälle beider Protokolle.
Was ist das SPI-Protokoll?
In den 1980er Jahren entwickelte Motorola das SPI-Protokoll (Serial Peripheral Interface), um Mikrocontroller mit Peripheriegeräten wie EEPROMs zu verbinden.
EEPROM
SPI nutzt vier Signalleitungen für die Kommunikation (ohne Masse und Versorgungsspannung):
- SS (Slave Select): Wählt den aktiven Slave aus (gesteuert vom Master).
- MOSI (Master Out Slave In): Datensendeleitung vom Master zum Slave.
- SCLK (Serial Clock): Taktsignal, vom Master erzeugt.
- MISO (Master In Slave Out): Datenempfangsleitung vom Slave zum Master.
Ein SPI-Bus hat genau einen Master, aber beliebig viele Slaves. Jeder zusätzliche Slave erfordert eine eigene SS-Leitung.
SPI-Protokoll-Interface
SPI-Interface mit mehreren Slaves
Zur Kommunikation zieht der Master die SS-Leitung des gewünschten Slaves auf Low-Pegel. Der Takt (SCLK) beginnt zu oszillieren, und Daten werden simultan über MOSI gesendet und über MISO empfangen (Vollduplex). Zu einem Zeitpunkt kommuniziert der Master nur mit einem Slave.
Was ist I2C?
1982 führte Philips Semiconductors (heute NXP) I2C (Inter-Integrated Circuit) ein, um die Kommunikation zwischen Chips auf einer Platine zu standardisieren.
I2C benötigt nur zwei Leitungen (plus Masse und VCC):
- SDA (Serial Data): Bidirektionale Datenleitung.
- SCL (Serial Clock): Taktsignal, vom Master erzeugt.
Beide Leitungen sind als Open-Drain ausgelegt und benötigen Pull-up-Widerstände, um den High-Pegel herzustellen. Das erlaubt mehrere Master auf demselben Bus (Multi-Master-Fähigkeit) und eine Adressierung der Slaves über 7-Bit-Adressen (max. 112 Geräte).
I2C-Protokoll-Interface
Ein Master initiert die Kommunikation mit einem START-Bedingung (SDA fällt, während SCL high ist), sendet die 7-Bit-Adresse plus Read/Write-Bit. Der adressierte Slave quittiert mit einem ACK-Bit.
Wesentliche Unterschiede zwischen I2C und SPI
Beide Protokolle sind „Low-End“ und langsamer als Hochgeschwindigkeitsstandards wie USB, Ethernet oder SATA. Doch im Detail unterscheiden sie sich stark:
USB-Anschluss
SPI: Modi und Geschwindigkeit
SPI definiert vier Modi (0–3), die Taktpolarität (CPOL) und Taktphase (CPHA) festlegen. Master und Slave müssen denselben Modus nutzen.
- Modus 0: Datenabtastung an steigender Flanke, Takt ruht auf Low.
- Modus 1: Datenabtastung an fallender Flanke, Takt ruht auf Low.
- Modus 2: Datenabtastung an fallender Flanke, Takt ruht auf High.
- Modus 3: Datenabtastung an steigender Flanke, Takt ruht auf High.
SPI erreicht Datenraten von über 10 Mbit/s (teils bis 100 Mbit/s), ideal für große Datenmengen (z. B. Displays, Beschleunigungssensoren).
LCD-Display
I2C: Datenpakete und Geschwindigkeitsstufen
I2C überträgt byteweise; jedes Byte muss vom Empfänger mit ACK bestätigt werden. Drei Geschwindigkeitsklassen:
- Standard Mode: bis 100 kbit/s
- Fast Mode: bis 400 kbit/s
- High-Speed Mode: bis 3,4 Mbit/s
I2C ist damit deutlich langsamer als SPI, eignet sich aber gut für Sensoren mit niedriger Datenrate (Temperatur, ADC).
Temperatursensoren
Vergleichstabelle: I2C vs. SPI
| Merkmal | SPI | I2C |
|---|---|---|
| Treiberart | Push-Pull | Open-Drain |
| Max. Geschwindigkeit | Kein festes Limit (typ. 10–100 Mbit/s) | 100 kbit/s (Standard), 400 kbit/s (Fast), 3,4 Mbit/s (High-Speed) |
| Multi-Master | Nein | Ja |
| Signalleitungen | 4 (pro weiterem Slave +1 SS) | 2 (SDA, SCL) |
| Anzahl Peripherie | Begrenzt durch verfügbare SS-Pins am Master | Max. 112 (7-Bit-Adressierung) |
| Flusskontrolle | Nein | Ja (ACK/NACK) |
Vor- und Nachteile
SPI
Vorteile
- Sehr geringer Stromverbrauch.
- Hohe Geschwindigkeit, Vollduplex-Betrieb.
Nachteile
- Viele Varianten und Anpassungen führen zu Kompatibilitätsproblemen.
- Zusätzliche SS-Leitungen pro Slave nötig.
- Nur für kurze Distanzen (auf derselben Platine) geeignet.
I2C
Vorteile
- Nur zwei Leitungen, egal wie viele Slaves.
- Datenübertragung über Platinengrenzen hinweg möglich (bei niedriger Geschwindigkeit).
- Geringere Störanfälligkeit durch Open-Drain.
- Längere Leitungslängen möglich.
- Kostengünstiger (weniger Pins, weniger Leiterbahnen).
Nachteile
- Deutlich langsamere Datenraten.
- Höherer Stromverbrauch durch Pull-up-Widerstände.
- Ein defektes Gerät, das die Busleitung dauerhaft auf Low hält, blockiert den gesamten Bus.
Entscheidungskriterien für Ihr Projekt
Begrenzte Pin-Anzahl
Wenn Ihr Mikrocontroller wenige Pins hat, spart I2C Anschlüsse (nur 2 Leitungen). SPI benötigt 3 + n Leitungen (n = Anzahl Slaves).
Stromverbrauch
Für batteriebetriebene Geräte ist SPI oft sparsamer. I2C zieht durch Pull-ups kontinuierlich Strom.
Geschwindigkeit
Geht es um große Datenmengen oder hohe Abtastraten (Displays, Kameras, schnelle Sensoren), gewinnt SPI.
PCB-Größe und Layout
Kleine Platinen mit begrenztem Routing-Raum profitieren von I2Cs zwei Leitungen. SPI erfordert mehr Spuren, besonders bei vielen Slaves.
Entscheidungshilfe: Wann welches Protokoll?
| Kriterium | SPI empfohlen, wenn… | I2C empfohlen, wenn… |
|---|---|---|
| Geschwindigkeit | Hohe Datenraten nötig sind. | Geräte mit niedriger Datenrate angebunden werden. |
| PCB-Größe | Platz für zusätzliche Leitungen vorhanden ist. | Platine sehr klein, wenige Leiterbahnen möglich. |
| Pin-Anzahl | Genug GPIOs für SS-Leitungen frei sind. | Mikrocontroller pin-begrenzt ist. |
| Stromverbrauch | Minimaler Verbrauch Priorität hat. | Etwas höherer Verbrauch akzeptabel ist. |
UART als Alternative
UART (Universal Asynchronous Receiver/Transmitter) ist eine physische Schaltung für serielle Punkt-zu-Punkt-Verbindungen. Es nutzt keine Master/Slave-Struktur, sondern zwei Leitungen (TX, RX) für die Kommunikation zwischen zwei Geräten. Ein eigenes Kapitel würde den Rahmen sprengen, aber UART ist die Wahl für einfache serielle Schnittstellen (z. B. zu PC, GPS, Bluetooth-Modulen).
UART-Protokoll-Interface
Fazit
Sowohl SPI als auch I2C sind in der Embedded-Welt allgegenwärtig. Viele Chips bieten sogar beide Schnittstellen an. Als Faustregel gilt:
- SPI für hohe Geschwindigkeit, Vollduplex und kurze Distanzen auf der Platine.
- I2C für pin-sparende Anbindung vieler langsamer Sensoren/Aktoren, auch über Kabel hinweg.
Haben Sie noch Fragen? Kontaktieren Sie uns gerne – wir helfen weiter.
Industrietechnik
- 7 Essentielle React-Bibliotheken, die jeder Entwickler beherrschen sollte
- Wichtiger Leitfaden zum Transformatoröl-Test für zuverlässige Stromsysteme
- Schützen Sie Ihre Motoren: Die entscheidenden Vorteile von Leitungsdrosseln (Line Reactors)
- Unverzichtbarer Leitfaden zu Schleifscheibenschutzhauben: Schutz vor Bruch & Verletzung
- 5 Schlüssel-Insights zu Mikrowerkzeugen für Präzisionsbearbeitung
- TAA-Compliance erklärt: 5 Schlüsselpunkte, die jeder Lieferant kennen muss
- 9 wesentliche Machine-Learning-Anwendungen, die Sie kennen müssen
- Kupplungsbeläge meistern: Umfassender Leitfaden für Industrieanlagen
- Wesentliche Wasserstrahl-Fachbegriffe für Profis
- Rändeln (Knurling) erklärt: Oberflächenstrukturierung für Griffsicherheit & Optik