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"?
Antworten:
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
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.
quelle
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.
quelle
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.
quelle
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.
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.
quelle
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!