USART, UART, RS232, USB, SPI, I2C, TTL usw. Was sind das alles und in welcher Beziehung stehen sie zueinander?


165

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

Ich habe ein grundlegendes Verständnis davon, wie sie alle funktionieren, aber ich bin verwirrt, wenn ich so viele von ihnen sehe und Schwierigkeiten habe, ihre Beziehung zueinander zu verstehen. 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 Kaffeetisch verstreut sind, und ich brauche jemanden, der mir hilft, mein Verständnis zu organisieren. Verzeihen Sie mir, wenn diese Frage etwas vage ist, aber ich glaube wirklich, dass das die Natur dieser Frage ist.


Antworten:


253

Seriell ist ein Überbegriff für alles, was "Time Division Multiplexed" ist, um einen teuren Begriff zu verwenden. Dies bedeutet, dass die Daten zeitlich verteilt gesendet werden, meist 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 Low-Level-Startbit und das High-Level-Stopbit bedeuten, dass es immer einen High-Low-Übergang gibt, um die Kommunikation zu starten. Das beschreibt UART. Kein Spannungspegel, daher können Sie ihn bei 3,3 V oder 5 V haben, je nachdem, welchen Mikrocontroller Sie verwenden. Beachten Sie, dass sich die Mikrocontroller, die über UART kommunizieren möchten, auf die Übertragungsgeschwindigkeit und die Bitrate einigen müssen, da sie nur die abfallenden Startbits haben, um sich zu synchronisieren. Das nennt man asynchrone Kommunikation.

Für Fernkommunikation (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, normalerweise +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 Zeitabhängigkeit ist einer der großen Nachteile von UART, und die Lösung ist USART für Universal Synchronous / Asynchronous Receiver Transmitter. Dies kann UART, aber auch ein synchrones Protokoll sein. Synchron werden nicht nur Daten, sondern auch eine Uhr übertragen. Mit jedem Bit teilt ein Takt dem Empfänger mit, dass dieses Bit zwischengespeichert werden 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 es bei jedem Taktimpuls um ein Bit zum Slave und um ein Bit zum Slave. 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 am Bus steuern. Es gibt zwei Möglichkeiten, mehrere Slave-Geräte an einen Master anzuschließen. Eine ist oben erwähnt, dh die Verwendung der Slave-Auswahl und die andere der Verkettung. 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 "Intelligenz" enthält. die anderen schoben blöd Bits rein und raus, und das war es auch schon. I2C verwendet nur zwei 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, die wiederum vom Master gesteuert wird, der das Taktsignal erzeugt. I2C verwendet keine separaten Slave-Auswahlen, um ein bestimmtes Gerät auszuwählen, verfügt jedoch über 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 die nächsten Bytes auch vom Master stammen oder von dem stammen sollen Sklave. Nach jedem Byte muss der Empfänger eine "0" senden, um den Empfang des Bytes zu bestätigen. was der Master mit einem 9. Takt zwischenspeichert. Wenn der Master ein Byte schreiben möchte, wird derselbe Vorgang wiederholt: Der Master gibt Bit für Bit einen Takt aus, um zu signalisieren, dass die Daten zum Lesen bereit sind. Wenn der Master Daten empfangen möchte, erzeugt er nur die Taktimpulse. Der Slave muss darauf achten, dass das nächste Bit bereit ist, wenn der Takt gegeben wird. Dieses Protokoll wurde von NXP (ehemals Phillips) patentiert, um Lizenzkosten zu sparen. Atmel verwendet das Wort TWI (2-Draht-Schnittstelle), das exakt mit I2C identisch ist. Daher verfügt jedes AVR-Gerät nicht über I2C, sondern über TWI. Wenn der Master Daten empfangen möchte, erzeugt er nur die Taktimpulse. Der Slave muss darauf achten, dass das nächste Bit bereit ist, wenn der Takt gegeben wird. Dieses Protokoll wurde von NXP (ehemals Phillips) patentiert, um Lizenzkosten zu sparen. Atmel verwendet das Wort TWI (2-Draht-Schnittstelle), das exakt mit I2C identisch ist. Daher verfügt jedes AVR-Gerät nicht über I2C, sondern über TWI. Wenn der Master Daten empfangen möchte, erzeugt er nur die Taktimpulse. Der Slave muss darauf achten, dass das nächste Bit bereit ist, wenn der Takt gegeben wird. Dieses Protokoll wurde von NXP (ehemals Phillips) patentiert, um Lizenzkosten zu sparen. Atmel verwendet das Wort TWI (2-Draht-Schnittstelle), das exakt mit I2C identisch ist. Daher verfügt jedes AVR-Gerät nicht über I2C, sondern über TWI.

Zwei oder mehr Signale auf derselben Leitung können Konflikte verursachen, und Sie hätten ein Problem, wenn ein Gerät eine "1" sendet, während das andere eine "0" sendet. Daher ist der Bus 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, lassen sie einfach den Bus los.

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, und bezieht sich oft fälschlicherweise auf das, was als UART bezeichnet werden sollte.


Über jedes von diesen kannst du ein Buch schreiben, und es sieht so aus, als ob ich auf dem besten Weg bin. Dies ist nur eine sehr kurze Übersicht, lassen Sie uns wissen, ob einige Dinge geklärt werden müssen.


+1 nur auf TTL, ich vermute, dass das OP serielle TTL bedeutet, die nach meiner Erfahrung die UART-Signale vor dem RS232-Transceiver / Bustreiber beschreibt.
Kenny

4
@Kenny - aber so etwas wie "serial 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.
Stevenvh

Das ist es, worüber ich spreche. UARTs I / O werden in meiner Erfahrung oft als TTL Serial bezeichnet.
Kenny

Erstaunliche Resonanz! Ich werde es noch ein paar Mal lesen und Sie wissen lassen, wenn ich Fragen habe. Danke, Steven.
capcom

8
Eine bessere Wette wäre, für Uart Alter dann zu fischen :-)
Vaibhav Garg

11

Dies ist ganz in der Nähe von Dingen, in denen Sie Artikel besser lesen als Fragen nach benutzerdefinierten Antworten stellen, aber einen wichtigen Punkt ansprechen sollten, der vom Hersteller manchmal verwischt wird:

Es gibt zwei grundlegende Arten von seriellen Schnittstellen: synchrone und asynchrone.

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

Bei asynchronen Schnittstellen ist das Timing im Datenstrom selbst codiert. Bei "seriellen Ports" und verwandten 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 ausgefeiltere Taktwiederherstellung mithilfe von Phasenregelkreisen und Algorithmen. Ein UART ist ein "Universal Asynchronous Receiver Transmitter" - eigentlich der Name für einen Funktionsblock, der häufig zur Implementierung eines "seriellen Ports" mit einer gewissen Flexibilität in Bezug auf Wortlänge, Rate und Start- / Endbedingungen verwendet wird. 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 differentiell, wenn eine 1 hoch oder niedrig ist usw.

Der "USART" kann eine Quelle legitimer Verwirrung sein, da er eine Art Hybridgerät ist, ein "Unversal Synchronous / Asynchronous Receiver Transmitter". Im Wesentlichen ist und wird er als UART verwendet, kann aber auch konfiguriert werden Erzeugen (oder Betrachten) eines separaten Takts, der mit den Daten synchronisiert ist, und möglicherweise in der Lage, die Bitreihenfolge umzukehren. Es ist normalerweise konfigurierbar, um mit SPI zusammenzuarbeiten, kann jedoch möglicherweise nicht die für Start / Stopp-Bits festgelegte Zeit entfernen, sodass es möglicherweise nicht mit I2S betrieben werden kann, bei dem ein kontinuierlicher Datenfluss ohne Lücken zwischen Wörtern zu erwarten ist.


Sehr schöne Erklärung (Y) Liebte die Kürze. Vielen
Dank

8

RS-232 ist ein sehr einfaches serielles Protokoll, das ursprünglich für Modems und Teletypen verwendet wurde. Dies wird üblicherweise als serieller Anschluss (oder als COM-Anschluss in MS-Windows) bezeichnet. Auf der Leitung werden nominell ± 12 V-Pegel verwendet, die jedoch stark variieren können, da die Erkennung auf ± 3 V festgelegt ist. Es gibt immer einen Leitungstreiber (heutzutage in der Regel aus der MAX232-Familie), der diese Pegel in und aus den internen digitalen Signalpegeln eines Computers oder Mikrocontrollers konvertiert.

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

In Bezug auf die internen Pegel sind die Pegel auf der RS-232-Leitung invertiert, +12 V entsprechen einem logischen Tiefpegel und -12 V entsprechen einem logischen Hochpegel, was verwirrend sein kann.

Zur Beschreibung des Datenformats wird üblicherweise das logische Signal angezeigt. Wenn die Leitung frei ist, ist sie hoch. Eine Übertragung beginnt mit einem niedrigen Startbit, den Datenbits mit dem niedrigstwertigen 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 ausführt.

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

SPI, I²C und USB sind unterschiedliche (und bei USB sehr lange) Geschichten.


1

Ich stimme den Ausführungen zu SPI- und CAN-Protokollen zu. Zur Verbesserung der Leistung wurde das CAN-Protokoll entwickelt. Bei diesem Arbitration-Konzept wird verwendet, bei dem zwei Geräte zur Kommunikation bereit sind, dann erfolgt abhängig von ihrer Priorität das Senden oder Empfangen. CAN ist in vielen Branchen weit verbreitet.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.