Unterschied zwischen UART und RS-232?

Meistens kommen RS-232 und UART in seriellen Kommunikationstheorien zusammen. Sind beide gleich? Aus meinen Messwerten folgerte ich, dass UART eine Hardwareform des RS-232-Protokolls ist. Hab ich recht?

Die obigen Antworten haben Einblicke in die Unterschiede gegeben. Aber ich möchte diese Antworten ergänzen, indem ich einen Link von National Instruments hinzufüge, der dieses Thema ausführlich behandelt. Es folgt der Link: RS-232, RS-422, RS-485 Serielle Kommunikation Allgemeine Konzepte
Anscheinend existiert Ihr Link nicht mehr. Hier ist ein Wayback-Maschinenarchiv der neuesten Version, die ich finden konnte: web.archive.org/web/20181225120315/http://www.ni.com:80/…

Antworten (5)

Nein, UART und RS-232 sind nicht dasselbe.

UART ist für das Senden und Empfangen einer Folge von Bits verantwortlich. Am Ausgang eines UART werden diese Bits normalerweise durch Logikpegelspannungen dargestellt. Diese Bits können RS-232, RS-422, RS-485 oder vielleicht eine proprietäre Spezifikation werden.

RS-232 spezifiziert Spannungspegel . Beachten Sie, dass einige dieser Spannungspegel negativ sind und auch ±15 V erreichen können. Ein größerer Spannungshub macht RS-232 widerstandsfähiger gegen Störungen (wenn auch nur bis zu einem gewissen Grad).

Ein Mikrocontroller-UART kann solche Spannungspegel nicht selbst erzeugen. Dies geschieht mit Hilfe einer zusätzlichen Komponente: RS-232-Leitungstreiber. Ein klassisches Beispiel für einen RS-232-Leitungstreiber ist MAX232 . Wenn Sie das Datenblatt durchgehen, werden Sie feststellen, dass dieser IC eine Ladungspumpe hat, die aus +5V ±10V erzeugt.

Geben Sie hier die Bildbeschreibung ein( Quelle )

Die RS-232-Definition, die ich gelesen habe, spricht überhaupt nicht von einer Folge von Bits oder einem Timing. Tatsächlich habe ich nie einen offiziellen Standard gefunden, der das asynchrone NRZ-Start-Stopp-Protokoll beschreibt.
RS-232 spezifiziert keine Bitfolge.
Anscheinend wurde die Entwicklung des UART-Zeichenformats so stark von der Telefongesellschaft Bell dominiert, dass keine Varianten entstanden. Infolgedessen war das Start-/Daten-/Paritäts-/Stopbitformat nie Gegenstand eines unabhängigen Standards. Die branchenweite Verwendung war so einheitlich, dass keine "offizielle" Definition erforderlich war. Dies galt nicht für die physischen Verbindungen, und so wurde RS-232 entwickelt.
Die UART-Zeichenformate sind älter als Bells Modems, es war in Teletype-Hardware (acht Bit mit Parität) in ASCII und davor Baudot.

UART (oder USART) - Universaler (synchroner) asynchroner Empfänger/Sender

Dies ist im Wesentlichen eine serielle Kommunikationsschnittstelle. Der „universelle“ Teil bedeutet, dass er so konfiguriert werden kann, dass er viele verschiedene spezifische serielle Protokolle unterstützt. Der Begriff ist generisch und stellt keinen bestimmten Standard dar. Es bedeutet mindestens, dass es eine TXund eine RXLeitung hat, die einen seriellen Datenstrom sendet und einen seriellen Datenstrom empfängt.

RS-232 - Ein Standard, der die Signale zwischen zwei Geräten definiert und die Signalnamen, ihren Zweck, Spannungspegel, Anschlüsse und Pinbelegungen definiert.

Dies ist ein spezifischer Schnittstellenstandard, der die Interoperabilität von Geräten ermöglicht. Während zwei Hardwareteile UARTs haben können, wissen Sie nicht, dass sie sich ohne Beschädigung verbinden oder richtig kommunizieren, es sei denn, Sie wissen, dass sie die gleiche Pinbelegung und die gleichen Spannungsstandards haben oder einen Konverter oder ein speziell verdrahtetes Kabel enthalten, das für die Verbindung von spezifisch ist diese beiden spezifischen Geräte. Um den Bedarf an speziellen Konvertern oder Kabeln zu vermeiden, können sich die Hersteller dafür entscheiden, dem RS-232-Standard zu folgen. Sie wissen also, dass ein standardmäßiges RS-232-Kabel die beiden verbindet.

Weder der UART- noch der RS-232-Standard definieren jedoch, was auf den Leitungen TXund gesendet wird. RXWenn Menschen RS-232 verwenden, verwenden sie im Allgemeinen eine einfache 8-Bit-NRZ-Codierung mit einem Startbit und einem Stoppbit. Die meisten heute hergestellten Geräte verwenden diese Codierung, aber es gibt keine Notwendigkeit dazu. Sie können ältere Geräte finden, die Paritätsbits enthalten oder 7 oder 9 Bits verwenden. Der UART kann so konfiguriert werden, dass er diese verschiedenen Protokolle auf seinen TXund RXLeitungen unterstützt.

UARTs haben normalerweise keine direkte Schnittstelle mit RS-232. Sie müssen den Ausgang des UART in den für RS-232 erforderlichen +/-12-V-Standard konvertieren. Eine vollständige RS-232-Schnittstelle umfasst typischerweise sowohl einen UART- als auch einen RS-232-Pegelwandler. Darüber hinaus enthält der RS-232-Standard die Definition mehrerer anderer Signalisierungspins neben TXund RX, die Sie je nach Gerät, zu dem Sie eine Verbindung herstellen müssen, möglicherweise verwenden müssen. Diese müssen ebenfalls pegelkonvertiert werden, und Ihr UART kann diese Signale unterstützen oder nicht. Wenn dies nicht der Fall ist, müssen Sie sie direkt mit Ihrer Software/Firmware steuern.

Ein UART kann Ihnen zwar bei der Implementierung einer RS-232-Schnittstelle helfen, ist aber selbst keine RS-232-Schnittstelle.

Standard-RS-232-Kabel? So etwas gibt es nicht. In meiner Ausrüstungstasche trage ich ungefähr ein Dutzend Adapter für RS-232. RS-232 spezifiziert einen DB-25-Anschluss, aber ich habe DD-9-, RJ45-, din8- und andere Anschlüsse gesehen, und außer dem Anschließen eines Modems an einen PC konnte ich noch nie ein COTS-Kabel für ein RS232-Projekt verwenden. Glücklicherweise reichen in 90 % der Fälle ein paar Adapter oder ein kundenspezifisches Kabel aus, die einfach herzustellen sind.
Nur fürs Protokoll: Ich denke, das 'S' in USART steht für "Synchronous", nicht für "Serial". Siehe hier . USARTs sind "Erweiterungen" der älteren UARTs-Chips, die auch synchrone Kommunikationsmodi ermöglichen.
Der einzige "Standard"-RS-232-Anschluss ist der 25-polige D-Shell-Anschluss, aber die Einhaltung dieses Standards ist selten. Wie @hildred schrieb, haben Computer und Peripheriegeräte im Laufe der Jahre eine Vielzahl von Anschlüssen verwendet. Im Allgemeinen würde ich so tun, als gäbe es keinen Standardanschluss, und nur annehmen, dass RS-232 bedeutet, dass die Spannungen und Signale kompatibel sind.

Der UART dient dazu, parallele Daten von PC-Busleitungen in serielle Daten zur Übertragung über Leitungstreiber an RS-232-, RS-422- und RS-485- Geräte umzuwandeln. Der Taktstift des UART-Chips wird von einer programmierbaren Taktquelle gespeist. Die Taktrate wird durch die Baudratenkonfiguration bestimmt, die das Gerät verwenden wird. Die Taktrate beträgt das 16-fache der Baudrate. Das Anbringen einer Oszilloskopsonde am Taktstift eines UART-Chips und das Bestimmen der Frequenz und das anschließende Teilen durch 16 ist eine Möglichkeit, eine unbekannte Baudrate zu bestimmen.

+1 für "Konvertieren paralleler Daten in serielle Daten", keine andere Antwort erwähnt dies hier.

RS-232 ist nur eine Spezifikation. Es definiert die Signalisierungsanforderungen für die serielle Kommunikation, indem es Regeln und Richtlinien festlegt in Bezug auf:

  • Physische Verkabelung, die Verbindungen zwischen RS-232-kompatiblen Geräten. Einige RS-232-Varianten geben auch an, welche Arten von Steckern und Kabeln Sie verwenden müssen.
  • Elektrische Eigenschaften der von diesen Verbindungen übertragenen Signale (Spannungspegel, Anstiegsgeschwindigkeiten, Impedanz usw.)
  • Zweck und Bedeutung dieser physikalischen Leitungen wie TX, RX, DCD, CTS usw.

RS-232 deckt nichts ab, was mit der digitalen elektronischen Hardware zu tun hat, die Sie verwenden, um diese Spezifikationen zu implementieren und einzuhalten, und vor allem deckt es keine Datenrahmen oder Fehlerkorrektur oder irgendwelche Aspekte vom Typ "Datenverbindungsschicht" ab. Mit anderen Worten, RS-232 kommt einer „Physical Layer“-Spezifikation im OSI-Modell am nächsten .

Sie hören manchmal den Begriff "RS-232-Protokoll", aber es ist kein Protokoll, sondern ein Signalisierungsstandard.

Die tatsächliche Hardware, die Sie verwenden, um eine RS-232-konforme Kommunikation zu implementieren , lässt sich grob in zwei Kategorien einteilen, von denen keine Teil der RS-232-Spezifikation ist (außer in dem Sinne, dass Sie es nicht rechtmäßig tun können, wenn sie etwas tun, das RS-232 verletzt nennen Sie Ihr System "RS-232"):

  • Line-Transceiver . Dies sind die Geräte, die zwischen den RS-232-konformen Signalen, die robust, bipolar sind (Spannungen gehen sowohl negativ als auch positiv in Bezug auf Masse), und den empfindlichen digitalen Logikschaltkreisen innerhalb des Kommunikationsgeräts, das normalerweise ein UART - Betriebmit standardmäßigen 3,3-V- oder 5-V-Logikpegeln. Leitungs-Transceiver fallen ebenfalls unter die "physikalische Schicht" des OSI-Modells.

  • UART . Dies ist eine komplexe digitale Logik, die normalerweise mit standardmäßigen 5-V- oder 3,3-V-Logikpegeln arbeitet und für die Codierung und Decodierung paralleler Daten in und aus serieller Form verantwortlich ist. Es kümmert sich um Framing (Start- und Stoppbits), Fehlerkorrektur (Paritätsbits), Datenrate (Baudrate), Flusskontrolle (Steuerung von Signalen wie DCD, CTS, RTS usw.) und viele andere Aspekte. Als solches könnte es als Teil der "Datenverbindungsschicht" im OSI-Modell angesehen werden.

Ja, "Physical Layer" und "Data Link Layer", das sind bessere Worte.
Glauben Sie nicht, es wäre genauer zu sagen "RS-232 ist eine Spezifikation, die die Signalisierungsanforderungen für die serielle Kommunikation definiert ...". Es ist mehr als nur eine Spezifikation.

RS-232 ist vor UART.

UART ist ein Gerät, das ein logisches Protokoll für die Kommunikation definieren kann, während RS-232 ein Gerät ist, das als physisches Medium für die Kommunikation dient.

Wenn wir sagen UART + RS232, bedeutet a communication protocol runs on some mediadas eigentlich, bei Chips wie MAX232 die Spannungen anzupassen.

Wir können auch verwendenUART + USB (bearbeiten) Wir können auch Chips auf USB-Basis verwenden, um einige virtuelle UART-Funktionen bereitzustellen (bearbeiten), mit den Chips von Prolific Technology, FTDI, Microchip usw., wo wir die einfachen RS-232-Medien durch mehr ersetzen komplexe/aktuelle USB-Medien. Wir brauchen nicht einmal den Hardware-UART, da er über USB rein softwaremäßig implementiert werden kann.

Siehe Bild unten. Beachten Sie, dass auf der rechten Seite kein Hardware-UART, sondern nur Hardware-USB (Bearbeiten) vorhanden ist. Der Hardware-UART ist in solche Chips integriert und auf der eingebetteten Seite wird ein neuer USB-UART-Treiber verwendet (Bearbeiten). Und mit einigen zusätzlichen Fahrern.

Geben Sie hier die Bildbeschreibung einBild ist von hier .

Es gibt mehrere Probleme mit dieser Antwort. Zunächst einmal ist UART eine Schaltung, die asynchrone Kommunikation implementiert, aber asynchrone Kommunikation selbst existierte vor RS-232, denken Sie an elektromechanische Geräte. Auch FTDI-USB-Chips ersetzen RS-232-Medien nicht durch USB-Medien. Es handelt sich um USB-UART-Chips, mit denen Sie einen Adapter herstellen können, der Ihrem PC eine RS-232-Kommunikationsschnittstelle ermöglicht. Der UART wird durch Hardware durch den FTDI-Chip implementiert, er ist nicht in Software implementiert. Und das Diagramm bezieht sich nicht auf die Verwendung von FTDI-Chips, sondern auf die MCU, die USB-CDC und PC-Sprech-CDC damit implementiert.
@Justme " ... um einen Adapter herzustellen, der es Ihrem PC ermöglicht, eine RS-232- Kommunikationsschnittstelle zu haben " Ich denke, Sie meinen eine USB-Kommunikationsschnittstelle? Und danke für den Hinweis, dass der FTDI-Chip immer noch den UART als Hardware hat. Das Detail kannte ich nicht. Ich dachte, es sollte möglich sein, das UART-Protokoll in Software zu implementieren und USB als Transportmittel zu nutzen. Das Bild soll zeigen, wie USB verwendet werden kann, als wäre es RS-232.
@smwikipedia Nein, ich meinte wirklich, dass Sie einen USB-UART-Chip mit einem RS-232-Transceiver verwenden können. Du bringst wieder was durcheinander. Das Bild zeigt, wie USB verwendet werden kann, um einen virtuellen UART nur mit dem USB-CDC-Protokoll bereitzustellen. Es gibt nirgendwo UART oder RS-232, und selbst dann würde der RS-232-Teil keinen Sinn machen. Bitte lesen Sie die vorhandenen Antworten, um herauszufinden, was die einzelnen Begriffe bedeuten und wie sie sich aufeinander beziehen.
@Justme Ja. Das Bild zeigt, dass USB als virtueller UART mit einigen zusätzlichen Softwaretreibern sowohl auf der Host- als auch auf der Embedded-Seite verwendet wird. Es ersetzt die Hardware UART und RS-232 vollständig.
Die restlichen Probleme bestehen weiterhin. RS-232 ist kein "Gerät", sondern eine Spezifikation für eine physikalische Schnittstelle. Und FTDI-ähnliche Chips bieten keinen virtuellen UART, sie bieten wirklich einen tatsächlichen physischen UART über die USB-Schnittstelle. Wenn Sie eine MCU einsetzen und CDC über USB verwenden, handelt es sich um einen virtuellen Port, da nirgendwo UART vorhanden ist. Das rechte Bild hat also CDC, kein UART.