UART, SPI und I2C sind gängige Kommunikationsprotokolle, die in eingebetteten Systemen und IoT-Geräten zur Datenübertragung zwischen integrierten Schaltkreisen, Mikrocontrollern und Sensoren verwendet werden.
UART (Universal Asynchronous Receiver/Transmitter) ist ein serielles Kommunikationsprotokoll, das eine asynchrone Vollduplex-Kommunikation zwischen zwei Geräten ermöglicht. Bei UART werden Daten bitweise nacheinander über eine einzige Kommunikationsleitung gesendet. UART erfordert nur zwei Drähte – einen Sendepin (TX) und einen Empfangspin (RX) – und lässt sich daher einfach in Hardware implementieren. Ein wesentlicher Vorteil von UART besteht darin, dass für die Synchronisierung zwischen Geräten kein Taktsignal erforderlich ist. Das sendende Gerät fügt Start- und Stoppbits hinzu, um jedes gesendete Byte einzurahmen, während das empfangende Gerät diese Bits verwendet, um Bytegrenzen zu identifizieren. UART ermöglicht hohe Datenraten von bis zu 10 Mbit/s und verfügt über integrierte Fehlerprüfungsfunktionen. Es wird häufig für serielle Konsolenschnittstellen, GPS-Module, Bluetooth-Module und andere einfache Kurzstreckenkommunikationen verwendet.
SPI (Serial Peripheral Interface) ist ein synchrones serielles Protokoll, das Vollduplex-Kommunikation ermöglicht. Es verwendet vier Drähte – Takt (SCK), Master-Ausgang/Slave-Eingang (MOSI), Master-Eingang/Slave-Ausgang (MISO) und Slave-Auswahl (SS). Die SCK-Leitung synchronisiert die Datenbewegung zwischen Geräten, während MOSI und MISO die Daten übertragen. SS ist ein aktives Low-Signal, das vom Master verwendet wird, um ein bestimmtes Slave-Gerät auszuwählen, wenn mehrere Slaves vorhanden sind. Bei SPI können sich Daten immer nur in eine Richtung bewegen, was es zu einem einfacheren Protokoll als I2C macht. SPI-Geräte arbeiten entweder im Master- oder Slave-Modus. Es unterstützt eine Hochgeschwindigkeits-Datenübertragung von bis zu 80 Mbit/s und wird häufig für die Kommunikation mit SD-Karten, Sensoren und LCD-Displays verwendet.
I2C (Inter-Integrated Circuit) ermöglicht die bidirektionale halbduplexe synchrone serielle Kommunikation zwischen integrierten Schaltkreisen. Es sind nur zwei bidirektionale Leitungen erforderlich – serielle Daten (SDA) und serielle Uhr (SCL). I2C verwendet eine Open-Collector-Verkabelung, was bedeutet, dass die SDA- und SCL-Leitungen mit Widerständen hochgezogen werden. Geräte am I2C-Bus fungieren entweder als Master oder Slave. Das Master-Gerät generiert das Taktsignal und initiiert die gesamte Kommunikation mit einem oder mehreren Slave-Geräten. Jedes Slave-Gerät verfügt über eine eindeutige Adresse am Bus, die es dem Master ermöglicht, gezielt eine Übertragung mit ihm zu initiieren. I2C unterstützt Multi-Master- und Multi-Slave-Kommunikation, was große Flexibilität bietet. Datenraten bis zu 100 kbps sind möglich. I2C wird üblicherweise für die Kommunikation mit langsameren Peripheriegeräten wie Sensoren, Motoren und EEPROMs verwendet.
Zusammenfassend lässt sich sagen, dass UART, SPI und I2C weit verbreitete serielle Kommunikationsprotokolle sind, die sich je nach Faktoren wie Geschwindigkeit, unterstützten Kommunikationsmodi, Hardwarekomplexität und Gerätekompatibilität für verschiedene Anwendungen eignen. UART ist am einfachsten zu implementieren, aber im Vergleich zu SPI und I2C auch langsamer. SPI bietet synchrone Vollduplex-Kommunikation mit hoher Geschwindigkeit, während die Unterstützung von I2C für Multi-Master es sehr vielseitig macht.