A cosa sono relativi TX e RX?


11

Ho lavorato con un dispositivo che utilizza la comunicazione RS232 con un PC. C'è stata una certa confusione in quanto hanno definito i loro pin TX e RX relativi al dispositivo. Nelle loro definizioni usano per indicare che TX è il pin che invia i dati dal dispositivo. Nella mia mente questo dovrebbe essere etichettato RX perché è il pin che riceve il computer.

Come dovrebbero essere definiti i pin? Sono relativi a ciascun dispositivo o relativi al "controller"?


6
Non ho mai visto TX / RX da altre prospettive rispetto alla parte che invia. In modo che TX sia il pin che la parte di invio invia e RX viene ricevuto. Non ho mai incontrato nomi come suggerisci tu.
Morten Jensen,

13
La denominazione dei pin RS232 è un po 'un caso speciale perché hanno definito le cose in termini di DTE (apparecchiature terminali di dati) e DCE (apparecchiature di comunicazioni dati) e sono riuscite a creare totale confusione. DCE ha l'uscita dei dati sul pin RX e l'input sul pin TX, DTE è l'opposto. In teoria il sesso dei connettori dovrebbe dirti che cosa è, in pratica abbastanza produttori hanno sbagliato questo da renderlo una guida meno affidabile. C'è una ragione per cui si era in grado di acquistare piccole scatole con D9 e D25 di diversi sessi con un kit di fili jumper e alcuni LED sulle linee di segnale comuni.
Dan Mills,

1
Quando è il tuo compleanno, non ricevo un regalo.
ctrl-alt-delor,

1
@MortenJensen bene, se prendono il nome dal punto di vista della parte che invia, entrambi dovrebbero essere chiamati TX.
user253751

2
@TerryCarmen Non vero per DCE in cui i nomi dei pin e le direzioni del flusso di dati sono invertiti secondo lo standard. DTE Tx -> DCE Tx e DTE Rx -> DCE Rx, sì, strano e schifo ma è quello che è.
Dan Mills,

Risposte:


23

Potrebbe essere più facile da capire se esaminiamo rapidamente come è stato originariamente utilizzato lo standard RS-232.

Nota: tutti i numeri di pin seguenti si riferiscono al connettore D originale a 25 pin; la numerazione è cambiata sul connettore a 9 pin utilizzato sui PC successivi.

sfondo

DTE = Data Terminal Equipment: ai vecchi tempi, si trattava in genere di un terminale o di una stampante o di un'apparecchiatura che emulava quelli.

DCE = Data Communications Equipment: ai vecchi tempi, si trattava in genere di un modem o di un'altra interfaccia WAN.

Il pin 2 sul connettore D originale a 25 pin (descritto nella norma come "Dati trasmessi", "Circuito BA", "V24. Numero 103") dovrebbe essere un dato dal DTE al DCE.

Il pin 3 sul connettore D originale a 25 pin (descritto nella norma come "Dati ricevuti", "Circuito BB", "V24. Numero 104") dovrebbe essere un dato dal DCE al DTE.

Ciò significava che il cavo che collegava un terminale e un modem era "diretto" - il pin 2 su un terminale (DTE) a un'estremità del cavo in cui erano originati i dati, era collegato al pin 2 su un modem (o simile) all'altro estremità del cavo (DCE) dove sono stati ricevuti quei dati. Il modem ha quindi inviato quei dati utilizzando il collegamento di comunicazione, a qualunque apparecchiatura si trovasse all'altra estremità di quel collegamento.

Pin 3 "Dati ricevuti" era il segnale di dati nella direzione opposta, trasmesso dal modem (DCE) sul pin 3 e ricevuto dal terminale (DTE) sul pin 3.

Quindi puoi vedere che l'etichettatura di ciò che è stato trasmesso e ciò che è stato ricevuto, era dal punto di vista del DTE (cioè il terminale). Tutto ciò aveva senso quando le connessioni tipiche erano tra un DCE e un DTE.

Tuttavia, le apparecchiature che stiamo utilizzando in questi giorni (anche quando non usano RS-232 e utilizzano invece un'interfaccia di protocollo UART TTL o altra tensione) sono in genere tutte DTE efficaci (con un'eccezione che sono i modem). Il collegamento del pin 2 (che è un'uscita) su un pezzo di DTE, al pin 2 (un'altra uscita) su un altro apparecchio configurato come DTE, non ha senso (e quando si usano segnali di livello logico, potrebbe persino causare danni all'hardware). È qui che entra in gioco l'uso di cavi "incrociati" o "null modem" (ovvero senza modem).

La tua domanda

Ho lavorato con un dispositivo che utilizza la comunicazione RS232 con un PC. C'è stata una certa confusione in quanto hanno definito i loro pin TX e RX relativi al dispositivo. Nelle loro definizioni usano per indicare che TX è il pin che invia i dati dal dispositivo. Nella mia mente questo dovrebbe essere etichettato RX perché è il pin che riceve il computer.

Come dovrebbero essere definiti i pin? Sono relativi a ciascun dispositivo o relativi al "controller"?

Dalle informazioni di sfondo sopra, puoi vedere che la loro etichettatura è corretta se il loro dispositivo agisce come DTE (che la maggior parte lo è, a meno che non sia un modem o un'altra interfaccia WAN). Su un pezzo di DTE, il perno etichettato "Dati trasmessi" (pin 2 del connettore 25 pin) non invia dati. (E, come spiegato sopra, su un pezzo di DCE (ad esempio un modem) il pin noto come "Dati trasmessi" (pin 2 sul suo connettore a 25 pin) è in realtà un ingresso, che riceve il segnale dal DTE.)

La porta seriale del PC sarà anche configurata come DTE (a meno che non abbia una porta seriale molto insolita - che non si applicherà qui, come sapresti se fosse applicabile).

Pertanto si sta collegando il dispositivo DTE (questo dispositivo che hai menzionato) al dispositivo DTE (il PC), cioè non esiste un DCE nella "terminologia RS-232, cioè nessun modem, e il" null modem "o" incrociato "RS-232 sarà necessario il cablaggio. Qualunque pin sia RS-232 "Dati trasmessi" (probabilmente quello che hai menzionato hanno etichettato come TX) su questo dispositivo DTE, che sarà un'uscita , dovrà essere collegato all'RS-232 "Ricevuto Pin "dati" sul tuo PC (anche un dispositivo DTE), che è un input (e ovviamente viceversa per il trasferimento di dati nell'altra direzione).

Anche se questo non sembra applicarti a te, aggiungerò solo: per rendere la vita più complicata, alcuni produttori cercano di "aiutare" etichettando efficacemente le loro apparecchiature DTE come se fosse un pezzo di DCE. Contrassegnano il loro pin di input dei dati come Tx in modo che l'utente colleghi semplicemente "Tx" dal dispositivo esterno (che, se è DTE, sarà l'output dei dati da lì) al pin contrassegnato "Tx" sulla loro attrezzatura (che sanno che è un input ). Permettendo loro di dire "basta collegare Tx sul tuo dispositivo a Tx sulla nostra attrezzatura". Pensano che stanno cercando di aiutare, ma tale etichettatura spesso aggiunge solo confusione.

Come ha menzionato Dan Mills in un commento, molti di noi che sono cresciuti con RS-232, hanno trascorso ore felici a collegare varie apparecchiature con implementazioni RS-232 leggermente diverse, usando le "breakout box" che ha descritto. Queste scatole breakout hanno LED, che mostrano quali segnali sono attivamente pilotati (questo ti consente rapidamente di vedere se l'apparecchiatura è configurata come DTE o DCE: il pin 2 è guidato su quell'apparecchiatura? Sì = è DTE) e hanno posti in cui il ponticello corto i cavi possono essere utilizzati per collegare i vari pin del connettore.


La pratica comune se le cose non funzionano, è scambiare le connessioni sui pin 2 e 3 a un'estremità del cavo (funziona su entrambi i connettori DE-9 e DB25)
Peter Bennett,

2
Vero. Nel contesto di questa domanda specifica in cui è RS-232 (non segnali a livello logico) e non viene menzionato alcun handshaking hardware, lo scambio dei pin 2 e 3 sarebbe qualcosa da provare (poiché il collegamento accidentale di due uscite RS-232 non dovrebbe causare danno permanente). Sfortunatamente le cose si complicano quando è coinvolto l'handshaking hardware (poiché il problema potrebbe essere nelle varie configurazioni di quei segnali). Quindi lo scambio dei pin 2 e 3 potrebbe non risolvere il problema o potrebbe non risolvere l' unico problema. Questo riporta ricordi di breakout box e analisi di ciò che non era nella documentazione.
SamGibson,

1
Oh sì, RTS / CTS / DSR / DTR ... Tante, tante possibilità, anche prima di divertirti con cose come un'estremità che vuole il controllo del flusso del software e l'altra che si aspetta RTS / CTS. E sì, la documentazione puzzava sempre. Mi dispiace per l'USB (principalmente tre tipi di crap plug, anche per lo più crap di stack software), ma ripensando al '232 era un altro livello di craptastic.
Dan Mills,

8

A differenza di molte configurazioni simili a bus, che utilizzano il nome del segnale , la comunicazione seriale utilizza tradizionalmente il nome della funzione per i pin. Quindi, se il dispositivo trasmette su alcuni pin, è contrassegnato con Tx. Se riceve, è contrassegnato con Rx. Ovviamente colleghi Tx di un dispositivo con RX dell'altro e viceversa.

Per metterlo in prospettiva, il dispositivo di cui stai parlando ha anche un "computer", che è fondamentalmente la MCU. Perché un computer dovrebbe dettare i nomi dei pin dell'altro computer, soprattutto considerando la natura asincrona bidirezionale della comunicazione?

Il caso speciale è quando il dispositivo in questione è di tipo pass-through, come un vecchio modem o un moderno convertitore FT232. Non stanno usando i pin Tx / Rx per comunicare con il computer, li usano per passare più lontano la comunicazione del computer lungo la linea. Per questo motivo i loro pin prendono il nome dai segnali che arrivano.

AGGIORNAMENTO: ecco alcuni esempi per illustrare il punto.

Probabilmente milioni di persone usano Arduinos al giorno d'oggi, alcuni anche senza avere la minima idea di come funzioni. Collegano Tx a Rx, Rx a Tx, Gnd a Gnd e vanno bene. Ciò che spesso non capiscono è che stanno tecnicamente creando null-modem, il che consente a due MCU di comunicare tra loro.

Ora, le stesse persone a volte vogliono aggiungere la connettività USB ai loro Arduinos. Collegano TX a TX e RX a RX sull'adattatore o sul chip del convertitore. Si noti che quelli spesso denominati "TX-IN" e "RX-OUT" per evitare confusione. Ancora una volta, ciò che sembra ovvio ma raramente pensato, è che tecnicamente questo adattatore USB è un dispositivo pass-through. Quello che "dice" sul pin RX non proviene dall'adattatore stesso, ma proviene dal dispositivo sull'altro lato della linea. E indovina cosa? È collegato al pin TX da qualche parte.


Questo non è corretto Lo standard specifica DTE e DCE (le due cose che parlano tra loro), e TX / RX sono specificati dal punto di vista di uno di questi (dimentico quale). Questo dettaglio è andato perduto nel corso degli anni e l'uso delle etichette è diventato così torbido che persino gli ingegneri elettrici esperti hanno commesso l'errore.
Steve

La risposta di SamGibson è molto buona.
Steve

2
@Steve "Il dettaglio è stato perso" ?! Le specifiche di RS232 sono in tutto il web! I nomi TX / RX specificati per il lato DTE perché DTE e DCE non "parlano tra loro" su quei pin, ma usano segnali di controllo multipli per quello. Il modem e il computer non hanno nulla da dirsi altrimenti. Il modem passa semplicemente attraverso quei segnali. Ma puoi connettere due DTE usando null-modem e dov'è la tua prospettiva allora? Entrambi sono computer, si parlano tra loro e questa è esattamente la situazione descritta nella domanda OP.
Maple,

DTE a DTE ovviamente funziona. Sono sorpreso che tu non abbia incluso alcuna informazione su DTE e DCE nella tua risposta, il che va molto a capire perché la tua risposta è corretta. Suppongo di aver parlato male quando ho detto che la tua risposta non è corretta, ma perpetua qui gli altri fraintendimenti - Con "il dettaglio è andato perduto" intendo dire che la maggior parte degli ingegneri non ci pensa nemmeno e semplicemente "prova finché non è giusto "o etichetta l'apparecchiatura DCE con i nomi dei segnali DTE. E, non includere quel dettaglio, aiuta a perpetuare un po 'questo ...
Steve

1
@Steve Ho volutamente evitato di menzionare DTE / DCE perché non puoi andare lì senza discutere un sacco di importanti ma irrilevanti per i segnali di controllo delle domande ecc. Comunque, ho aggiornato la risposta con alcuni esempi per rendere le cose più chiare.
Maple,

6

Di solito sono relativi al dispositivo, poiché i dispositivi RS232 non hanno una relazione "master / slave" o "client / server". Il protocollo SPI ha un'architettura master / slave, quindi sono etichettati "MISO" (Master In Slave Out) e "MOSI" (lasciato come esercizio allo studente). Questo è a livello di dispositivo; Non posso parlare di ciò che i singoli progettisti di circuiti potrebbero scegliere come nomi di rete.


Hanno una relazione "DTE / DCE", ma come descrive @Maple, si sono fermati lì. In realtà un po 'di storia profonda può spiegare cosa hanno fatto.
Gbarry,

Questa risposta, mentre descrive accuratamente il modo attuale in cui le persone trattano RS-232, è tecnicamente errata (come sottolinea @gbarry riguardo a DCE / DTE).
Steve

4

Sfortunatamente, per gli ingegneri questo è un enigma tra due fette di erba.

Non esiste una vera soluzione logica, entrambi i modi possono avere un senso logico.

Cerco di etichettare pin, PCB, layout IC, tabelle di connessioni, software, con le parole IN / OUT e / o frecce che indicano la direzione. Usa le parole "TX-out" "RX-in" "CTS-out" "RTS-in" sui tuoi schemi ecc. Questo risolve completamente l'ambiguità. [In genere penso che TX e RX debbano essere chiamati correttamente, ovvero TX dovrebbe essere un output].

Ecco un pcb in cui i segnali attraversano una barriera di isolamento. Nota le frecce, in modo che qualcuno esegua il debug o cerchi di inserire un connettore sappia chiaramente in che direzione stanno andando i segnali.

inserisci qui la descrizione dell'immagine

I segnali di controllo sono anche peggiori. (oltre a una direzione elettrica, hanno anche una direzione di controllo logico)

I segnali di controllo hanno una documentazione che espone esplicitamente la funzione: "CTS (out) segnala al computer che il dispositivo è pronto a ricevere dati"

A volte entrambi i modi hanno senso allo stesso tempo: ho un chip in cui RX e TX sono correttamente denominati con la loro funzione (dal punto di vista dei chip). Ma i pin di handshake sono chiamati CTS e RTS corrispondenti ai pin del PC a cui si collegheranno, perché questo è ciò a cui si riferiscono software e spie di stato.

Qualcosa che ha aiutato negli ultimi anni, è che i dispositivi utilizzano un connettore DE9F che si collega direttamente a una porta seriale del PC con un cavo mf diretto. Ciò ha ridotto il libero per tutto il passato.


1
Stai mostrando RXD>con la freccia che punta lontano dal pin, il che significa che c'è un segnale che esce da quel pin - mi aspetterei sicuramente che sia un output , non un input!
pipe

@pipe Se si considera dove si trova il chip sul circuito, rispetto al connettore, non è affatto ambiguo per qualcuno che sta lavorando al prodotto senza documentazione. La freccia rappresenta accuratamente il flusso del segnale. [punto linguistico interessante: a differenza di "out" / "in", le frecce hanno un significato intrinseco in un contesto spaziale]
Henry Crun,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.