À quoi sont TX et RX par rapport?

11

Je travaille avec un appareil qui utilise la communication RS232 avec un PC. Il y a eu une certaine confusion car ils ont défini leurs broches TX et RX par rapport à l'appareil. Dans leurs définitions, ils signifient que TX est la broche qui envoie les données de l'appareil. Dans mon esprit, cela devrait être étiqueté RX car c'est la broche sur laquelle l'ordinateur reçoit.

Comment définir les broches? Sont-ils relatifs à chaque appareil ou au "contrôleur"?

Fr33dan
la source
6
Je n'ai jamais vu TX / RX être d'autres perspectives que la partie d'envoi. De sorte que TX est la broche sur laquelle la partie émettrice envoie et que RX est reçu. Je n'ai jamais rencontré de nom comme vous le suggérez.
Morten Jensen le
13
La dénomination des broches RS232 est un peu un cas particulier car ils définissent les choses en termes de DTE (équipement terminal de données) et DCE (équipement de communication de données) et parviennent à créer une confusion totale. DCE a la sortie de données sur la broche RX et l'entrée sur la broche TX, DTE est l'inverse. En théorie, le sexe des connecteurs devrait vous dire ce qui est quoi, dans la pratique, suffisamment de fabricants se sont trompés pour en faire un guide moins fiable. Il y a une raison pour laquelle vous pouviez acheter de petites boîtes avec D9 et D25 de sexes différents avec un kit de petits fils de pontage et quelques LED sur les lignes de signal communes.
Dan Mills
1
Quand c'est ton anniversaire, je ne te reçois pas de cadeau.
ctrl-alt-delor
1
@MortenJensen et bien s'ils sont nommés du point de vue de l'expéditeur, les deux doivent s'appeler TX.
user253751
2
@TerryCarmen Pas vrai pour DCE où les noms de broches et les directions de flux de données sont inversés selon la norme. DTE Tx -> DCE Tx et DTE Rx -> DCE Rx, oui, bizarre et merde mais c'est ce que c'est.
Dan Mills

Réponses:

23

Il serait peut-être plus facile à comprendre si nous examinons rapidement comment la norme RS-232 a été utilisée à l'origine.

Remarque: Tous les numéros de broches ci-dessous se réfèrent au connecteur D 25 broches d'origine; la numérotation a changé sur le connecteur à 9 broches utilisé sur les PC ultérieurs.

Contexte

DTE = Data Terminal Equipment - Autrefois, il s'agissait généralement d'un terminal ou d'une imprimante, ou d'un équipement émulant ceux-ci.

DCE = Data Communications Equipment - autrefois, il s'agissait généralement d'un modem ou d'une autre interface WAN.

La broche 2 du connecteur D à 25 broches d'origine (décrit dans la norme comme "Données transmises", "Circuit BA", "V24. Numéro 103") doit être des données de l'ETTD vers l'ETCD.

La broche 3 du connecteur D à 25 broches d'origine (décrit dans la norme comme "Données reçues", "Circuit BB", "V24. Numéro 104") doit être des données de l'ETCD vers l'ETTD.

Cela signifiait que le câble reliant un terminal et un modem était "direct" - la broche 2 sur un terminal (DTE) à une extrémité du câble d'où provenaient les données, était connectée à la broche 2 sur un modem (ou similaire) de l'autre extrémité du câble (DCE) où ces données ont été reçues. Le modem a ensuite envoyé ces données à l'aide de la liaison de communication, à tout équipement se trouvant à l'autre extrémité de cette liaison.

La broche 3 "Données reçues" était le signal de données dans la direction opposée - transmis par le modem (DCE) sur la broche 3, et reçu par le terminal (DTE) sur la broche 3.

Par conséquent, vous pouvez voir que l'étiquetage de ce qui a été transmis et de ce qui a été reçu était du point de vue de l'ETTD (c'est-à-dire du terminal). Tout cela avait du sens lorsque les connexions typiques étaient entre un ETCD et un ETTD.

Cependant, les équipements que nous utilisons de nos jours (même lorsqu'ils n'utilisent pas RS-232 et utilisent plutôt une interface de protocole TTL ou autre tension UART) sont généralement tous des DTE efficaces (à une exception près, les modems). La connexion de la broche 2 (qui est une sortie) sur un élément de l'ETTD, à la broche 2 (une autre sortie) sur un autre équipement configuré comme DTE, n'a aucun sens (et lorsque vous utilisez des signaux de niveau logique, cela pourrait même endommager le matériel). C'est là qu'intervient l'utilisation de câbles «croisés» ou «null modem» (c'est-à-dire sans modem).

Ta question

Je travaille avec un appareil qui utilise la communication RS232 avec un PC. Il y a eu une certaine confusion car ils ont défini leurs broches TX et RX par rapport à l'appareil. Dans leurs définitions, ils signifient que TX est la broche qui envoie les données de l'appareil. Dans mon esprit, cela devrait être étiqueté RX car c'est la broche sur laquelle l'ordinateur reçoit.

Comment définir les broches? Sont-ils relatifs à chaque appareil ou au "contrôleur"?

À partir des informations générales ci-dessus, vous pouvez voir que leur étiquetage est correct si leur appareil agit comme DTE (ce que la plupart sont, sauf s'il s'agit d'un modem ou d'une autre interface WAN). Sur un morceau de DTE, la broche étiquetée « Données transmises » (broche 2 sur le connecteur 25 broches) n'envoie des données. (Et, comme expliqué ci-dessus, sur un élément DCE (par exemple un modem), la broche connue sous le nom de "données transmises" (broche 2 sur son connecteur à 25 broches) est en fait une entrée, qui reçoit le signal de l'ETTD.)

Le port série du PC sera également configuré comme DTE (sauf s'il a un port série très inhabituel - qui ne s'appliquera pas ici, comme vous le saurez s'il s'applique).

Par conséquent, vous connectez un appareil DTE (cet appareil que vous avez mentionné) à un appareil DTE (le PC), c'est-à-dire qu'il n'y a pas d'ETCD dans la "terminologie RS-232, c'est-à-dire pas de modem, et le RS-232" null modem "ou" croisé " Quelle que soit la broche est RS-232 "Données transmises" (probablement celle que vous mentionnez, elles ont été étiquetées comme TX) sur cet appareil DTE, qui sera une sortie , devra être connecté au RS-232 "Reçu Data "pin sur votre PC (également un appareil DTE), qui est une entrée (et évidemment vice versa pour le transfert de données dans l'autre sens).

Bien que cela ne semble pas s'appliquer à vous, j'ajouterai simplement: Pour rendre la vie plus compliquée, certains fabricants essaient d '«aider» en étiquetant efficacement leur équipement DTE comme s'il s'agissait d'un élément DCE. Ils marquent leur broche d' entrée de données comme Tx afin que l'utilisateur se connecte simplement "Tx" de l'appareil externe (qui, s'il s'agit de DTE, sera la sortie de données à partir de là) à la broche marquée "Tx" sur leur équipement (qu'ils savent être une entrée ). Leur permettant ainsi de dire "il suffit de connecter Tx sur votre appareil à Tx sur notre équipement". Ils pensent qu'ils essaient d'aider, mais un tel étiquetage ne fait souvent qu'ajouter à la confusion.

Comme Dan Mills l'a mentionné dans un commentaire, beaucoup d'entre nous qui ont grandi avec RS-232, ont passé des heures heureuses à connecter divers équipements avec des implémentations RS-232 légèrement différentes, en utilisant les «boîtes de dérivation» qu'il a décrites. Ces boîtiers de dérivation ont des LED, qui indiquent quels signaux sont activement pilotés (cela vous permet rapidement de voir si l'équipement est configuré en DTE ou DCE: la broche 2 est-elle pilotée sur cet équipement? Oui = c'est DTE) et a des endroits où le cavalier court des câbles peuvent être utilisés pour relier les différentes broches du connecteur.

SamGibson
la source
La pratique courante si les choses ne fonctionnent pas, est de permuter les connexions sur les broches 2 et 3 à une extrémité du câble (cela fonctionne sur les connecteurs DE-9 et DB25)
Peter Bennett
2
Vrai. Dans le contexte de cette question spécifique où il s'agit de RS-232 (pas de signaux de niveau logique) et où aucune négociation matérielle n'est mentionnée, l'échange de broches 2 et 3 serait quelque chose à essayer (car la connexion accidentelle de deux sorties RS-232 ne devrait pas provoquer dommage permanent). Malheureusement, les choses se compliquent lorsque la négociation matérielle est impliquée (car le problème pourrait être dans les différentes configurations de ces signaux). L'échange des broches 2 et 3 peut alors ne pas résoudre le problème ou ne pas résoudre le seul problème. Cela ramène des souvenirs de boîtes de discussion et analyse ce qui n'était pas dans la documentation.
SamGibson
1
Oh oui, RTS / CTS / DSR / DTR ... Tant, beaucoup de possibilités, même avant de vous amuser, comme une extrémité qui souhaite contrôler le flux logiciel et l'autre qui attend RTS / CTS. Et oui, la documentation puait toujours. Je parle de l'USB (Trois types de plugs de merde principalement, principalement des piles de logiciels de merde), mais en repensant à 232, c'était un tout autre niveau de craptastic.
Dan Mills
8

Contrairement à de nombreuses configurations de type bus, qui utilisent le nom du signal , la communication série utilise traditionnellement le nom de fonction pour les broches. Donc, si l'appareil transmet sur une broche, il est marqué Tx. S'il reçoit, il est marqué Rx. Évidemment, vous connectez Tx d'un appareil avec RX de l'autre et vice versa.

Pour mettre les choses en perspective, l'appareil dont vous parlez contient également un "ordinateur", ce qui est essentiellement le MCU. Pourquoi un ordinateur devrait-il dicter les noms des broches de l'autre ordinateur, en particulier compte tenu de la nature asynchrone bidirectionnelle de la communication?

Le cas particulier est lorsque l'appareil en question est de type passe-système, comme un ancien modem ou un convertisseur FT232 moderne. Ils n'utilisent pas de broches Tx / Rx pour communiquer avec l'ordinateur, ils les utilisent pour transmettre les communications de l'ordinateur plus loin sur la ligne. Pour cette raison, leurs broches sont nommées d'après les signaux qui transitent.

MISE À JOUR: Voici quelques exemples pour illustrer le point.

Des millions de personnes utilisent probablement Arduinos de nos jours, certaines même sans avoir la moindre idée de comment cela fonctionne. Ils connectent Tx à Rx, Rx à Tx, Gnd à Gnd et ils sont prêts à partir. Ce qu'ils ne réalisent souvent pas, c'est qu'ils créent techniquement un null-modem, ce qui permet à deux MCU de se parler.

Maintenant, les mêmes personnes veulent parfois ajouter une connectivité USB à leurs Arduinos. Ils connectent TX à TX et RX à RX sur la puce adaptateur ou convertisseur. Notez que ceux souvent nommés "TX-IN" et "RX-OUT" pour éviter toute confusion. Encore une fois, ce qui semble évident mais rarement pensé, c'est que techniquement cet adaptateur USB est un périphérique d'intercommunication. Ce qu'il "dit" sur la broche RX ne vient pas de l'adaptateur lui-même, il vient de l'appareil de l'autre côté de la ligne. Et devine quoi? Il est connecté quelque part à la broche TX.

Érable
la source
Ceci est une erreur. La norme spécifie l'ETTD et l'ETCD (les deux choses qui se parlent), et TX / RX sont spécifiés du point de vue de l'un d'entre eux (j'oublie lequel). Ce détail a été perdu au fil des ans et l'utilisation des étiquettes est devenue si trouble que même les ingénieurs électriciens expérimentés font l'erreur.
Steve
La réponse de SamGibson est très bonne.
Steve
2
@Steve "Le détail a été perdu"?! La spécification de RS232 est partout sur le web! Les noms TX / RX spécifiés pour le côté DTE parce que DTE et DCE ne "se parlent pas" sur ces broches, ils utilisent plusieurs signaux de contrôle pour cela. Sinon, le modem et l'ordinateur n'ont rien à se dire . Le modem transmet simplement ces signaux. Mais vous pouvez connecter deux DTE en utilisant null-modem et où est votre perspective alors? Ils sont tous les deux des ordinateurs, ils se parlent et c'est exactement la situation décrite dans la question OP.
Maple
DTE à DTE fonctionne bien sûr. Je suis surpris que vous n'ayez inclus aucune information sur l'ETTD et l'ETCD dans votre réponse, ce qui aide beaucoup à comprendre pourquoi votre réponse est correcte. Je suppose que j'ai mal parlé quand j'ai dit que votre réponse était incorrecte, mais elle perpétue l'autre malentendu ici - Par "le détail a été perdu", je veux dire que la plupart des ingénieurs n'y pensent même pas et essaient juste jusqu'à ce que ce soit juste ", ou étiqueter l'équipement DCE avec les noms des signaux DTE. Et, ne pas inclure ce détail contribue à perpétuer un peu cela ...
Steve
1
@Steve J'ai délibérément évité de mentionner DTE / DCE parce que vous ne pouvez pas y aller sans discuter de beaucoup de signaux importants mais non pertinents pour le contrôle des questions, etc. Quoi qu'il en soit, j'ai mis à jour la réponse avec quelques exemples pour clarifier les choses.
Maple
6

Ils sont généralement relatifs au périphérique, car les périphériques RS232 n'ont pas de relation "maître / esclave" ou "client / serveur". Le protocole SPI a une architecture maître / esclave, ils sont donc étiquetés "MISO" (Master In Slave Out) et "MOSI" (laissé comme exercice à l'étudiant). C'est au niveau de l'appareil; Je ne peux pas parler de ce que les concepteurs de circuits individuels pourraient choisir comme noms de réseau.

Cristobol Polychronopolis
la source
Ils ont une relation "DTE / DCE", mais comme @Maple le décrit, ils se sont arrêtés là. En fait, une histoire profonde peut expliquer ce qu'ils ont fait.
gbarry
Cette réponse, tout en décrivant avec précision la façon dont les gens traitent le RS-232, est techniquement erronée (comme le souligne @gbarry concernant DCE / DTE).
Steve
4

Malheureusement, pour les ingénieurs, c'est une énigme entre deux tranches d'étron.

Il n'y a pas de vraie solution logique, les deux sens peuvent avoir un sens logique.

J'essaie d'étiqueter les broches, les circuits imprimés, les dispositions de circuits intégrés, les tableaux de connexions, les logiciels, avec les mots IN / OUT et / ou les flèches indiquant la direction. Utilisez les mots "TX-out" "RX-in" "CTS-out" "RTS-in" sur vos schémas, etc. Cela résout complètement l'ambiguïté. [Je pense généralement que TX et RX doivent être correctement nommés, c'est-à-dire que TX doit être une sortie].

Voici un circuit imprimé où les signaux traversent une barrière d'isolement. Notez les flèches, donc quelqu'un qui le débogue ou essaie de monter un connecteur sait clairement dans quelle direction les signaux vont.

entrez la description de l'image ici

Les signaux de contrôle sont encore pires. (ainsi qu'une direction électrique, ils ont aussi une direction de contrôle logique)

Les signaux de commande ont une documentation expliquant explicitement la fonction: «CTS (out) signale à l'ordinateur que l'appareil est prêt à recevoir des données»

Parfois, les deux sens ont du sens en même temps: j'ai une puce où RX et TX sont correctement nommés avec leur propre fonction (du point de vue des puces). Mais les broches de prise de contact sont nommées CTS et RTS correspondant aux broches du PC auxquelles elles se connecteront, car c'est à cela que le logiciel et les voyants d'état font référence.

Quelque chose qui a aidé ces dernières années, c'est que les appareils utilisent un connecteur DE9F qui se connecte directement à un port série PC avec un câble mf direct. Cela a réduit la gratuité pour tout le passé.

Henry Crun
la source
1
Vous montrez RXD>avec la flèche pointant loin de la broche, ce qui signifie qu'il y a un signal sortant de cette broche - je m'attendrais certainement à ce que ce soit une sortie , pas une entrée!
pipe
@pipe Si vous considérez où se trouve la puce sur la carte de circuit imprimé, par rapport au connecteur, alors ce n'est pas du tout ambigu pour quelqu'un qui travaille sur le produit sans documentation. La flèche représente avec précision le flux du signal. [point linguistique intéressant: Contrairement à "out" / "in", les flèches n'ont de sens intrinsèque que dans un contexte spatial]
Henry Crun