UART – ein Protokoll oder Hardware? [abgeschlossen]

Einige sagen, UART sei Hardware, andere sagen, UART sei eines der seriellen Kommunikationsprotokolle.

UART ist ein Protokoll

UART ist ein Protokoll

UART ist Hardware

UART ist Hardware

Wenn Sie die Wörter im Akronym nachschlagen, ist die Herkunft klar. Der allgemeine Gebrauch kann eher gewohnheitsmäßig als richtig sein. Eine Frage, die hauptsächlich aus 4 Links besteht und um eine Meinung geht, gehört nicht zur Mission dieser Website.
Ich sehe, dass sich jemand Death Note ansieht, Mr. Yagami ;) Wie auch immer, ich würde sagen, es ist beides. Wie es Informationen durch digitale Signalverarbeitung überträgt und empfängt, ist das Protokoll, und der Chip, der diese Protokolle bereitstellt, ist die Hardware.
Einige Leute sagen " Async Serial ", wenn sie sich speziell auf das Protokoll und nicht auf die Hardware beziehen. Seine Ursprünge gehen bis ins 19. Jahrhundert zurück . Ich weiß nicht, ob es in einem formalen, internationalen Standard beschrieben ist.
Manche Leute sagen auch „ RS-232 “, aber RS-232 spezifiziert streng genommen die elektrische Schnittstelle zwischen einem UART und einem Modem, ohne viel über den UART selbst auszusagen.

Antworten (5)

Beide Ihrer ersten beiden Links sind einfach falsch. Ein UART ist ein Stück Hardware, das eine Reihe verschiedener Protokolle implementieren kann, die verwendet werden, um asynchrone Datenströme zu rahmen. Das U ist ein Akronym für "Universal", und obwohl es effektiv korrekt ist, gibt es keinen Grund, warum ein Protokoll nicht verwendet werden könnte, das die derzeitige Population von UARTs verwirrt - außer der Tatsache, dass es den Aufwand nicht wert ist.

Die verschiedenen gehandhabten Protokolle verwenden unterschiedliche Anzahlen von Bits zum Erfassen von Start- und Stoppbedingungen, Vorhandensein oder Fehlen eines Paritätsbits (und seiner Polarität) und Rahmendatenlängen. Typischerweise können Sie 5,6,7 oder 8 Datenbits pro Frame angeben. Wenn jemand darauf bestehen würde, dass seine Daten in 4-Bit-Frames formatiert werden müssen, wäre kein vorhandener UART-Chip in der Lage, damit umzugehen.

Teilweise ist dies eine Frage der Definition. Merriam-Webster definiert zum Beispiel Protokoll (für diesen Kontext) als

eine Reihe von Konventionen, die die Behandlung und insbesondere die Formatierung von Daten in einem elektronischen Kommunikationssystem regeln

Beachten Sie, dass die Hardwareimplementierung nicht Teil der Definition ist.

Es ist eigentlich beides. UA steht für Universal Asynchronous und behandelt die asynchrone serielle Übertragung. RT steht für Receiver/Transmitter, was eindeutig Hardware-Begriffe sind.

Der UART ist sowohl die Hardware, die das (UART)-Protokoll implementiert. Der Hardwareteil wird meistens als UART-Peripheriegerät oder Gerät bezeichnet.

Das UART-Protokoll kann jedoch auch nur per Software implementiert werden (durch Verwendung von 2 GPIO-Pins zum Empfangen und Senden). Dies verbraucht meist stark CPU-Leistung (abhängig von der Kommunikationsgeschwindigkeit).

Da die serielle Kommunikation so weit verbreitet ist, verfügen die meisten Mikrocontroller über mindestens ein Hardware-UART-Peripheriegerät, um den größten Teil der Handhabung durch die Hardware erledigen zu lassen (wie Puffern, Aufteilen von Bytes in Bits und Senden/Empfangen, Hinzufügen von Start-/Stoppbits, Handhabung des Paritätsbits usw.). .).

UART ist also ein serielles Kommunikationsprotokoll, und der Mikrocontroller verfügt möglicherweise über dedizierte Hardwareschaltungen dafür.
Es stimmt, die meisten Mikrocontroller haben mindestens einen, einige haben bis zu 8 (oder vielleicht sogar mehr).

UART (Universal Asynchronous Reciever/Transmitter) bezieht sich am besten auf einen Funktionsblock (normalerweise Hardware, aber gelegentlich Software) zum Senden und Empfangen asynchroner serieller Daten, der für eine Auswahl verschiedener Baudraten, Bitzahlen, Parität usw. konfiguriert werden kann.

Doch trotz des „universal“ im Namen ist die Flexibilität noch recht begrenzt und das Grundformat weitgehend festgelegt. Es gibt ein "Startbit", wenn sich die Leitung aus dem Ruhezustand bewegt, um den Beginn eines "Bytes" anzuzeigen, eine Anzahl (normalerweise 7 oder 8) von Datenbits, optional ein Paritätsbit und dann ein oder zwei "Stopbits". mit der Leitung zurück in den Ruhezustand, um sicherzustellen, dass jedes Byte mit einem Übergang aus dem Ruhezustand heraus beginnt.

Die Leute brauchen einen Namen für diese Familie von Codierungen, sie könnten einfach den Begriff "asynchron seriell" verwenden, aber das ist ziemlich vage. Es gibt viele asynchrone serielle Codierungen, die sich stark von denen unterscheiden, die von einem UART verarbeitet werden können. Also wird diese Methode der Codierung wohl oder übel als "UART serial" oder einfach nur "UART" bezeichnet. Im Wesentlichen wird die Codierung nach der Hardware benannt, die zu ihrer Implementierung verwendet wurde.

Unter Umständen können 1 1/2 Stoppbits vorhanden sein, insbesondere bei Verwendung einer 5-Bit-Partitionierung.

UART/USART ist tatsächlich Hardware. Bevor wir überhaupt mit der Diskussion der Terminologie beginnen, hier ein beliebtes Beispiel aus den 80er Jahren: UART 8250 , das ist

"... eine integrierte Schaltung zur Implementierung der Schnittstelle für serielle Kommunikation".

Wenn Sie die Terminologie durchsehen, sehen Sie, dass auf Hardwareelemente verwiesen wird. In der Microchip-Präsentation „Using the USART in Asynchronous Mode“ (Using the USART in Asynchronous Mode) werden Sie beispielsweise Dinge wie Uhr, Pins, Duplex und Schnittstelle erwähnt:

USART steht für Universal Synchronous Asynchronous Receiver Transmitter. Es wird manchmal als Serial Communications Interface oder SCI bezeichnet. Der synchrone Betrieb verwendet eine Takt- und Datenleitung, während es keinen separaten Takt gibt, der die Daten für die asynchrone Übertragung begleitet. Da im asynchronen Betrieb kein Taktsignal vorhanden ist , kann ein Pin zum Senden und ein anderer Pin zum Empfangen verwendet werden. Senden und Empfangen können gleichzeitig erfolgen – dies wird als Vollduplex - Betrieb bezeichnet. Senden und Empfangen können unabhängig voneinander aktiviert werden. Allerdings, wenn die serielle Schnittstelleaktiviert ist, steuert der USART beide Pins und einer kann nicht für Allzweck-E/A verwendet werden, wenn der andere zum Senden oder Empfangen verwendet wird.

Schauen wir uns nun das TI-Dokument 'Interface Circuits for TIA/EIA-232-F' an :

Betrachtet man die DB9-Schnittstelle einen Schritt zurück in das digitale System, gibt es in den meisten Fällen einen universellen asynchronen Empfänger/Sender (UART) oder ein asynchrones Kommunikationselement (ACE). Der ACE sorgt für die Parallel-zu-Seriell-Wandlung und die notwendigen Start-/Stopp-Bits, die Paritätsbit-Erzeugung und die Prüfung auf fehlerfreie Datenübertragung .

Um FPGA-Prototyping von Verilog-Beispielen zu zitieren : Xilinx Spartan-3-Version :

Ein universeller asynchroner Empfänger und Sender (UART) ist eine Schaltung , die parallele Daten über eine serielle Leitung sendet . UARTs werden häufig in Verbindung mit dem RS-232-Standard der EIA (Electronic Industries Alliance) verwendet, der die elektrischen, mechanischen, funktionalen und prozeduralen Eigenschaften von zwei Datenkommunikationsgeräten spezifiziert.

Und etwas weiter:

Ein UART enthält einen Sender und einen Empfänger. Der Sender ist im Wesentlichen ein spezielles Schieberegister

Gleiches gilt für die Beschreibung auf Wikipedia , sie listen im Wesentlichen auf, welche Hardwareelemente die UART-Schnittstelle haben sollte.


Wo kommt der Softwareaspekt ins Spiel? Das wird vom asynchronen seriellen Protokoll selbst gehandhabt. Das Buch 'Programming 16-Bit PIC Microcontrollers in C: Learning to Fly the PIC 24' bietet eine sehr schöne Einführung in Kapitel 8: In der Luftfahrt gibt es ein genaues Protokoll darüber, wie und was gesagt werden soll, wer zuerst und dann spricht usw. und dies gilt auch für die serielle Kommunikation. Die Software steuert die von UART gelieferte Hardware zum Senden - Startbit, Daten, dann Stoppbit senden - und wann zuhören.

Wichtig ist, dass UART nicht an den DB-9-Anschluss gebunden sein muss - UART ist nicht DB-9. Sie haben heutzutage Raspberry Pi, Arduino und eine ganze Reihe anderer eingebetteter Systeme, die nur 4 Kabelleitungen verwenden. Manchmal gibt es USB-zu-RS-232-Konverter. Zum Beispiel habe ich mit der PICDEM PIC18 -Karte gearbeitet , die entweder DB-9 oder USB für die serielle Kommunikation verwenden kann. Serielle Daten können auch über Ethernetleitungen gesendet werden .

Es handelt sich um Hardware, die – wie der Name schon sagt – einen physischen Sender und einen physischen Empfänger umfasst. Es ist kein Protokoll und kann es auch nicht sein, weil ein Protokoll ein System von Regeln ist (das offensichtlich keine physische Entität ist).