I2C vs. SPI:Unterschiede, die Sie kennen sollten
Entwerfen Sie ein Projekt und es ist entscheidend, zwischen I2C und SPI zu wählen? Sie wissen aber nicht, welchen Sie wählen sollen? Wenn ja, helfen wir Ihnen bei der Entscheidung, welches für Ihr Projekt besser geeignet ist.
Zunächst einmal sind I2C und SPI „Low-End“-Protokolle. Aber sie sind einfach zu verwenden und funktionieren perfekt für die Kommunikation zwischen Chips auf Ihrer Leiterplatte.
Die Auswahl des falschen Protokolls für Ihr Projekt kann jedoch zu unerwünschten Ergebnissen führen. Trotzdem sind wir hier, um Ihnen zu helfen, den Unterschied zwischen diesen beiden ähnlichen Protokollen zu verstehen.
Sind Sie bereit? Fangen wir an!
Was ist ein SPI-Protokoll?
In den 1980er Jahren entwickelte Motorola das SPI-Protokoll, um die Kommunikation zwischen den damaligen Mikrocontrollern mit anderen Peripheriegeräten wie EEPROM herzustellen.
EEPROM
Das SPI-Protokoll verwendet also vier Signalleitungen für die Kommunikation zwischen Teilen. Es ist jedoch wichtig zu beachten, dass diese nicht die Erd- und Stromleitungen enthalten. Hier sind die vier aktiven Signalleitungen:
- SS:Slave-Select-Leitung (gesteuert vom Master-SPI)
- MOSI:Master Out Slave In (gesteuert vom Master-SPI)
- SCLK:Serial Clock (gesteuert vom Master-SPI)
- MISO:Master In Slave Out (gesteuert vom Master-SPI-Gerät)
In diesem Sinne ermöglichen die vier Leitungen einem Master-SPI (Steuergerät) die Kommunikation mit einem Slave-SPI (Peripheriegerät).
SPI-Protokollschnittstelle
Darüber hinaus können Sie nur ein Controller-Gerät an einem SPI-Bus haben. Die Anzahl der Peripheriegeräte, die Sie hinzufügen können, ist jedoch unbegrenzt. Außerdem bedeutet das Hinzufügen weiterer Peripheriegeräte eine Erhöhung der SS-Leitungen. Daher ist hier eine Veranschaulichung, wie Sie drei separate SS-Leitungen verwenden können, um verschiedene Peripheriegeräte zu steuern.
SPI-Protokollschnittstelle mit mehreren versklavten Personen
Wenn der Master-SPI mit den Peripheriegeräten kommunizieren möchte, indem er Daten sendet oder empfängt, zieht er außerdem die passende SS-Leitung. Folglich wird die Linie unten sein. Daher wird die SCLK-Leitung aktiviert und ist bei einer festgelegten Frequenz hoch und niedrig.
Zusätzlich verwendet der Master-SPI die MISO-Leitung, um Daten und Proben gleichzeitig zu senden. Denken Sie auch daran, dass jeweils nur eine Kommunikation zwischen einem Peripheriegerät und dem Master-SPI stattfinden kann.
Was ist ein I2C
Alternativ entwickelte Philips Semiconductors (jetzt NXP Semiconductors) 1982 das erste I2C-Protokoll, um die Kommunikation zwischen Chips auf einer Leiterplatte zu systematisieren.
Im Gegensatz zu seinem SCI-Pendant hat das I2C-Protokoll zwei Kommunikationsleitungen – mit Ausnahme der Masse- und Stromleitungen. Diese Zeilen beinhalten:
- SDA:Serielle Datenleitung
- SCL:Serielle Taktleitung
Sie können also eine beliebige Anzahl von Enslaver- und Agent-Geräten an einen Bus anschließen. Außerdem müssen Sie sowohl die SCL- als auch die SDA-Leitungen als Open-Drain-Leitungen belassen. Infolgedessen haben Ihre Geräte jeweils nur eine niedrige Leitung. Außerdem benötigen Sie einen Pull-up-Widerstand an Ihren Rohren. Auf diese Weise können Sie Ihre Schnur wieder hochziehen.
I2C-Protokollschnittstelle
Aufgrund des Open-Drain-Designs des I2C-Protokolls können Sie mehrere Master auf demselben Bus verwenden. Wenn jedoch zwei Steuergeräte gleichzeitig mit der Kommunikation beginnen, kommt es zu einer Arbitrierung, die dazu führt, dass eines der Geräte die Übertragung beendet.
Währenddessen überwachen die Controller-Vorrichtungen die SDA-Leitung, während eine Kommunikation stattfindet. Wenn also ein Gerät feststellt, dass die SDA-Leitung während des Sendens niedrig ist, hört es auf zu senden. Und dies ermöglicht einem anderen Controller-Gerät zu kommunizieren.
Außerdem sendet das Controller-I2C-Gerät eine START-Bedingung, um die Kommunikation einzuleiten. Folglich ist die SDA-Leitung niedrig, während die SCL-Leitung hoch bleibt.
Dann überträgt das Steuergerät eine 7-Bit-Adresse des Empfängers, an den es senden möchte, und ein Lesebit (1) oder Schreibbit (0). An diesem Punkt antwortet ein Gerät auf dem Bus nur, wenn es eine passende Adresse mit 7-Bit-Rate hat, indem es die SDA-Leitung niedrig macht.
Unterschiede zwischen I2C und SPI
Sowohl SPI als auch I2C sind ähnlich, da sie beide „Low-End“-Protokolle sind. Außerdem fehlen beiden Protokollen die Geschwindigkeit und andere Funktionen, die ihre schwergewichtigen Cousins (SATA, Ethernet, USB und andere) aufweisen.
Aber wenn es um die Arbeitsprinzipien und Funktionen geht. Sehen wir uns die Unterschiede zwischen den beiden Protokollen genauer an.
USB-Anschluss
Zunächst einmal können Sie im SPI-Protokoll vier verschiedene Modi einstellen, um zu bestimmen, wie die Uhr funktioniert. Und damit die Kommunikation funktioniert, müssen die Enslaver- und Agent-Geräte dasselbe Modell verwenden.
- Modus 0:Daten werden an einer steigenden Taktflanke abgetastet, Takt ist im Leerlauf niedrig
- Modus 1:Daten werden bei fallender Taktflanke abgetastet, Takt ist im Leerlauf niedrig
- TMode 2:Daten auf fallender Taktflanke abgetastet, Takt im Leerlauf hoch
- Modus 3:Daten werden an einer steigenden Taktflanke abgetastet, Takt ist im Leerlauf hoch
Darüber hinaus können SPI-Datenübertragungsgeschwindigkeiten über 10 Mbit/s hinausgehen, was es perfekt für die Übertragung großer Datenmengen macht. Außerdem finden Sie SPI-Protokolle auf Sensoren mit schnellen Aktualisierungsraten wie LCDs und Beschleunigungsmessern.
LCD
Alternativ kann der I2C jeweils nur Daten im Ein-Byte-Paket senden. Außerdem muss das empfangende Peripheriegerät jedes Byte mit einem ACK-Bit bestätigen. Darüber hinaus verfügt das I2C-Protokoll über drei Modi mit unterschiedlichen Datenübertragungsgeschwindigkeiten.
ACK-Bit
Das Standardmodell erreicht maximal 100 Kbit/s, der Fast-Modus liegt bei 400 Kbit/s und der High-Speed-Modus bei 3,4 Mbit/s. Daher ist das I2C-Protokoll deutlich langsamer als das SPI-Protokoll. Daher funktionieren I2C-Protokolle am besten in Temperatursensoren und Analog-Digital-Wandlern.
Temperatursensoren
Vergleich von I2C und SPI
Die folgende Tabelle zeigt weiter die signifikanten Unterschiede zwischen I2C und SPI:
Funktion | SPI | I2C |
Pin-Laufwerk | Push-Pull-Modus | Open-Drain-Modus |
Max. Geschwindigkeit | Keine (aber Sie können 10–100 Mbit/s finden) | 100 Kbit/s (Standardmethode)400 Kbit/s (Fast Way)3,4 Mbit/s (Hochgeschwindigkeitsmodus) |
Multimaster | Nein | Ja |
Signalleitungen | 4 (zusätzliche Geräte fügen zusätzliche Leitungen hinzu) | 2 |
Nein. von Peripheriegeräten | Die Anzahl der Pins, die für SS-Leitungen auf dem Master-SPI verfügbar sind, ist die einzige Grenze für die Anzahl der Peripheriegeräte, die Sie haben können | max. von 112 mit 7-Bit-Adressierung |
Flusskontrolle | Nein | Ja |
SPI vs. I2C-Protokolle – Vor- und Nachteile
SPI
Vorteile
- Die SPI-Protokolle verbrauchen etwas Strom
- Es unterstützt auch Hochgeschwindigkeits-Vollduplex-Kommunikation
Nachteile
- Es gibt verschiedene Versionen und angepasste Varianten, die Kompatibilitätsprobleme verursachen
- Sie benötigen zusätzliche Signalleitungen, um mit mehreren Peripheriegeräten auf demselben Bus zu kommunizieren
- Unterstützt nur Kurzstreckenkommunikation. Sie können keine Daten auf Geräte auf separaten Boards übertragen
I2C
Vorteile
- Sie benötigen keine zusätzlichen Leitungen, um mehrere Geräte auf demselben Bus zu steuern
- Kann Daten an andere PCBs übertragen, jedoch mit geringer Übertragungsgeschwindigkeit
- Hat eine geringere Geräuschempfindlichkeit
- Kann Daten über längere Distanzen übertragen
- Kostengünstiger als SPI
Nachteile
- Übertragungsgeschwindigkeiten sind langsamer als SPI
- Verwendet mehr Strom als das SPI-Protokoll
- Das Versagen eines Geräts, den Kommunikationsbus freizugeben, kann das I2C-Protokoll blockieren
Faktoren, die Sie bei der Wahl zwischen SPI und I2C berücksichtigen sollten
Die Auswahl des besten Protokolls für Ihr Projekt geht über den Preis hinaus. Also, hier sind ein paar Dinge, die Sie beachten sollten, bevor Sie Ihre Wahl treffen:
Limitierte Pins
Hier sind die Vor- und Nachteile sowohl des SPI- als auch des I2C-Protokolls:Wenn Sie nicht gerne Mikrocontroller mit mehr als 100 Pins verwenden, ist dies ein entscheidender Faktor, den Sie berücksichtigen sollten. In diesem Fall sollten Sie sich für ein Protokoll entscheiden, das weniger Leitungen für die Kommunikation benötigt.
Macht
Abhängig von Ihrem Design möchten Sie möglicherweise den Stromverbrauch minimieren oder maximieren. Sie müssen also sicherstellen, dass Sie ein Protokoll wählen, das Ihren Verbrauchsanforderungen am besten entspricht.
Geschwindigkeit
Bei der Datenübertragung in enormen Mengen kommt es auf jede Mikrosekunde an. Wenn Sie also Geschwindigkeit brauchen, entscheiden Sie sich für ein Protokoll, das Ihren Geschwindigkeitsstandards entspricht.
PCB-Größe
Es ist wichtig, die Größe Ihrer Leiterplatte zu berücksichtigen, bevor Sie sich für ein Protokoll entscheiden. Folglich erhöhen Sie Ihre Chancen, wünschenswerte Ergebnisse zu erzielen.
Die Wahl zwischen SPI und I2C
Hier sind die Merkmale der einzelnen Protokolle, die Ihnen dabei helfen, die beste Entscheidung für Ihr Design zu treffen:
Funktionen | SPI | I2C |
Geschwindigkeit | Wenn Ihr Design Übertragungen mit höherer Geschwindigkeit erfordert, ist das SPI-Protokoll die beste Wahl. | Sie können I2C für Designs für langsame Geräte wählen |
PCB-Größe | Wenn Sie sich nicht um die Größe Ihrer Leiterplatte kümmern, können Sie weder mit SPI noch mit I2C etwas falsch machen. | Wenn Ihr PCB eine kleinere Größe und weniger Leiterbahnen hat, sollten Sie die Wahl des I2C in Erwägung ziehen |
Limitierte Pins | Entscheiden Sie sich für das SPI-Protokoll, wenn es Ihnen nichts ausmacht, zusätzliche Leitungen für die Kommunikation hinzuzufügen. | Wenn Sie mit vielen Tracks nicht zufrieden sind, ist I2C die ideale Wahl. |
Macht | Verwenden Sie für Geräte mit geringerem Stromverbrauch das SPI-Protokoll | Verwenden Sie für Geräte mit höherem Stromverbrauch das I2C-Protokoll |
UART verstehen
UARTs sind physikalische Schaltungen in einem integrierten oder Mikrocontroller, die eine serielle Kommunikation zwischen Geräten in eingebetteten Systemen herstellen.
Auch bei der UART-Kommunikation findet immer eine direkte Kommunikation zwischen dem UART-Sender und dem UART-Empfänger statt.
UART vs. I2C vs. SPI
Im Gegensatz zu anderen Kommunikationsprotokollen wie SPI und I2C ist UART rein physikalisch. Außerdem verwendet es kein Master/Slave-Paradigma zur Kommunikation. Stattdessen verwendet der Mikrocontroller zwei UART-Geräte zum Senden und Empfangen von Daten. Außerdem benötigen Sie nur zwei Drähte für die UART-Kommunikation. Und die Kabel helfen dabei, Daten vom Tx-Pin des Senders zum Rx-Pin des Empfängers zu übertragen.
UART-Protokollschnittstelle
Aufrundung
In der Realität werden die SPI- und I2C-Protokolle in verschiedenen Anwendungen verwendet. Manchmal finden Sie sich möglicherweise mit Geräten wieder, die über SPI- und I2C-Schnittstellen auf einem Chip verfügen. Sie müssen sich also nicht zwischen den beiden entscheiden.
Wenn Sie sich jedoch zwischen den beiden Protokollen entscheiden müssen, ist SPI besser für Projekte geeignet, die schnellere Übertragungsgeschwindigkeiten benötigen. Wenn Ihr Mikrocontroller andererseits begrenzte Pins hat, würde das I2C-Protokoll besser funktionieren.
Haben Sie Fragen? Fühlen Sie sich frei uns zu kontaktieren. Wir helfen Ihnen gerne weiter.
Industrietechnik
- 7 React-Bibliotheken, die Sie kennen sollten
- Was Sie über die Prüfung von Transformatoröl wissen sollten
- Warum Sie eine Netzdrossel verwenden sollten
- Was Sie über Schleifscheibenschutz wissen sollten
- 5 Dinge, die Sie über Mikrotools wissen sollten
- Was ist TAA-Compliance? 5 Dinge, die Sie wissen sollten
- Die 9 maschinellen Lernanwendungen, die Sie kennen sollten
- Kupplungsbelag:Alles, was Sie wissen sollten
- Grundlegende Wasserstrahlbegriffe, die Sie kennen sollten
- Was ist Rändeln? Hier ist, was Sie wissen sollten