- Arten von Kommunikationsprotokollen
- Übertragungsmodi in der seriellen Kommunikation
- Uhrensynchronisation
- Andere Begriffe im Zusammenhang mit serieller Kommunikation
- Synchrone serielle Protokolle
- Asynchrone serielle Protokolle
- Fazit
Bevor wir mit seriellen Kommunikationsprotokollen beginnen, teilen wir die Terminologie in drei Teile. Die Kommunikation ist eine sehr bekannte Terminologie, die den Informationsaustausch zwischen zwei oder mehr Medien beinhaltet. In eingebetteten Systemen bedeutet Kommunikation den Datenaustausch zwischen zwei Mikrocontrollern in Form von Bits. Dieser Austausch von Datenbits im Mikrocontroller erfolgt durch einen Satz definierter Regeln, die als Kommunikationsprotokolle bekannt sind. Wenn nun die Daten in Reihe, dh nacheinander, gesendet werden, wird das Kommunikationsprotokoll als serielles Kommunikationsprotokoll bezeichnet. Insbesondere werden die Datenbits nacheinander sequentiell über den Datenbus oder Kommunikationskanal in der seriellen Kommunikation übertragen.
Arten von Kommunikationsprotokollen
In der digitalen Elektronik stehen verschiedene Arten der Datenübertragung zur Verfügung, z. B. serielle Kommunikation und parallele Kommunikation. In ähnlicher Weise werden die Protokolle in zwei Typen unterteilt, wie z. B. Serial Communication Protocol und Parallel Communication Protocols. Beispiele für parallele Kommunikationsprotokolle sind ISA, ATA, SCSI, PCI und IEEE-488. In ähnlicher Weise gibt es mehrere Beispiele für serielle Kommunikationsprotokolle wie CAN, ETHERNET, I2C, SPI, RS232, USB, 1-Wire und SATA usw.
In diesem Artikel werden die verschiedenen Arten von seriellen Kommunikationsprotokollen erläutert. Serielle Kommunikation ist der am weitesten verbreitete Ansatz zur Übertragung von Informationen zwischen Datenverarbeitungsperipheriegeräten. Jedes elektronische Gerät, egal ob es sich um einen Personal Computer (PC) oder ein Mobilgerät handelt, wird seriell kommuniziert. Das Protokoll ist die sichere und zuverlässige Form der Kommunikation mit einer Reihe von Regeln, die vom Quellhost (Sender) und vom Zielhost (Empfänger) angesprochen werden, ähnlich wie bei der parallelen Kommunikation.
Übertragungsmodi in der seriellen Kommunikation
Wie bereits oben erwähnt, werden bei der seriellen Kommunikation Daten in Form von Bits, dh Binärimpulsen, gesendet, und es ist bekannt, dass Binär Eins die Logik HIGH und Null die Logik LOW darstellt. Abhängig von der Art des Übertragungsmodus und der Datenübertragung gibt es verschiedene Arten der seriellen Kommunikation. Die Übertragungsmodi werden in Simplex, Halbduplex und Vollduplex klassifiziert.
Simplex-Methode:
Bei der Simplex-Methode kann entweder das Medium, dh der Sender oder der Empfänger, gleichzeitig aktiv sein. Wenn also der Absender die Daten überträgt, kann der Empfänger nur akzeptieren und umgekehrt. Die Simplex-Methode ist also eine Einweg-Kommunikationstechnik. Die bekannten Beispiele für Simplex-Verfahren sind Fernsehen und Radio.
Halbduplex-Methode:
Bei der Halbduplexmethode können sowohl Sender als auch Empfänger aktiv sein, jedoch nicht gleichzeitig. Wenn also der Sender sendet, kann der Empfänger akzeptieren, aber nicht senden und umgekehrt. Das bekannte Beispiel für den Halbduplex ist das Internet, in dem der Benutzer eine Anfrage nach Daten sendet und diese vom Server erhält.
Vollduplex-Methode:
Bei der Vollduplexmethode können sowohl Empfänger als auch Sender gleichzeitig Daten aneinander senden. Das bekannte Beispiel ist das Mobiltelefon.
Abgesehen davon spielt für eine angemessene Datenübertragung die Uhr eine wichtige Rolle und ist eine der Hauptquellen. Eine Fehlfunktion der Uhr führt zu einer unerwarteten Datenübertragung, manchmal sogar zu Datenverlust. Daher wird die Taktsynchronisation bei Verwendung der seriellen Kommunikation sehr wichtig.
Uhrensynchronisation
Die Uhr ist für serielle Geräte unterschiedlich und wird in zwei Typen unterteilt, nämlich. Synchrone serielle Schnittstelle und asynchrone serielle Schnittstelle.
Synchrone serielle Schnittstelle:
Es ist eine Punkt-zu-Punkt-Verbindung von einem Master zu einem Slave. Bei dieser Art von Schnittstelle verwenden alle Geräte einen einzelnen CPU-Bus, um Daten und Takt gemeinsam zu nutzen. Die Datenübertragung wird mit demselben Bus schneller, um Takt und Daten gemeinsam zu nutzen. Außerdem gibt es in dieser Schnittstelle keine Nichtübereinstimmung der Baudrate. Auf der Senderseite erfolgt eine Verschiebung der Daten auf eine serielle Leitung, wobei der Takt als separates Signal bereitgestellt wird, da den Daten keine Start-, Stopp- und Paritätsbits hinzugefügt werden. Auf der Empfängerseite werden die Daten unter Verwendung der vom Sender bereitgestellten Uhr extrahiert und konvertieren die seriellen Daten zurück in die parallele Form. Die bekannten Beispiele sind I2C und SPI.
Asynchrone serielle Schnittstelle:
In der asynchronen seriellen Schnittstelle fehlt das externe Taktsignal. Die asynchronen seriellen Schnittstellen sind vor allem in Fernanwendungen zu sehen und eignen sich perfekt für die stabile Kommunikation. In der asynchronen seriellen Schnittstelle beruht das Fehlen einer externen Taktquelle auf mehreren Parametern wie Datenflusssteuerung, Fehlersteuerung, Baudratensteuerung, Übertragungssteuerung und Empfangssteuerung. Auf der Senderseite gibt es eine Verschiebung von parallelen Daten auf die seriellen Leitung eigenen Clock. Außerdem werden die Start-, Stopp- und Paritätsprüfbits hinzugefügt. Auf der Empfängerseite extrahiert der Empfänger die Daten mit seiner eigenen Uhr und wandelt die seriellen Daten nach dem Entfernen der Start-, Stopp- und Paritätsbits wieder in die parallele Form um. Die bekannten Beispiele sind RS-232, RS-422 und RS-485.
Andere Begriffe im Zusammenhang mit serieller Kommunikation
Abgesehen von der Taktsynchronisation sind bei der seriellen Datenübertragung bestimmte Dinge zu beachten, z. B. Baudrate, Datenbitauswahl (Framing), Synchronisation und Fehlerprüfung. Lassen Sie uns diese Begriffe kurz diskutieren.
Baudrate: Die Baudrate ist die Rate, mit der die Daten in Form von Bits pro Sekunde (bps) zwischen Sender und Empfänger übertragen werden. Die am häufigsten verwendete Baudrate ist 9600. Es gibt jedoch auch andere Auswahlmöglichkeiten für die Baudrate, z. B. 1200, 2400, 4800, 57600, 115200. Je höher die Baudrate, desto mehr Daten werden gleichzeitig übertragen. Auch für die Datenkommunikation muss die Baudrate für Sender und Empfänger gleich sein.
Framing: Framing bezieht sich auf die Anzahl der Datenbits, die vom Sender zum Empfänger gesendet werden sollen. Die Anzahl der Datenbits ist bei Anwendung unterschiedlich. Die meisten Anwendungen verwenden 8 Bit als Standarddatenbits, können jedoch auch als 5, 6 oder 7 Bit ausgewählt werden.
Synchronisation: Synchronisationsbits sind wichtig, um einen Datenblock auszuwählen. Es teilt den Anfang und das Ende der Datenbits mit. Der Sender setzt Start- und Stoppbits für den Datenrahmen und der Empfänger identifiziert ihn entsprechend und führt die weitere Verarbeitung durch.
Fehlerkontrolle: Die Fehlerkontrolle spielt bei der seriellen Kommunikation eine wichtige Rolle, da viele Faktoren das Rauschen in der seriellen Kommunikation beeinflussen und hinzufügen. Um diesen Fehler zu beseitigen, werden die Paritätsbits verwendet, bei denen die Parität auf gerade und ungerade Parität prüft. Wenn der Datenrahmen also die gerade Anzahl von Einsen enthält, wird er als gerade Parität bezeichnet und das Paritätsbit im Register wird auf 1 gesetzt. Wenn der Datenrahmen eine ungerade Anzahl von Einsen enthält, wird er als ungerade Parität bezeichnet und löscht die ungerades Paritätsbit im Register.
Das Protokoll ist wie eine gemeinsame Sprache, mit der das System die Daten versteht. Wie oben beschrieben, ist das serielle Kommunikationsprotokoll in Typen unterteilt, dh synchron und asynchron. Nun werden beide im Detail besprochen.
Synchrone serielle Protokolle
Die synchronen seriellen Protokolle wie SPI, I2C, CAN und LIN werden in verschiedenen Projekten verwendet, da sie eine der besten Ressourcen für integrierte Peripheriegeräte darstellen. Dies sind auch die weit verbreiteten Protokolle in Hauptanwendungen.
SPI-Protokoll
Die Serial Peripheral Interface (SPI) ist eine synchrone Schnittstelle, über die mehrere SPI-Mikrocontroller miteinander verbunden werden können. In SPI sind separate Drähte für Daten und Taktleitung erforderlich. Auch die Uhr ist nicht im Datenstrom enthalten und muss als separates Signal geliefert werden. Das SPI kann entweder als Master oder als Slave konfiguriert werden. Die vier grundlegenden SPI-Signale (MISO, MOSI, SCK und SS), Vcc und Ground sind Teil der Datenkommunikation. Es werden also 6 Drähte benötigt, um Daten vom Slave oder Master zu senden und zu empfangen. Theoretisch kann der SPI eine unbegrenzte Anzahl von Slaves haben. Die Datenkommunikation wird in SPI-Registern konfiguriert. Der SPI kann eine Geschwindigkeit von bis zu 10 Mbit / s liefern und ist ideal für die Hochgeschwindigkeitsdatenkommunikation.
Die meisten Mikrocontroller bieten integrierte Unterstützung für SPI und können direkt mit SPI-unterstützten Geräten verbunden werden:
- SPI-Kommunikation mit dem PIC-Mikrocontroller PIC16F877A
- Verwendung der SPI-Kommunikation im STM32-Mikrocontroller
- Verwendung von SPI in Arduino: Kommunikation zwischen zwei Arduino-Boards
I2C Serielle Kommunikation
Zweizeilige Kommunikation zwischen integrierten Schaltkreisen (I2C) zwischen verschiedenen ICs oder Modulen, wobei zwei Leitungen SDA (Serial Data Line) und SCL (Serial Clock Line) sind. Beide Leitungen müssen über einen Pull-up-Widerstand an eine positive Versorgung angeschlossen werden. I2C kann eine Geschwindigkeit von bis zu 400 Kbit / s liefern und verwendet ein 10-Bit- oder 7-Bit-Adressierungssystem, um auf ein bestimmtes Gerät am i2c-Bus abzuzielen, sodass bis zu 1024 Geräte angeschlossen werden können. Es verfügt über eine Kommunikation mit begrenzter Länge und ist ideal für die Kommunikation an Bord. I2C-Netzwerke sind einfach einzurichten, da nur zwei Drähte verwendet werden und neue Geräte einfach an die beiden gemeinsamen I2C-Busleitungen angeschlossen werden können. Wie bei SPI verfügen Mikrocontroller im Allgemeinen über I2C-Pins, um jedes I2C-Gerät anzuschließen:
- Verwendung der I2C-Kommunikation im STM32-Mikrocontroller
- I2C-Kommunikation mit dem PIC-Mikrocontroller PIC16F877
- Verwendung von I2C in Arduino: Kommunikation zwischen zwei Arduino-Boards
USB
USB (Universal Serial Bus) ist ein weit verbreitetes Protokoll mit verschiedenen Versionen und Geschwindigkeiten. Maximal 127 Peripheriegeräte können an einen einzelnen USB-Host-Controller angeschlossen werden. USB fungiert als "Plug and Play" -Gerät. Der USB wird in fast allen Geräten wie Tastaturen, Druckern, Mediengeräten, Kameras, Scannern und Mäusen verwendet. Es ist für eine einfache Installation, schnellere Datenbewertung, weniger Verkabelung und Hot-Swapping ausgelegt. Es hat die sperrigeren und langsameren seriellen und parallelen Ports ersetzt. USB verwendet Differenzsignale, um Interferenzen zu reduzieren und eine Hochgeschwindigkeitsübertragung über große Entfernungen zu ermöglichen.
Ein Differenzbus besteht aus zwei Drähten, von denen einer die übertragenen Daten und der andere sein Komplement darstellt. Die Idee ist, dass die "durchschnittliche" Spannung an den Drähten keine Informationen enthält, was zu weniger Störungen führt. Bei USB dürfen die Geräte eine bestimmte Menge Strom verbrauchen, ohne den Host zu fragen. USB verwendet nur zwei Drähte für die Datenübertragung und ist schneller als die serielle und parallele Schnittstelle. USB-Versionen unterstützen verschiedene Geschwindigkeiten wie 1,5 Mbit / s (USB v1.0), 480 Mbit / s (USB 2.0) und 5 Gbit / s (USB v3.0). Die Länge des einzelnen USB-Kabels kann ohne Hub bis zu 5 Meter und mit Hub bis zu 40 Meter betragen.
KÖNNEN
Das Controller Area Network (CAN) wird beispielsweise in der Automobilindustrie verwendet, um die Kommunikation zwischen Steuergeräten (Motorsteuereinheiten) und Sensoren zu ermöglichen. Das CAN-Protokoll ist robust, kostengünstig und nachrichtenbasiert und deckt viele Anwendungen ab - z. B. Autos, LKWs, Traktoren, Industrieroboter. Das CAN-Bus-System ermöglicht eine zentrale Fehlerdiagnose und -konfiguration über alle Steuergeräte hinweg. CAN-Nachrichten werden über IDs priorisiert, sodass die IDs mit der höchsten Priorität nicht unterbrochen werden. Jede ECU enthält einen Chip zum Empfangen aller übertragenen Nachrichten, zum Entscheiden von Relevanz und zum entsprechenden Handeln - dies ermöglicht eine einfache Änderung und Einbeziehung zusätzlicher Knoten (z. B. CAN-Bus-Datenlogger). Die Anwendungen umfassen Start / Stopp von Fahrzeugen, Kollisionsvermeidungssysteme. Die CAN-Bussysteme können eine Geschwindigkeit von bis zu 1 Mbit / s bereitstellen.
Mikrodraht
MICROWIRE ist eine serielle 3-Draht-Schnittstelle mit 3 Mbit / s, die im Wesentlichen eine Teilmenge der SPI-Schnittstelle ist. Microwire ist ein serieller E / A-Anschluss für Mikrocontroller, sodass der Microwire-Bus auch für EEPROMs und andere Peripherie-Chips verfügbar ist. Die 3 Zeilen sind SI (Serial Input), SO (SerialOutput) und SK (Serial Clock). Die serielle Eingangsleitung (SI) zum Mikrocontroller, SO ist die serielle Ausgangsleitung und SK ist die serielle Taktleitung. Daten werden an der fallenden Flanke von SK herausgeschoben und an der ansteigenden Flanke bewertet. SI wird an der ansteigenden Flanke von SK verschoben. Eine zusätzliche Buserweiterung für MICROWIRE heißt MICROWIRE / Plus. Der Hauptunterschied zwischen den beiden Bussen scheint darin zu bestehen, dass die MICROWIRE / Plus-Architektur innerhalb des Mikrocontrollers komplexer ist. Es unterstützt Geschwindigkeiten von bis zu 3 Mbit / s.
Asynchrone serielle Protokolle
Der asynchrone Typ serieller Protokolle ist sehr wichtig, wenn es um zuverlässige Datenübertragung über größere Entfernungen geht. Für die asynchrone Kommunikation ist keine Zeitschaltuhr erforderlich, die beiden Geräten gemeinsam ist. Jedes Gerät hört unabhängig voneinander digitale Impulse ab und sendet sie, die Datenbits mit einer vereinbarten Rate darstellen. Asynchrone serielle Kommunikation wird manchmal als Transistor-Transistor Logic (TTL) -Serial bezeichnet, wobei der Hochspannungspegel logisch 1 ist und die Niederspannung logisch 0 entspricht. Fast jeder Mikrocontroller auf dem heutigen Markt verfügt über mindestens einen universellen asynchronen Empfänger. Sender (UART) für die serielle Kommunikation. Die Beispiele sind RS232, RS422, RS485 usw.
RS232
Der RS232 (Recommended Standard 232) ist ein sehr verbreitetes Protokoll zum Anschließen verschiedener Peripheriegeräte wie Monitore, CNCs usw. Der RS232 wird mit männlichen und weiblichen Anschlüssen geliefert. Der RS232 ist eine Punkt-zu-Punkt-Topologie mit maximal einem angeschlossenen Gerät und deckt Entfernungen von bis zu 15 Metern bei 9600 Bit / s ab. Informationen über die RS-232-Schnittstelle werden digital durch logische 0 und 1 übertragen. Die logische "1" (MARK) entspricht einer Spannung im Bereich von -3 bis -15 V. Die logische "0" (SPACE) entspricht a Spannung im Bereich von +3 bis +15 V. Es wird im DB9-Anschluss mit 9 Pinbelegungen wie TxD, RxD, RTS, CTS, DTR, DSR, DCD, GND geliefert.
RS422
Der RS422 ähnelt dem RS232, der das gleichzeitige Senden und Empfangen von Nachrichten auf separaten Leitungen ermöglicht, jedoch ein Differenzsignal verwendet. Im RS-422-Netzwerk kann es nur ein Sendegerät und bis zu 10 Empfangsgeräte geben. Die Datenübertragungsgeschwindigkeit in RS-422 hängt von der Entfernung ab und kann zwischen 10 kbit / s (1200 m) und 10 mbit / s (10 m) variieren. Die RS-422-Leitung besteht aus 4 Drähten für die Datenübertragung (2 verdrillte Drähte für die Übertragung und 2 verdrillten Drähten für den Empfang) und einem gemeinsamen GND-Erdungskabel. Die Spannung auf den Datenleitungen kann im Bereich von -6 V bis +6 V liegen. Die logische Differenz zwischen A und B ist größer als +0,2 V. Logisch 1 entspricht der Differenz zwischen A und B kleiner als -0,2 V. Der RS-422-Standard definiert keinen bestimmten Steckertyp, normalerweise kann es sich um einen Klemmenblock oder einen DB9-Steckverbinder handeln.
RS485
Da RS485 eine Mehrpunkttopologie verwendet, wird es am häufigsten in der Industrie verwendet und ist ein von der Industrie bevorzugtes Protokoll. RS422 kann 32 Leitungstreiber und 32 Empfänger in unterschiedlichen Konfigurationen verbinden, jedoch mit Hilfe zusätzlicher Repeater und Signalverstärker bis zu 256 Geräte. Der RS-485 definiert keinen bestimmten Steckertyp, ist jedoch häufig ein Klemmenblock oder ein DB9-Steckverbinder. Die Betriebsgeschwindigkeit hängt auch von der Länge der Leitung ab und kann bei 10 Metern 10 Mbit / s erreichen. Die Spannung an den Leitungen liegt im Bereich von -7 V bis +12 V. Es gibt zwei Arten von RS-485, z. B. den Halbduplexmodus RS-485 mit 2 Kontakten und den Vollduplexmodus RS-485 mit 4 Kontakten. Weitere Informationen zur Verwendung von RS485 mit anderen Mikrocontrollern finden Sie unter folgenden Links:
- RS-485 MODBUS Serielle Kommunikation mit Arduino UNO als Slave
- RS-485 Serielle Kommunikation zwischen Raspberry Pi und Arduino Uno
- RS485 Serielle Kommunikation zwischen Arduino Uno und Arduino Nano
- Serielle Kommunikation zwischen STM32F103C8 und Arduino UNO über RS-485
Fazit
Serielle Kommunikation ist eines der weit verbreiteten Kommunikationsschnittstellensysteme in der Elektronik und in eingebetteten Systemen. Die Datenraten können für verschiedene Anwendungen unterschiedlich sein. Die seriellen Kommunikationsprotokolle können bei solchen Anwendungen eine entscheidende Rolle spielen. Die Auswahl des richtigen seriellen Protokolls wird daher sehr wichtig.