¿Con qué se relacionan TX y RX?

11

He estado trabajando con un dispositivo que utiliza la comunicación RS232 a una PC. Ha habido cierta confusión ya que han definido sus pines TX y RX en relación con el dispositivo. En sus definiciones, suelen significar que TX es el pin que envía datos desde el dispositivo. En mi opinión, esto debería etiquetarse como RX porque es el pin que recibe la computadora.

¿Cómo deben definirse los pines? ¿Son relativos a cada dispositivo o relativos al "controlador"?

Fr33dan
fuente
66
Nunca he visto a TX / RX desde otras perspectivas que la parte que envía. De modo que TX es el pin que envía la parte emisora ​​y se recibe RX. Nunca me he encontrado con nombres como tú sugieres.
Morten Jensen el
13
El nombramiento de pines RS232 es un caso un poco especial porque definieron cosas en términos de DTE (equipo de terminal de datos) y DCE (equipo de comunicaciones de datos) y lograron causar una confusión total. DCE tiene la salida de datos en el pin RX y la entrada en el pin TX, DTE es lo contrario. En teoría, el sexo de los conectores debería decirle qué es qué, en la práctica, suficientes fabricantes se equivocaron para que sea una guía menos confiable. Hay una razón por la que solía poder comprar pequeñas cajas con D9 y D25 de diferentes sexos con un kit de pequeños cables de puente y algunos LED en las líneas de señal comunes.
Dan Mills el
1
Cuando es tu cumpleaños, no te recibo un regalo.
ctrl-alt-delor
1
@MortenJensen bien si se nombran desde la perspectiva de la parte que envía, ambos deberían llamarse TX.
user253751
2
@TerryCarmen No es cierto para DCE donde los nombres de los pines y las direcciones del flujo de datos se invierten según el estándar. DTE Tx -> DCE Tx y DTE Rx -> DCE Rx, sí, raro y basura, pero es lo que es.
Dan Mills

Respuestas:

23

Puede ser más fácil de entender si revisamos rápidamente cómo se utilizó originalmente el estándar RS-232.

Nota: Todos los números de pines a continuación se refieren al conector D original de 25 pines; la numeración cambió en el conector de 9 pines utilizado en PC posteriores.

Antecedentes

DTE = Equipo de terminal de datos: en los viejos tiempos, esto generalmente sería un terminal o una impresora, o un equipo que los emula.

DCE = Equipo de comunicaciones de datos: en los viejos tiempos, esto normalmente sería un módem u otra interfaz WAN.

El pin 2 en el conector D original de 25 pines (descrito en el estándar como "Datos transmitidos", "Circuito BA", "V24. Número 103") debe ser datos del DTE al DCE.

El pin 3 en el conector D original de 25 pines (descrito en el estándar como "Datos recibidos", "Circuito BB", "V24. Número 104") debe ser datos del DCE al DTE.

Esto significaba que el cable que conectaba un terminal y un módem estaba "directamente": el pin 2 en un terminal (DTE) en un extremo del cable donde se originaron los datos, estaba conectado al pin 2 en un módem (o similar) en el otro extremo del cable (DCE) donde se recibieron esos datos. El módem luego envió esos datos a través del enlace de comunicaciones, a cualquier equipo que estuviera en el otro extremo de ese enlace.

El pin 3 "Datos recibidos" era la señal de datos en la dirección opuesta, transmitida por el módem (DCE) en el pin 3 y recibida por el terminal (DTE) en el pin 3.

Por lo tanto, puede ver que el etiquetado de lo que se transmitió y lo que se recibió fue desde el punto de vista del DTE (es decir, el terminal). Todo esto tenía sentido cuando las conexiones típicas eran entre un DCE y un DTE.

Sin embargo, las piezas de equipo que están utilizando estos días (incluso cuando no utilizan RS-232 y están usando en su lugar un TTL u otra interfaz de protocolo UART voltaje) son por lo general todo eficazmente DTE (con una excepción que es módems). Conectar el pin 2 (que es una salida) en una pieza de DTE, al pin 2 (otra salida) en otro equipo configurado como DTE, no tiene sentido (y al usar señales de nivel lógico, incluso podría causar daños en el hardware). Aquí es donde entra en juego el uso de cables "cruzados" o de "módem nulo" (es decir, sin módem).

Tu pregunta

He estado trabajando con un dispositivo que utiliza la comunicación RS232 a una PC. Ha habido cierta confusión ya que han definido sus pines TX y RX en relación con el dispositivo. En sus definiciones, suelen significar que TX es el pin que envía datos desde el dispositivo. En mi opinión, esto debería etiquetarse como RX porque es el pin que recibe la computadora.

¿Cómo deben definirse los pines? ¿Son relativos a cada dispositivo o relativos al "controlador"?

De la información de fondo anterior, puede ver que su etiquetado es correcto si su dispositivo actúa como DTE (que la mayoría lo son, a menos que sea un módem u otra interfaz WAN). En una hoja de DTE, el pin marcado como "datos transmitidos" (pin 2 del conector de 25 pines) no envío de datos. (Y, como se explicó anteriormente, en una pieza de DCE (por ejemplo, un módem) el pin conocido como "Datos transmitidos" (pin 2 en su conector de 25 pines) es en realidad una entrada, que recibe la señal del DTE).

El puerto serie de la PC también se configurará como DTE (a menos que tenga un puerto serie muy inusual, eso no se aplicará aquí, como sabría si se aplicara).

Por lo tanto, está conectando el dispositivo DTE (este dispositivo que ha mencionado) al dispositivo DTE (la PC), es decir, no hay DCE en la terminología "RS-232, es decir, no hay módem, y el" módem nulo "o RS-232" cruzado " será necesario el cableado. Cualquiera que sea el pin RS-232 "Datos transmitidos" (probablemente el que usted menciona que han etiquetado como TX) en este dispositivo DTE, que será una salida , deberá conectarse al RS-232 "Recibido Datos "pin en su PC (también un dispositivo DTE), que es una entrada (y obviamente viceversa para la transferencia de datos en la otra dirección).

Aunque esto no parece aplicarse a usted, solo agregaré: Para hacer la vida más complicada, algunos fabricantes intentan "ayudar" etiquetando efectivamente su equipo DTE como si fuera una pieza de DCE. Marcan su pin de entrada de datos como Tx para que el usuario simplemente conecte "Tx" desde el dispositivo externo (que, si es DTE, será la salida de datos desde allí) al pin marcado como "Tx" en su equipo (que saben que es una entrada ). De este modo, les permite decir "simplemente conecte Tx en su dispositivo a Tx en nuestro equipo". Piensan que están tratando de ayudar, pero tal etiquetado a menudo solo aumenta la confusión.

Como Dan Mills mencionó en un comentario, muchos de nosotros que crecimos con RS-232 pasamos horas felices teniendo que conectar varios equipos con implementaciones de RS-232 ligeramente diferentes, utilizando las "cajas de conexión " que describió. Estos cuadros de conexión tienen LED, que muestran qué señales se están activando activamente (esto le permite ver rápidamente si el equipo está configurado como DTE o DCE: ¿el pin 2 se activa en ese equipo? Sí = es DTE) y tiene lugares donde el puente corto Se pueden utilizar cables para unir los diferentes pines del conector.

SamGibson
fuente
Una práctica común si las cosas no funcionan, es intercambiar conexiones en los pines 2 y 3 en un extremo del cable (esto funciona en los conectores DE-9 y DB25)
Peter Bennett
2
Cierto. En el contexto de esta pregunta específica donde es RS-232 (no señales de nivel lógico) y no se menciona el apretón de manos de hardware, entonces intercambiar los pines 2 y 3 sería algo para probar (ya que conectar accidentalmente dos salidas RS-232 no debería causar daño permanente). Desafortunadamente, las cosas se complican cuando está involucrado el apretón de manos de hardware (ya que el problema podría estar en las diversas configuraciones de esas señales). Luego, intercambiar los pines 2 y 3 puede no resolver el problema, o puede que no resuelva el único problema. Esto trae recuerdos de cuadros de ruptura y análisis de lo que no estaba en la documentación.
SamGibson
1
Oh, sí, RTS / CTS / DSR / DTR ... Tantas, muchas posibilidades, incluso antes de llegar a cosas divertidas, como un extremo que quiere control de flujo de software y el otro que espera RTS / CTS. Y sí, la documentación siempre apestaba. Me quejo sobre USB (tres tipos de tapones de basura principalmente, también principalmente pilas de software de basura), pero pensar en '232 fue un nivel completamente diferente de craptastic.
Dan Mills
8

A diferencia de muchas configuraciones tipo bus, que usan el nombre de la señal , la comunicación en serie tradicionalmente usa el nombre de la función para los pines. Entonces, si el dispositivo transmite en algún pin, se marca Tx. Si recibe, se marca Rx. Obviamente, conecta Tx de un dispositivo con RX del otro y viceversa.

Para ponerlo en perspectiva, el dispositivo del que está hablando también tiene una "computadora", que es lo que básicamente es MCU. ¿Por qué una computadora debe dictar los nombres de los pines de la otra computadora, especialmente considerando la naturaleza asincrónica bidireccional de la comunicación?

El caso especial es cuando el dispositivo en cuestión es de tipo pasante, como un módem antiguo o un convertidor FT232 moderno. No están utilizando pines Tx / Rx para comunicarse con la computadora, los usan para pasar la comunicación de la computadora más adelante. Por esta razón, sus pines llevan el nombre de las señales que llegan.

ACTUALIZACIÓN: Aquí hay un par de ejemplos para ilustrar el punto.

Probablemente millones de personas están usando Arduinos hoy en día, algunos incluso sin tener la menor idea de cómo funciona. Conectan Tx a Rx, Rx a Tx, Gnd a Gnd y están listos para comenzar. De lo que a menudo no se dan cuenta es que técnicamente están creando un módem nulo, que permite que dos MCU se comuniquen entre sí.

Ahora, las mismas personas a veces quieren agregar conectividad USB a sus Arduinos. Conectan TX a TX y RX a RX en el chip adaptador o convertidor. Tenga en cuenta que a menudo se denominan "TX-IN" y "RX-OUT" para evitar confusiones. Una vez más, lo que parece obvio, pero rara vez se piensa, es que técnicamente este adaptador USB es un dispositivo de transferencia. Lo que "dice" en el pin RX no proviene del adaptador en sí, proviene del dispositivo al otro lado de la línea. ¿Y adivina qué? Está conectado al pin TX en alguna parte.

Arce
fuente
Esto es incorrecto. El estándar especifica DTE y DCE (las dos cosas que se hablan entre sí), y TX / RX se especifican desde la perspectiva de uno de estos (se me olvida cuál). Este detalle se ha perdido con los años y el uso de las etiquetas se ha vuelto tan turbio que incluso los ingenieros eléctricos experimentados cometen el error.
Steve
La respuesta de SamGibson es muy buena.
Steve
2
@ Steve "¿Se han perdido los detalles" ?! ¡La especificación de RS232 está en toda la web! Los nombres TX / RX especificados para el lado DTE porque DTE y DCE no están "hablando entre sí" a través de esos pines, usan múltiples señales de control para eso. De lo contrario, el módem y la computadora no tienen nada que decirse . El módem simplemente pasa esas señales. Pero puede conectar dos DTE utilizando un módem nulo y ¿dónde está su perspectiva entonces? Ambos son computadoras, ESTÁN hablando entre ellos y esa es exactamente la situación descrita en la pregunta de OP.
Maple el
DTE a DTE, por supuesto, funciona. Sin embargo, me sorprende que no haya incluido ninguna información sobre DTE y DCE en su respuesta, lo que ayuda mucho a comprender por qué su respuesta es correcta. Supongo que hablé mal cuando dije que tu respuesta es incorrecta, pero perpetúa el otro malentendido aquí: por "se han perdido los detalles" quiero decir que la mayoría de los ingenieros ni siquiera piensan en esto y simplemente "prueban hasta que sea correcto ", o etiquete los equipos DCE con nombres de señales DTE. Y, no incluir ese detalle ayuda a perpetuar esto un poco ...
Steve
1
@ Steve evité intencionalmente mencionar DTE / DCE porque no puedes ir allí sin discutir muchas señales importantes pero irrelevantes para el control de preguntas, etc. De todos modos, he actualizado la respuesta con algunos ejemplos para aclarar las cosas.
Maple
6

Generalmente son relativos al dispositivo, ya que los dispositivos RS232 no tienen una relación "maestro / esclavo" o "cliente / servidor". El protocolo SPI tiene una arquitectura maestro / esclavo, por lo que están etiquetados como "MISO" (Master In Slave Out) y "MOSI" (dejado como ejercicio para el alumno). Eso está en el nivel del dispositivo; No puedo hablar de lo que los diseñadores de circuitos individuales podrían elegir como nombres de red.

Policronópolis de Cristobol
fuente
Tienen una relación "DTE / DCE", pero como describe @Maple, se detuvieron allí. En realidad, una historia profunda puede explicar lo que hicieron.
gbarry
Esta respuesta, aunque describe con precisión la forma actual en que las personas tratan el RS-232, es técnicamente incorrecta (como @gbarry señala re DCE / DTE).
Steve
4

Desafortunadamente, para los ingenieros este es un enigma entre dos rebanadas de turd.

No existe una solución lógica real, ambas formas pueden tener sentido lógico.

Intento etiquetar pines, pcbs, diseños de IC, tablas de conexiones, software, con las palabras IN / OUT y / o flechas que muestran la dirección. Use las palabras "TX-out" "RX-in" "CTS-out" "RTS-in" en sus esquemas, etc. Esto resuelve completamente la ambigüedad. [En general, creo que TX y RX deberían tener un nombre correcto, es decir, TX debería ser una salida].

Aquí hay un PCB donde las señales cruzan una barrera de aislamiento. Tenga en cuenta las flechas, para que alguien lo depure o intente colocar un conector claramente sabe en qué dirección van las señales.

ingrese la descripción de la imagen aquí

Las señales de control son aún peores. (además de una dirección eléctrica, también tienen una dirección de control lógica)

Las señales de control tienen una documentación que establece explícitamente la función: 'CTS (out) le indica a la computadora que el dispositivo está listo para recibir datos'

A veces, ambas formas tienen sentido al mismo tiempo: tengo un chip donde RX y TX se nombran correctamente con su propia función (desde la perspectiva de los chips). Pero los pines del protocolo de enlace se denominan CTS y RTS que coinciden con los pines de la PC a los que se conectarán, porque a esto se refieren el software y las luces de estado.

Algo que ha ayudado en los últimos años es que los dispositivos usen un conector DE9F que se conecta directamente a un puerto serie de PC con un cable mf directo. Eso ha reducido la libertad para todo el pasado.

Henry Crun
fuente
1
Estás mostrando RXD>con la flecha apuntando hacia afuera del pin, lo que significa que hay una señal que sale de ese pin, ¡ciertamente esperaría que fuera una salida , no una entrada!
pipa
@pipe Si considera dónde está el chip en la placa de circuito, en relación con el conector, entonces no es nada ambiguo para alguien que está trabajando en el producto sin documentación. La flecha representa con precisión el flujo de señal. [punto lingüístico interesante: a diferencia de "fuera" / "dentro", las flechas solo tienen un significado intrínseco dentro de un contexto espacial]
Henry Crun