U(S)ART (Universal Asynchronous Receiver Transmitter)
-
UART wird für allgemeine serielle Kommunikation über eine serielle Schnittstelle verwendet. Dies wird häufig bei Microprozessoren verwendet.
-
Die Kommunikation ist asynchron, dafür muss jedes Paket einzel durch den Identifikator (START Bit) synchronisiert werden.
-
Im Gegensatz zu SPI hat UART nur zwei Leitungen.
-
Die Sendefrequenz muss vor dem Verbindungsaufbau bekannt sein. Sender und Empfänger haben eine eigene CLK, die aber die gleiche Frequenz hat.
-
Paritymode (even / odd) muss ebenfalls vor dem Verbindungsaufbau bekannt sein.
Protokoll
- IDLE Zustand: HIGH
- Bits werden auf der steigenden Flanke von CLK gelesen.
- Leitung nach LOW ziehen
- 5-8 Datenbits senden (LSB first)
- Parity senden
- Even / Gerade Parity: (Wenn Anzahl 1=gerade, dann parity = 0)
- Odd / Ungerade Parity: (Wenn Anzahl 1=ungerade, dann parity = 1)
- None => keine
- mark => HIGH
- space => LOW
Eigenschaften
Transmission Rate (Baud Rate)
Gibt an, wie viele Symbole pro Sekunde gesendet / empfangen werden sollen
Typische Werte sind:
- 2400
- 4800
- 9600
- 19200
- 38400
- 57600
- 115200
Anzahl an Datenbits
- 5
- 6
- 7
- 8
Anzahl an stop bits
- 1
- 1.5
- 2
Parity
- none
- mark (logic HIGH)
- space (logic LOW)
- even
- odd
CPOL=0,CPHA=0
CPOL=0,CPHA=1
CPOL=1,CPHA=0
CPOL=1,CPHA=1
RS-485
- Braucht 4 Leitungen, jeh zwei zum Senden / Empfangen
- Signale auf den 2 Leitungen sind gegenseitig gespiegelt, was weniger anfällig zu noice (Fremdspannungen) auf Leitungen ist.
I2C
- Bidirektional 2 Wire
- Mit CLK (SCL)
- Daten werden auf SDA gesendet
- Synchron, half duplex
- Jedes Gerät auf dem Bus, hat eine einzigartige Adresse
- Multi Master möglich
Protokoll
1. START
- SCL wird auf HIGH gezogen
- SDA wird nach unten gezogen
- 1 Bit=LOW wird auf SCL gesendet, damit wird der BUS in den BUSY Mode gesetzt.
2. Adresse + Richtung senden
-
7 Bits für die Slave Adresse
-
Richtung
- 0: Write (Master -> Slave, Slave=Empfänger)
- 1: Read (Slave -> Master, Master=Empfänger)
-
Nicht verwirren lassen, die Kästen auf SDA sagen jediglich, dass da ein Bit ist.
3. ACK von Slave
- Der Slave zieht die SDA Leitung zu LOW.
- Macht dies der Slave nicht, so wird die Kommunikation beendet (STOP)
4. Daten von Transmitter
- Der Sender gibt 1 Byte auf den Bus aus
- Der Empfänger sendet ein ACK Signal auf SDA
- Der Sender kann erneut Daten senden
- Sendet der Empfänger kein ACK, so schreibt der Sender auch keine weitere Daten mehr auf den SDA
STOP
- Master zeiht SDA von LOW zu HIGH