Worauf beziehen sich TX und RX?

11

Ich habe mit einem Gerät gearbeitet, das RS232-Kommunikation mit einem PC verwendet. Es gab einige Verwirrung, als sie ihre TX- und RX-Pins relativ zum Gerät definiert haben. In ihren Definitionen bedeuten sie, dass TX der Pin ist, der Daten vom Gerät sendet. In meinen Augen sollte dies als RX bezeichnet werden, da dies der Pin ist, an dem der Computer empfängt.

Wie sollen die Pins definiert werden? Sind sie relativ zu jedem Gerät oder relativ zum "Controller"?

Fr33dan
quelle
6
Ich habe TX / RX noch nie aus anderen Perspektiven als der sendenden Partei gesehen. Damit ist TX der Pin, an den der sendende Teil sendet und an dem RX empfangen wird. Ich bin noch nie auf Namen gestoßen, wie Sie es vorschlagen.
Morten Jensen
13
Die Benennung von RS232-Pins ist ein Sonderfall, da sie Dinge in Bezug auf DTE (Datenendgeräte) und DCE (Datenkommunikationsgeräte) definiert haben und es geschafft haben, völlige Verwirrung zu stiften. DCE hat den Datenausgang am RX-Pin und den Eingang am TX-Pin, DTE ist das Gegenteil. Theoretisch sollte das Geschlecht der Steckverbinder Ihnen sagen, was was ist. In der Praxis haben genügend Hersteller dies falsch verstanden, um es zu einem weniger zuverlässigen Leitfaden zu machen. Es gibt einen Grund, warum Sie früher kleine Boxen mit D9 und D25 unterschiedlichen Geschlechts mit einem Satz kleiner Überbrückungsdrähte und einigen LEDs auf den gemeinsamen Signalleitungen kaufen konnten.
Dan Mills
1
Wenn du Geburtstag hast, bekomme ich dir kein Geschenk.
Strg-Alt-Delor
1
@MortenJensen gut, wenn sie aus der Sicht des Absenders benannt sind, sollten beide TX heißen.
user253751
2
@TerryCarmen Nicht wahr für DCE, bei dem die Pin-Namen und Datenflussrichtungen gemäß dem Standard umgekehrt sind. DTE Tx -> DCE Tx und DTE Rx -> DCE Rx, ja, komisch und Mist, aber es ist was es ist.
Dan Mills

Antworten:

23

Es ist möglicherweise einfacher zu verstehen, wenn wir schnell überprüfen, wie der RS-232-Standard ursprünglich verwendet wurde.

Hinweis: Alle folgenden Pin-Nummern beziehen sich auf den originalen 25-poligen D-Stecker. Die Nummerierung wurde am 9-poligen Anschluss geändert, der bei späteren PCs verwendet wird.

Hintergrund

DTE = Data Terminal Equipment - Früher war dies normalerweise ein Terminal oder ein Drucker oder ein Gerät, das diese emuliert.

DCE = Data Communications Equipment - Früher war dies normalerweise ein Modem oder eine andere WAN-Schnittstelle.

Pin 2 am ursprünglichen 25-poligen D-Stecker (im Standard als "Übertragene Daten", "Schaltung BA", "V24. Nummer 103" beschrieben) sollten Daten vom DTE zum DCE sein.

Pin 3 am ursprünglichen 25-poligen D-Stecker (im Standard als "Received Data", "Circuit BB", "V24. Number 104" beschrieben) sollten Daten vom DCE zum DTE sein.

Dies bedeutete, dass das Kabel, das ein Terminal und ein Modem verbindet, "durchgehend" war - Pin 2 an einem Terminal (DTE) an einem Ende des Kabels, von dem die Daten stammten, wurde an Pin 2 an einem Modem (oder ähnlichem) am anderen Ende angeschlossen Ende des Kabels (DCE), an dem diese Daten empfangen wurden. Das Modem hat diese Daten dann über die Kommunikationsverbindung an alle Geräte am anderen Ende dieser Verbindung gesendet.

Pin 3 "Empfangene Daten" war das Datensignal in die entgegengesetzte Richtung - vom Modem (DCE) an Pin 3 gesendet und vom Terminal (DTE) an Pin 3 empfangen.

Daher können Sie sehen, dass die Kennzeichnung dessen, was gesendet und was empfangen wurde, aus Sicht des DTE (dh des Terminals) erfolgte. Dies alles machte Sinn, wenn die typischen Verbindungen zwischen einem DCE und einem DTE bestanden.

Die Geräte, die wir heutzutage verwenden (auch wenn sie kein RS-232 verwenden und stattdessen eine TTL- oder eine andere Spannungs-UART-Protokollschnittstelle verwenden), sind normalerweise alle effektiv DTE (mit einer Ausnahme sind Modems). Das Anschließen von Pin 2 (einem Ausgang) an einem DTE-Gerät mit Pin 2 (einem anderen Ausgang) eines anderen als DTE konfigurierten Geräts macht keinen Sinn (und kann bei Verwendung von Signalen mit Logikpegel sogar Hardwareschäden verursachen). Hier kommt die Verwendung von "gekreuzten" oder "Nullmodem" -Kabeln (dh kein Modem) ins Spiel.

Ihre Frage

Ich habe mit einem Gerät gearbeitet, das RS232-Kommunikation mit einem PC verwendet. Es gab einige Verwirrung, als sie ihre TX- und RX-Pins relativ zum Gerät definiert haben. In ihren Definitionen bedeuten sie, dass TX der Pin ist, der Daten vom Gerät sendet. In meinen Augen sollte dies als RX bezeichnet werden, da dies der Pin ist, an dem der Computer empfängt.

Wie sollen die Pins definiert werden? Sind sie relativ zu jedem Gerät oder relativ zum "Controller"?

Anhand der obigen Hintergrundinformationen können Sie erkennen, dass die Beschriftung korrekt ist, wenn das Gerät als DTE fungiert (was die meisten sind, es sei denn, es handelt sich um ein Modem oder eine andere WAN-Schnittstelle). Auf einem Stück DTE markierte die pin „Sendedaten“ (Pin 2 auf den 25 - poligen Steckern) nicht Daten senden. (Und wie oben erläutert, ist bei einem DCE-Teil (z. B. einem Modem) der als "Transmitted Data" bekannte Pin (Pin 2 an seinem 25-Pin-Anschluss) tatsächlich ein Eingang, der das Signal vom DTE empfängt.)

Die serielle Schnittstelle des PCs wird auch als DTE konfiguriert (es sei denn, es handelt sich um eine sehr ungewöhnliche serielle Schnittstelle - dies gilt hier nicht, wie Sie wissen würden, wenn dies zutreffen würde).

Daher verbinden Sie das DTE-Gerät (dieses Gerät, das Sie erwähnt haben) mit dem DTE-Gerät (dem PC), dh es gibt kein DCE in der "RS-232-Terminologie, dh kein Modem" und das "Nullmodem" oder "gekreuzte" RS-232 Eine Verkabelung ist erforderlich. Unabhängig davon, welcher Pin RS-232 "Übertragene Daten" (wahrscheinlich derjenige, den Sie als TX bezeichnet haben) an diesem DTE-Gerät ist, das ein Ausgang sein wird, muss er mit dem RS-232 "Received" verbunden sein Daten "-Pin auf Ihrem PC (auch ein DTE-Gerät), der ein Eingang ist (und natürlich umgekehrt für die Datenübertragung in die andere Richtung).

Obwohl dies für Sie nicht zuzutreffen scheint, möchte ich nur hinzufügen: Um das Leben komplizierter zu machen, versuchen einige Hersteller, "zu helfen", indem sie ihre DTE-Geräte effektiv so kennzeichnen, als wäre es ein Stück DCE. Sie markieren ihre Dateneingabestift als Tx , so dass Benutzer eine Verbindung nur „Tx“ von dem externen Gerät (die, wenn sie DTE ist, wird mit dem Stift auf ihre Ausrüstung mit „Tx“ die Datenausgabe von dort) (was sie wissen , ist , eine Eingabe ). Dadurch können sie sagen "Verbinden Sie einfach Tx auf Ihrem Gerät mit Tx auf unseren Geräten". Sie denken, sie versuchen zu helfen, aber eine solche Kennzeichnung trägt oft nur zur Verwirrung bei.

Wie Dan Mills in einem Kommentar erwähnte, verbrachten viele von uns, die mit RS-232 aufgewachsen waren, glückliche Stunden damit, verschiedene Geräte mit leicht unterschiedlichen RS-232-Implementierungen unter Verwendung der von ihm beschriebenen "Breakout-Boxen" zu verbinden. Diese Breakout-Boxen haben LEDs, die anzeigen, welche Signale aktiv angesteuert werden (so können Sie schnell feststellen, ob das Gerät als DTE oder DCE konfiguriert ist: Wird Pin 2 an diesem Gerät angesteuert? Ja = es ist DTE) und haben Stellen, an denen ein kurzer Jumper vorhanden ist Kabel können verwendet werden, um die verschiedenen Verbindungsstifte zu verbinden.

SamGibson
quelle
Wenn die Dinge nicht funktionieren, ist es üblich, die Verbindungen an Pin 2 und 3 an einem Ende des Kabels auszutauschen (dies funktioniert sowohl bei DE-9- als auch bei DB25-Steckern)
Peter Bennett
2
Wahr. Im Zusammenhang mit dieser speziellen Frage, bei der es sich um RS-232 (keine Signale mit Logikpegel) handelt und kein Hardware-Handshake erwähnt wird, sollten Sie die Pins 2 und 3 austauschen (da ein versehentliches Anschließen von zwei RS-232-Ausgängen nicht dazu führen sollte permanenter Schaden). Leider werden die Dinge beim Hardware-Handshaking kompliziert (da das Problem in den verschiedenen Konfigurationen dieser Signale liegen könnte). Dann kann das Vertauschen der Stifte 2 und 3 das Problem möglicherweise nicht oder nicht das einzige Problem lösen . Dies weckt Erinnerungen an Breakout-Boxen und analysiert, was nicht in der Dokumentation enthalten war.
SamGibson
1
Oh ja, RTS / CTS / DSR / DTR ... So viele, viele Möglichkeiten, noch bevor Sie zu lustigen Dingen kommen, wie einem Ende, das die Kontrolle des Softwareflusses wünscht, und dem anderen, das RTS / CTS erwartet. Und ja, die Dokumentation stank immer. Ich meckere über USB (hauptsächlich drei Arten von Miststeckern, meistens auch Mist-Software-Stacks), aber wenn ich zurückdenke, war 232 eine ganz andere Stufe von Craptastic.
Dan Mills
8

Im Gegensatz zu vielen busähnlichen Konfigurationen, die den Signalnamen verwenden , verwendet die serielle Kommunikation traditionell den Funktionsnamen für Pins. Wenn das Gerät also an einem Pin sendet, ist es mit Tx gekennzeichnet. Wenn es empfängt, wird es mit Rx markiert. Offensichtlich verbinden Sie Tx eines Geräts mit RX des anderen und umgekehrt.

Um es ins rechte Licht zu rücken: Das Gerät, über das Sie sprechen, enthält auch einen "Computer", was im Grunde genommen die MCU ist. Warum sollte ein Computer die Namen der Pins des anderen Computers diktieren, insbesondere unter Berücksichtigung der bidirektionalen asynchronen Art der Kommunikation?

Der Sonderfall liegt vor, wenn das betreffende Gerät wie ein altes Modem oder ein moderner FT232-Konverter durchgelassen ist. Sie verwenden keine Tx / Rx-Pins, um mit dem Computer zu kommunizieren , sondern verwenden sie, um die Kommunikation des Computers weiter unten zu leiten. Aus diesem Grund sind ihre Pins nach den durchkommenden Signalen benannt.

UPDATE: Hier sind einige Beispiele, um den Punkt zu veranschaulichen.

Wahrscheinlich benutzen heutzutage Millionen von Menschen Arduinos, einige sogar ohne die geringste Ahnung zu haben, wie es funktioniert. Sie verbinden Tx mit Rx, Rx mit Tx, Gnd mit Gnd und sie können loslegen. Was sie oft nicht erkennen, ist, dass sie technisch ein Nullmodem erstellen, mit dem zwei MCUs miteinander kommunizieren können.

Jetzt möchten dieselben Leute manchmal ihren Arduinos USB-Konnektivität hinzufügen. Sie verbinden TX zu TX und RX zu RX auf dem Adapter oder Konverterchip. Beachten Sie, dass diese häufig als "TX-IN" und "RX-OUT" bezeichnet werden, um Verwirrung zu vermeiden. Wiederum scheint es offensichtlich, aber selten gedacht zu sein, dass dieser USB-Adapter technisch gesehen ein Durchgangsgerät ist. Was auf dem RX-Pin "steht", kommt nicht vom Adapter selbst, sondern vom Gerät auf der anderen Seite der Leitung. Und rate was? Es ist irgendwo mit dem TX-Pin verbunden.

Ahorn
quelle
Das ist falsch. Der Standard spezifiziert DTE und DCE (die beiden Dinge, die miteinander sprechen), und TX / RX werden aus der Perspektive eines dieser spezifiziert (ich vergesse welche). Dieses Detail ist im Laufe der Jahre verloren gegangen und die Verwendung der Etiketten ist so trübe geworden, dass selbst erfahrene Elektrotechniker den Fehler machen.
Steve
SamGibsons Antwort ist sehr gut.
Steve
2
@Steve "Das Detail ist verloren gegangen"?! Die Spezifikation von RS232 ist überall im Web! Die für die DTE-Seite angegebenen Namen TX / RX, da DTE und DCE über diese Pins nicht "miteinander sprechen", verwenden dafür mehrere Steuersignale. Das Modem und der Computer haben sich sonst nichts zu sagen . Das Modem leitet diese Signale einfach weiter. Aber Sie können zwei DTE mit einem Nullmodem verbinden und wo ist Ihre Perspektive dann? Sie sind beide Computer, sie sprechen miteinander und genau das ist die in der OP-Frage beschriebene Situation.
Maple
DTE zu DTE funktioniert natürlich. Ich bin überrascht, dass Sie keine Informationen zu DTE und DCE in Ihre Antwort aufgenommen haben, was viel dazu beiträgt, zu verstehen, warum Ihre Antwort richtig ist. Ich nehme an, ich habe falsch gesprochen, als ich sagte, dass Ihre Antwort falsch ist, aber sie verewigt das andere Missverständnis hier - Mit "das Detail ist verloren gegangen" meine ich, dass die meisten Ingenieure nicht einmal darüber nachdenken und es einfach versuchen, bis es richtig ist "oder DCE-Geräte mit DTE-Signalnamen kennzeichnen. Und wenn Sie dieses Detail nicht berücksichtigen, können Sie dies ein wenig aufrechterhalten ...
Steve
1
@Steve Ich habe es absichtlich vermieden, DTE / DCE zu erwähnen, weil Sie nicht dorthin gehen können, ohne viele wichtige, aber für die Fragensteuersignale irrelevante usw. zu diskutieren. Wie auch immer, ich habe die Antwort mit einigen Beispielen aktualisiert, um die Dinge klarer zu machen.
Maple
6

Sie sind normalerweise relativ zum Gerät, da RS232-Geräte keine "Master / Slave" - ​​oder "Client / Server" -Beziehung haben. Das SPI-Protokoll verfügt über eine Master / Slave-Architektur, daher sind sie mit "MISO" (Master In Slave Out) und "MOSI" (dem Schüler als Übung überlassen) gekennzeichnet. Das ist auf Geräteebene; Ich kann nicht darüber sprechen, welche einzelnen Schaltungsentwickler als Netznamen wählen könnten.

Cristobol Polychronopolis
quelle
Sie haben zwar eine "DTE / DCE" -Beziehung, aber wie @Maple beschreibt, haben sie dort aufgehört. Tatsächlich kann eine tiefe Geschichte erklären, was sie getan haben.
Gbarry
Diese Antwort beschreibt zwar genau die derzeitige Art und Weise, wie Menschen mit RS-232 umgehen, ist jedoch technisch falsch (wie @gbarry in Bezug auf DCE / DTE hervorhebt).
Steve
4

Leider ist dies für Ingenieure ein Rätsel zwischen zwei Scheiben Scheiße.

Es gibt keine echte logische Lösung, beide Möglichkeiten können logisch sinnvoll sein.

Ich versuche, Stifte, Leiterplatten, IC-Layouts, Verbindungstabellen, Software mit den Worten IN / OUT und / oder Pfeilen zu kennzeichnen, die die Richtung anzeigen. Verwenden Sie die Wörter "TX-out" "RX-in" "CTS-out" "RTS-in" in Ihren Schaltplänen usw. Dadurch wird die Mehrdeutigkeit vollständig behoben. [Ich denke im Allgemeinen, dass TX und RX korrekt benannt werden sollten, dh TX sollte eine Ausgabe sein].

Hier ist eine Platine, bei der die Signale eine Isolationsbarriere überschreiten. Beachten Sie die Pfeile, damit jemand, der sie debuggt oder versucht, einen Anschluss einzubauen, genau weiß, in welche Richtung die Signale gehen.

Geben Sie hier die Bildbeschreibung ein

Die Steuersignale sind noch schlechter. (Neben einer elektrischen Richtung haben sie auch eine logische Steuerrichtung)

Steuersignale haben eine Dokumentation, in der die Funktion explizit beschrieben ist: 'CTS (out) signalisiert dem Computer, dass das Gerät bereit ist, Daten zu empfangen'

Manchmal sind beide Möglichkeiten gleichzeitig sinnvoll: Ich habe einen Chip, bei dem RX und TX mit ihrer eigenen Funktion korrekt benannt sind (aus Sicht der Chips). Die Handshake-Pins heißen jedoch CTS und RTS und stimmen mit den PC-Pins überein, mit denen sie verbunden werden, da sich Software und Statusanzeigen darauf beziehen.

In den letzten Jahren hat es geholfen, dass Geräte einen DE9F-Anschluss verwenden, der über ein durchgehendes MF-Kabel direkt an eine serielle PC-Schnittstelle angeschlossen wird. Das hat die Freiheit für die ganze Vergangenheit reduziert.

Henry Crun
quelle
1
Sie zeigen RXD>mit dem Pfeil vom Pin weg , was bedeutet, dass ein Signal von diesem Pin kommt - ich würde sicher erwarten, dass dies ein Ausgang ist , kein Eingang!
Pipe
@pipe Wenn Sie überlegen, wo sich der Chip relativ zum Anschluss auf der Leiterplatte befindet, ist er für jemanden, der ohne Dokumentation an dem Produkt arbeitet, überhaupt nicht mehrdeutig. Der Pfeil repräsentiert den Signalfluss genau. [interessanter sprachlicher Punkt: Im Gegensatz zu "out" / "in" haben Pfeile nur innerhalb eines räumlichen Kontexts eine intrinsische Bedeutung]
Henry Crun