Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

SPI, I2C, UART: Kommunikationsprotokolle & ihre Anwendungen im Vergleich

Die Mikrocontroller-Entwicklung ist ein zentraler Prozess in der Elektronikmontage. Serielle Protokolle und Kommunikationsschnittstellen erleichtern diese Aufgabe erheblich. In diesem Artikel untersuchen wir die seriellen Kommunikationsprotokolle SPI, I2C und UART umfassend – ihre Eigenschaften, Vor- und Nachteile sowie typische Anwendungsbeispiele.

1. UART-Schnittstelle

Was ist UART?

SPI, I2C, UART: Kommunikationsprotokolle & ihre Anwendungen im Vergleich
Abbildung 1: UART-Protokoll auf einem Arduino

Universal Asynchronous Receiver/Transmitter (UART) ist ein serielles Kommunikationsprotokoll, das die Kommunikation zwischen einem Host und Peripheriegeräten ermöglicht. Primär dient es der seriellen Datenübertragung. Es unterstützt asynchrone Kommunikation und bidirektionale Datenübertragung.

Das einfache Protokoll nutzt zwei Datenleitungen: eine für die Übertragung (Tx) und eine für den Empfang (Rx). Üblicherweise erfolgt die Signalübertragung über digitalen Pin 0, der Empfang über digitalen Pin 1.

Zudem unterstützt es die Synchronisation der Verwaltung zwischen Computer und externen seriellen Geräten.

Funktionsweise

SPI, I2C, UART: Kommunikationsprotokolle & ihre Anwendungen im Vergleich
Abbildung 2: Ein selbstgebautes USB-UART-Board

UART verwaltet die Signalkommunikation zwischen zwei Geräten über drei Betriebsarten:

Nach der Verbindung erfolgt der Datentransfer von der sendenden UART-Datenleitung zur empfangenden UART nach folgendem Prinzip:

  1. Die sendende UART wandelt parallele Daten des Master-Geräts in serieller Form für die Übertragung zur empfangenden UART um. Die empfangende UART wandelt die seriellen Daten zurück in parallele Form für das empfangende Gerät.
  2. Da UART asynchron arbeitet, gibt es keine Taktsignale. Stattdessen erzeugt die UART Start- und Stopp-Bits, um Anfang und Ende einer Nachricht zu kennzeichnen.
  3. Beide UARTs müssen mit der gleichen Baudrate (Übertragungsgeschwindigkeit) arbeiten. Ein Unterschied von mehr als 10 % macht die Daten unbrauchbar.

UART-Arbeitsprotokoll

Datenübertragung und -empfang

  1. Zur Übertragung empfängt die sendende UART Daten von einem Datenbus (z. B. CPU).
  2. Sie fügt drei Bits hinzu: Startbit, Paritätsbit und Stoppbit. Diese bilden ein Datenpaket, das über den TX-Pin zur empfangenden UART gesendet wird.
  3. Die Übertragung endet, sobald die Daten in der sendenden UART erschöpft sind.

Interrupt-Steuerung

Daten-Interrupts ermöglichen automatisches Senden von Pufferinhalten. Ein Interrupt wird ausgelöst bei:

FIFO-Betrieb

SPI, I2C, UART: Kommunikationsprotokolle & ihre Anwendungen im Vergleich
Abbildung 3: UART-Schnittstelle auf Arduino

Stellaris-Familie UART-Module verfügen über zwei 16-Byte-FIFOs – eines für Empfang, eines für Übertragung. Sie sind in verschiedenen Tiefen konfigurierbar (1/8, 1/4, 1/2 Tiefe etc.) für unterschiedliche Interrupts.

Funktionsweise des Sende-FIFO

  1. Datenübertragung beginnt nach Dateneingabe. Da dies zeitaufwendig ist, erfolgt die Dateneingabe kontinuierlich, bis das Sende-FIFO voll ist.
  2. Bei vollem FIFO muss die Dateneingabe gestoppt werden, um Datenverlust zu vermeiden.
  3. Das Sende-FIFO sendet die Daten bitweise, bis es leer ist, und schafft dann einen freien Slot.

Funktionsweise des Empfangs-FIFO

  1. Empfangene Daten werden im Empfangs-FIFO gespeichert. Empfang und Löschung durch das Empfangs-FIFO-Programm laufen automatisch ab, sodass stets ausreichend Platz vorhanden ist.
  2. Ein Transceiver-FIFO löst CPU-Ineffizienz-Probleme und reduziert häufige UART-Transceiver-Unterbrechungen.
  3. FIFO verhindert Datenverlust, indem alle potenziellen Verlustquellen im Voraus geschlossen werden.

Loopback

UART verfügt über einen internen Loopback für Debugging und Diagnose, bei dem der RX-Eingang die gesendeten Daten empfängt.

Serielles Infrarot-Protokoll

UART enthält ein IrDA Serial Infrared (SIR) Modul als Encoder/Decoder. Es übersetzt eine halbduplexe serielle SIR-Schnittstelle und einen asynchronen UART-Datenstrom. Zudem liefert es einen decodierten Eingang und einen digital kodierten Ausgang an die UART.

Vorteile von UART

  1. Einfaches, gut dokumentiertes und leicht zu nutzendes Kommunikationsprotokoll
  2. Keine serielle Taktleitung erforderlich
  3. Paritätsbit ermöglicht Fehlererkennung

Nachteile von UART

  1. Datenrahmen-Größe auf 9 Bit begrenzt, langsame Übertragungsgeschwindigkeiten
  2. Keine Unterstützung für Multi-Master- und Multi-Slave-Systeme
  3. Zwangsbaudrate innerhalb von 10 % Toleranz als Schutz vor Datenverlust
  4. Generell langsamere Datenübertragung zwischen Geräten

UART-Beispiele in Mikrocontrollern

2. I2C-Schnittstelle

Was ist I2C?

SPI, I2C, UART: Kommunikationsprotokolle & ihre Anwendungen im Vergleich
Abbildung 4: Ein Differentialdruck-Sensor nutzt I2C

Das Inter-Integrated-Circuit (I2C) Kommunikationsprotokoll ähnelt UART. Während UART jedoch für PC-Geräte-Kommunikation gedacht ist, findet I2C Anwendung bei Sensoren und Modulen.

Der bidirektionale Zwei-Draht-Synchrone-Serialbus kann mehrere Geräte verbinden, ohne den Kommunikationspfad zu beeinträchtigen – dank Shared-Bus und Adresssystem. Dies geht jedoch mit geringerer Geschwindigkeit im Vergleich zu SPI einher. Die Geschwindigkeit hängt von externem Rauschen, Leitungsqualität und Datengeschwindigkeit ab.

Die Zwei-Draht-Schnittstelle ermöglicht den Anschluss von Low-Speed-Geräten wie EEPROMs, Analog/Digital-Wandlern und Mikrocontrollern.

Funktionsweise

Ein I2C-Protokoll nutzt zwei Leitungen: die serielle Datenleitung (SDA) und die serielle Taktleitung (SCL). SCL synchronisiert die Übertragung, SDA ist die Datenleitung für Senden und Empfangen.

Während der Übertragung initiiert das Master-Gerät die Bus-Datenübertragung und erzeugt gleichzeitig ein Taktsignal, das das sendende Gerät aktiviert. Das adressierte Gerät ist ein Slave-Gerät.

Wichtig: Master und Slave haben keine konstante Datenübertragungsrate. Ihre Beziehung basiert auf der Datenübertragungsrichtung zum Übertragungszeitpunkt.

Der einzelne Master muss den Slave vor Datenübertragung und vor Datenempfang informieren.

Für optimale Funktion muss ein Pull-Up-Widerstand an die I2C-Stromversorgung angeschlossen werden.

I2C-Arbeitsprotokoll

SPI, I2C, UART: Kommunikationsprotokolle & ihre Anwendungen im Vergleich
Abbildung 5: Ein 0,96 Zoll OLED 128x64 Display Modul IIC I2C

Datenübertragungsmethode

Der Verbindungsablauf:

  1. Der Master sendet ein Startsignal an die angeschlossenen Slaves, indem er die SDA-Leitung von High auf Low zieht, dann die SCL-Leitung von High auf Low.
  2. Der Master sendet 7-Bit- oder 10-Bit-Adressen und Read/Write-Bits an jeden Slave.
  3. Die Slaves vergleichen die Adresse mit ihrer eigenen. Bei Übereinstimmung senden sie ein ACK-Bit (SDA auf Low). Andernfalls lassen sie SDA auf High.
  4. Der Master sendet den Datenrahmen oder empfängt ihn (je nach Adressübereinstimmung). Nach vollständiger Übertragung bestätigt der Empfänger mit einem ACK-Bit.
  5. Zum Abschluss schaltet der Master SCL auf High, dann SDA auf High – Kommunikationsende.

Taktsynchronisation

Jeder Master muss sein eigenes Taktsignal in der SCL-Leitung erzeugen. In I2C-Übertragung sind Daten nur während der High-Phase des Takts gültig.

Übertragungsmodi

I2C überträgt primär über zwei Modi:

Schnellmodus (Fast Mode)

Geräte im Schnellmodus senden und empfangen mit 400 kbit/s. Ein Fast-Mode-I2C-Bus unterdrückt Glitches effektiv und verfügt über eine Flankensteuerung.

High-Speed-Modus

Ein I2C-Bus im High-Speed-Modus überträgt mit 3,4 Mbit/s – deutlich schneller als der Schnellmodus.

Vorteile von I2C

  1. Deutlich begrenzte Pin-Anzahl/Signale auch bei vielen angeschlossenen Geräten
  2. Flexibilität durch Multi-Master- und Multi-Slave-Fähigkeit
  3. Einfache Nutzung: nur zwei bidirektionale Drähte für viele Geräte
  4. Hohe Anpassungsfähigkeit, Unterstützung mehrerer Master

Nachteile von I2C

  1. Relativ langsam, Pull-Up-Widerstände erforderlich (SPI nutzt Push-Pull), Open-Drain-Design begrenzt Geschwindigkeit
  2. Widerstände beanspruchen wertvollen PCB-Platz
  3. Bei vielen Geräten erschwerte Handhabung

I2C-Beispiele in Mikrocontrollern

3. SPI-Schnittstelle

Was ist SPI?

SPI, I2C, UART: Kommunikationsprotokolle & ihre Anwendungen im Vergleich
Abbildung 6: SPI-Schnittstelle in Display-Modulen

Die Serial Peripheral Interface (SPI) ist für Mikrocontroller konzipiert. Da sie im Vollduplex arbeitet, ermöglicht sie simultanes Senden und Empfangen.

SPI ist schneller als I2C, mit einer Datenrate von mindestens 8 Bit. Das einfache Protokoll erlaubt höhere Datenraten – wichtig für Anwendungen, die Geschwindigkeit erfordern, wie Display-Module und SD-Karten.

Auch bei Anwendungen mit plötzlichen Informationsänderungen (z. B. Thermometer) ist SPI essenziell.

Funktionsweise

SPI, I2C, UART: Kommunikationsprotokolle & ihre Anwendungen im Vergleich
Abbildung 7: SD-Karten nutzen SPI

Ein SPI-Gerät arbeitet auf zwei Arten:

Theoretisch können beliebig viele Geräte angeschlossen werden; praktisch limitieren die verfügbaren Hardware-Select-Leitungen. Bei Punkt-zu-Punkt-Kommunikation entfällt Adressierung.

SPI-Arbeitsprotokoll

SPI nutzt vier Leitungen:

  1. MOSI (Master Out Slave In)
  2. MISO (Master In Slave Out)
  3. SCLK (Takt signal)
  4. NSS/CS (Slave Select)

Bei Multi-Slave-Systemen benötigt jeder Slave ein eigenes Enable-Signal – dies verkompliziert die Hardware im Vergleich zu I2C.

SPI verfügt über zwei Schieberegister für synchrone serielle Datenübertragung zwischen einem Master (z. B. CPU) und Peripheriegeräten.

Vorteile von SPI

  1. Einfach zu nutzen – kein komplexes Slave-Adressierungssystem wie bei I2C
  2. Schnellstes der drei seriellen Protokolle (schneller als UART und I2C)
  3. Keine Start-/Stopp-Bits wie bei UART – kontinuierliche Datenübertragung ohne Unterbrechung
  4. Separate MISO/MOSI-Leitungen ermöglichen simultanes Senden und Empfangen

Nachteile von SPI

  1. Viele Pin-Ports belegt – limitiert Anzahl anschliessbarer Geräte
  2. Keine definierte Flusskontrolle, kein Acknowledge-Mechanismus wie bei I2C
  3. Benötigt 4 Leitungen (vs. 2 bei UART/I2C), kein Fehlerprüfmechanismus
  4. Nur Single-Master

SPI-Beispiele in Mikrocontrollern

Vergleich: UART, I2C und SPI

SPI, I2C, UART: Kommunikationsprotokolle & ihre Anwendungen im Vergleich

Welches Protokoll ist das „beste“? UART, SPI oder I2C?

Es gibt kein überlegenes Protokoll – jedes hat spezifische Stärken und Schwächen. Wählen Sie passend zum Projekt: Für Geschwindigkeit ist SPI optimal. Für viele Geräte ohne komplexe Verdrahtung eignet sich I2C.

Fazit

Wir haben alle wesentlichen Aspekte zu UART, I2C und SPI sowie deren Übertragungsraten beleuchtet. Bei Fragen zu den Kommunikationsprotokollen stehen wir gerne zur Verfügung.

Industrietechnik

  1. MQTT vs. DDS: Das richtige M2M-Protokoll für IoT wählen
  2. Netzwerkprotokolle verstehen: Von der Physikalischen Schicht bis zu fortgeschrittener Arbitration
  3. Digitaler Speicher Grundlagen: Adressierung, Zugriff und Volatilität
  4. Wichtige Breakout-Boards für Raspberry Pi: I2C, UART, GPIO & Mehr – Kits, Header & Schutz
  5. 14 innovative Nanotechnologie-Anwendungen: Von Medizin bis Materialwissenschaft
  6. Hartlöten mit Silber erklärt: Prozess, Materialien und Anwendungen
  7. Produktionseffizienz freisetzen: Bewährte datengesteuerte Fertigungsstrategien
  8. Datenerfassung optimieren für intelligentere Entscheidungsfindung
  9. Holzarten und ihre praktischen Verwendungen: Vom Bauwesen bis zur Papierproduktion
  10. Wolfram: Historische Anwendungen und moderne Innovationen