USART, UART, RS232, USB, SPI, I2C, TTL usw. Was sind das alles und wie hängen sie zusammen?

Als unerfahrener Elektronik-Bastler habe ich diese Begriffe und mehr gehört, die überall herumgeworfen werden. Im Grunde verstehe ich, dass sie alle auf der Kommunikation zwischen Geräten, Computern, Peripheriegeräten usw.

Ich habe ein grundlegendes Verständnis dafür, wie sie alle funktionieren, aber ich werde verwirrt, wenn ich so viele von ihnen sehe, und habe Schwierigkeiten zu verstehen, wie sie miteinander in Beziehung stehen. Ist UART beispielsweise eine Teilmenge von USART? Was ist der Unterschied zwischen RS232 und seriell? Was sind die Hauptunterschiede zwischen all diesen Kommunikationsmethoden: Zuverlässigkeit, Kosten, Anwendung, Geschwindigkeit, Hardwareanforderungen?

Wenn Sie sich vorstellen können, habe ich all diese Begriffe auf Karten geschrieben, die auf dem Couchtisch verstreut sind, und ich brauche jemanden, der mir hilft, mein Verständnis zu organisieren. Verzeihen Sie mir, wenn diese Frage ein wenig vage ist, aber ich glaube wirklich, dass dies die Natur dieser Frage insgesamt ist.

Antworten (4)

Serial ist ein Überbegriff für alles, was "Time Division Multiplexed" ist, um einen teuren Begriff zu verwenden. Das bedeutet, dass die Daten zeitlich verteilt gesendet werden, meistens ein einzelnes Bit nach dem anderen. Alle Protokolle, die Sie benennen, sind serielle Protokolle.

UART, für Universal Asynchronous Receiver Transmitter, ist eines der am häufigsten verwendeten seriellen Protokolle. Es ist fast so alt wie ich und sehr einfach. Die meisten Controller haben einen Hardware-UART an Bord. Es verwendet eine einzige Datenleitung zum Senden und eine zum Empfangen von Daten. Am häufigsten werden 8-Bit-Daten wie folgt übertragen: 1 Startbit (niedriger Pegel), 8 Datenbits und 1 Stoppbit (hoher Pegel). Das Startbit mit niedrigem Pegel und das Stoppbit mit hohem Pegel bedeuten, dass es immer einen Übergang von hoch nach niedrig gibt, um die Kommunikation zu starten. Das beschreibt UART. Kein Spannungspegel, also können Sie ihn bei 3,3 V oder 5 V haben, je nachdem, was Ihr Mikrocontroller verwendet. Beachten Sie, dass sich die Mikrocontroller, die über UART kommunizieren wollen, auf die Übertragungsgeschwindigkeit, die Bitrate, einigen müssen, da sie nur die fallende Flanke der Startbits zum Synchronisieren haben. Das nennt man asynchrone Kommunikation.

Für die Kommunikation über große Entfernungen (das müssen nicht Hunderte von Metern sein) ist der 5-V-UART nicht sehr zuverlässig, deshalb wird er in eine höhere Spannung umgewandelt, typischerweise +12 V für eine "0" und -12 V für eine " 1". Das Datenformat bleibt gleich. Dann haben Sie RS-232 (was Sie eigentlich EIA-232 nennen sollten, aber niemand tut.)

Die Timing-Abhängigkeit ist einer der großen Nachteile von UART, und die Lösung ist USART für Universal Synchronous/Asynchronous Receiver Transmitter. Das kann UART, aber auch ein synchrones Protokoll. Bei Synchron werden nicht nur Daten, sondern auch ein Takt übertragen. Bei jedem Bit teilt ein Taktimpuls dem Empfänger mit, dass er dieses Bit zwischenspeichern soll. Synchrone Protokolle benötigen entweder eine höhere Bandbreite, wie im Fall der Manchester-Codierung, oder eine zusätzliche Leitung für die Uhr, wie SPI und I2C.

SPI (Serial Peripheral Interface) ist ein weiteres sehr einfaches serielles Protokoll. Ein Master sendet ein Taktsignal und verschiebt bei jedem Taktimpuls ein Bit nach außen zum Slave und ein Bit nach innen, das vom Slave kommt. Die Signalnamen lauten daher SCK für Clock, MOSI für Master Out Slave In und MISO für Master In Slave Out. Durch die Verwendung von SS-Signalen (Slave Select) kann der Master mehr als einen Slave auf dem Bus steuern. Es gibt zwei Möglichkeiten, mehrere Slave-Geräte mit einem Master zu verbinden, eine ist oben erwähnt, dh die Verwendung von Slave-Auswahl, und die andere ist Daisy-Chaining, sie verwendet weniger Hardware-Pins (Auswahlleitungen), aber die Software wird kompliziert.

I2C(Inter-Integrated Circuit, ausgesprochen „I squared C“) ist ebenfalls ein synchrones Protokoll, und es ist das erste, das wir sehen, das eine gewisse „Intelligenz“ enthält; die anderen schoben dummerweise Bits rein und raus, und das war's. I2C verwendet nur 2 Drähte, einen für die Uhr (SCL) und einen für die Daten (SDA). Das bedeutet, dass Master und Slave Daten über dieselbe Leitung senden, wiederum gesteuert vom Master, der das Taktsignal erzeugt. I2C verwendet keine separaten Slave Selects, um ein bestimmtes Gerät auszuwählen, sondern hat eine Adressierung. Das erste vom Master gesendete Byte enthält eine 7-Bit-Adresse (damit Sie 127 Geräte am Bus verwenden können) und ein Lese-/Schreibbit, das angibt, ob das/die nächste(n) Byte(s) auch vom Master kommen oder vom kommen sollen Sklave. Nach jedem Byte muss der Empfänger eine „0“ senden, um den Empfang des Bytes zu bestätigen, die der Master mit einem 9. Takt verriegelt. Will der Master ein Byte schreiben, wiederholt sich der gleiche Vorgang: Der Master legt Bit für Bit auf den Bus und signalisiert mit jedem Taktimpuls, dass die Daten zum Lesen bereit sind. Wenn der Master Daten empfangen möchte, erzeugt er nur die Taktimpulse. Der Slave muss dafür sorgen, dass das nächste Bit fertig ist, wenn der Takt gegeben wird. Dieses Protokoll ist von NXP (ehemals Phillips) patentiert, um Lizenzkosten zu sparen, Atmel verwendet das Wort TWI (2-Draht-Schnittstelle), das genau dasselbe wie I2C ist, sodass jedes AVR-Gerät kein I2C, aber TWI haben wird. Wenn der Master Daten empfangen möchte, erzeugt er nur die Taktimpulse. Der Slave muss dafür sorgen, dass das nächste Bit bereit ist, wenn der Takt gegeben wird. Dieses Protokoll ist von NXP (ehemals Phillips) patentiert, um Lizenzkosten zu sparen, Atmel verwendet das Wort TWI (2-Draht-Schnittstelle), das genau dasselbe wie I2C ist, sodass jedes AVR-Gerät kein I2C, aber TWI haben wird. Wenn der Master Daten empfangen möchte, erzeugt er nur die Taktimpulse. Der Slave muss dafür sorgen, dass das nächste Bit bereit ist, wenn der Takt gegeben wird. Dieses Protokoll ist von NXP (ehemals Phillips) patentiert, um Lizenzkosten zu sparen, Atmel verwendet das Wort TWI (2-Draht-Schnittstelle), das genau dasselbe wie I2C ist, sodass jedes AVR-Gerät kein I2C, aber TWI haben wird.

Zwei oder mehr Signale auf derselben Leitung können Konflikte verursachen, und Sie würden ein Problem bekommen, wenn ein Gerät eine „1“ sendet, während das andere eine „0“ sendet. Daher wird der Bus verdrahtet ODER-verknüpft: Zwei Widerstände ziehen den Bus auf einen hohen Pegel, und die Geräte senden nur niedrige Pegel. Wenn sie einen hohen Pegel senden wollen, geben sie einfach den Bus frei.

TTL (Transistor Transistor Logic) ist kein Protokoll. Es ist eine ältere Technologie für digitale Logik, aber der Name wird oft verwendet, um sich auf die 5-V-Versorgungsspannung zu beziehen, oft fälschlicherweise auf das, was UART genannt werden sollte.


Über jede davon kann man ein Buch schreiben, und es sieht so aus, als wäre ich auf einem guten Weg. Dies ist nur ein sehr kurzer Überblick, lassen Sie uns wissen, wenn einige Dinge geklärt werden müssen.

+1 nur bei TTL, ich vermute, dass das OP Serial TTL bedeutet, was meiner Erfahrung nach die UART-Signale vor dem RS232-Transceiver / Bustreiber beschreibt.
@Kenny - aber so etwas wie "serielles TTL" gibt es nicht. Das ist UART. Was ist, wenn die Spannung 3,3 V beträgt? Die TTL bezieht sich nur auf die 5 V.
Das ist es, wovon ich spreche, die E / A von UART werden meiner Erfahrung nach oft als TTL Serial bezeichnet.
Erstaunliche Antwort! Ich werde es noch ein paar Mal lesen und mich melden, wenn ich Fragen habe. Danke, Stefan.
"Es ist fast so alt wie ich,.... "; wie alt sind Sie? :)
@Vaibhav - Das findest du in meinem Profil . Du weißt natürlich nicht, ob das mein wahres Alter ist... ;-)
Eine bessere Wette wäre dann, nach dem Uart-Alter zu fischen :-)
Das Hinzufügen der Erklärung von Master und Slave in SPI wäre großartig, um es in sich geschlossen zu machen.
Können Sie ein Beispiel für ein serielles nicht-binäres Protokoll geben?
Ich sehe manchmal den Begriff „Logic Level Serial“ anstelle von „TTL Serial“. Das ist vielleicht nicht präzise genug, aber zumindest ist es nicht wirklich falsch.
@stevenvh, aber es gibt auch eine Niederspannungs-TTL (oder LVTTL), die im 3,3-V-Bereich arbeitet. Vielleicht wird deshalb manchmal der Begriff "serielle TTL" verwendet, wie von Kenny erwähnt, obwohl er etwas veraltet ist

Dies ist sehr nah an etwas, wo Sie besser Artikel lesen würden, als Fragen für benutzerdefinierte Antworten zu stellen, aber um einen wichtigen Punkt anzusprechen, den die Hersteller manchmal verwischen:

Es gibt zwei Grundtypen von seriellen Schnittstellen: synchron und asynchron.

Bei synchronen Schnittstellen werden die Daten mit ihrem Timing relativ zu einem expliziten Takt übertragen, der ebenfalls bereitgestellt wird. Das klassische Beispiel dafür ist SPI, aber es gibt auch Sonderformen wie I2S für Audiokonverter, JTAG, FPGA-Konfigurationsschnittstellen usw. Viele parallele Kommunikationskanäle sind genau diese Idee, die erweitert wird, um mehr Bits gleichzeitig zu bewegen. Oft, aber nicht immer, senden diese das höchstwertige Bit zuerst.

Bei asynchronen Schnittstellen ist das Timing im Datenstrom selbst codiert. Für "serielle Ports" und verwandte Standards wie RS232 ist das Timing des Wortes relativ zum Startbit, und der Empfänger tastet die Leitung danach lediglich in den richtigen Intervallen ab. Andere Schnittstellen können etwas komplizierter sein und erfordern eine ausgefallenere Taktwiederherstellung mithilfe von Phasenregelkreisen und Algorithmen. Ein UART ist ein "Universal Asynchronous Receiver Transmitter" - eigentlich der Name für einen Funktionsblock, der häufig verwendet wird, um einen "seriellen Port" mit einer gewissen Flexibilität in Bezug auf Wortlänge, Rate und Start- / Endbedingungen zu implementieren. Dinge wie RS232, RS422 usw. sind Standards für die externe elektrische Signalisierung der Daten, die Sie von diesen erhalten würden - Spannung, Single-Ended oder Differential, wenn eine 1 hoch oder niedrig ist usw.

Der "USART" kann eine Quelle legitimer Verwirrung sein, da es sich um eine Art Hybridgerät handelt, einen "Universal Synchronous/Asynchronous Receiver Transmitter". Im Wesentlichen wird dies am häufigsten als UART verwendet, aber es kann auch so konfiguriert werden einen separaten Takt erzeugen (oder berücksichtigen), der mit den Daten synchronisiert ist, und möglicherweise in der Lage sein, die Bitreihenfolge umzukehren. Es ist normalerweise für die Zusammenarbeit mit SPI konfigurierbar, kann jedoch möglicherweise nicht die Zeit entfernen, die für Start- / Stoppbits vorgesehen ist, und kann daher möglicherweise nicht mit etwas wie I2S arbeiten, das einen kontinuierlichen Datenfluss ohne Lücken zwischen den Wörtern erwarten kann.

Sehr schöne Erklärung (Y) Liebte die Kürze. Danke @chris

RS-232 ist ein sehr einfaches serielles Protokoll, das ursprünglich für Modems und Fernschreiber verwendet wurde. Dies wird allgemein als serielle Schnittstelle (oder COM-Schnittstelle in MS-Windows) bezeichnet. Auf der Leitung verwendet es nominell ±12 V-Pegel, aber sie können stark variieren, da die Erkennung auf ±3 V spezifiziert ist. Es gibt immer einen Leitungstreiber (heute meist aus der MAX232-Familie), der diese Pegel in und von den internen digitalen Signalpegeln eines Computers oder Mikrocontrollers umwandelt.

TTL bedeutet Transistor-Transistor-Logik und hat seinen Pegel für logische Null nahe 0 V und für logische Eins nahe 5 V. Oft wird jede 5-V-Logik als TTL bezeichnet, obwohl die meisten Schaltungen heutzutage als CMOS aufgebaut sind. Heutzutage gibt es auch viele Schaltungen, die mit 3,3 V arbeiten, was nicht mehr TTL ist.

In Bezug auf die internen Pegel sind die Pegel auf der RS-232-Leitung invertiert, +12 V entspricht logisch niedrig und -12 V entspricht logisch hoch, was verwirrend sein kann.

Zur Beschreibung des Datenformats zeigt man üblicherweise das logische Signal. Wenn die Leitung frei ist, ist sie hoch. Eine Übertragung beginnt mit einem niedrigen Startbit, den Datenbits mit dem niederwertigsten Bit zuerst, einem optionalen Paritätsbit und ein bis zwei Stoppbits (logisch 1). Dies wird als asynchrone Übertragung bezeichnet, da die Start- und Stoppbits die Daten für jedes Byte separat synchronisieren.

Ein UART (Universal Asynchronous Receiver Transmitter) ist ein Gerät in einem Computer oder Mikrocontroller, das diese Art der asynchronen Kommunikation durchführt.

Ein USART (Universal Asynchronous Synchronous Receiver Transmitter) ist ein Gerät, das zusätzlich einige Arten von synchroner Übertragung ausführen kann, daher das zusätzliche S. Welche Art variiert, müssen Sie im Datenblatt nachschlagen.

SPI, I²C und USB sind unterschiedliche (und im Fall von USB sehr lange) Geschichten.

TTL-Signale werden durch die hohen, niedrigen Pegel von >2, <0,8 definiert. True TTL wird sowohl in 3,3-V- als auch in 5-V-Implementierungen angeboten.

Ich stimme dem zu, was über SPI- und CAN-Protokolle erwähnt wurde. Zur Verbesserung der Leistung wurde das CAN-Protokoll entwickelt. Dabei wird ein Arbitrationskonzept verwendet, bei dem zwei Geräte kommunikationsbereit sind, dann erfolgt je nach Priorität die Übertragung oder der Empfang. CAN ist in vielen Branchen weit verbreitet.