Solución:
Podría ser más fácil de entender si revisamos rápidamente cómo se usó originalmente el estándar RS-232.
Nota: Todos los números de clavijas a continuación se refieren al conector D original de 25 clavijas; la numeración cambió en el conector de 9 clavijas utilizado en las PC posteriores.
Fondo
DTE = Equipo de terminal de datos: en los viejos tiempos, esto solía ser un terminal o una impresora, o un equipo que los emulaba.
DCE = Equipo de comunicaciones de datos: en los viejos tiempos, esto solía ser un módem u otra interfaz WAN.
El pin 2 del conector D original de 25 pines (descrito en la norma como “Datos transmitidos”, “Circuito BA”, “V24. Número 103”) debe ser de datos de el DTE para el DCE.
El pin 3 del conector D original de 25 pines (descrito en el estándar como “Datos recibidos”, “Circuito BB”, “V24. Número 104”) debe ser de datos. de el DCE para el DTE.
Esto significaba que el cable que conectaba un terminal y un módem era “directo”: el pin 2 de un terminal (DTE) en un extremo del cable donde se originaron los datos, estaba conectado al pin 2 de un módem (o similar) en el otro extremo del cable (DCE) donde se recibieron esos datos. Luego, el módem envió esos datos utilizando el 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, los equipos que estamos usando en estos días (incluso cuando no usan RS-232 y en su lugar usan un TTL u otra interfaz de protocolo UART de voltaje) generalmente son todos efectivamente DTE (con una excepción que son los 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 cuando se usan señales de nivel lógico, incluso podría causar daños al hardware). Aquí es donde entra en juego el uso de cables “cruzados” o “módem nulo” (es decir, sin módem).
Tu pregunta
He estado trabajando con un dispositivo que usa 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 en el que recibe la computadora.
¿Cómo se deben definir los pines? ¿Son relativos a cada dispositivo o al “controlador”?
De la información de fondo anterior, puede ver que su etiquetado es correcto si su dispositivo está actuando como DTE (que son la mayoría, a menos que sea un módem u otra interfaz WAN). En una pieza de DTE, la clavija etiquetada “Datos transmitidos” (clavija 2 en el conector de 25 clavijas) lo hace enviar 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 muy puerto serie 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 ” Se necesitará cableado. Cualquiera que sea el pin RS-232 “Datos transmitidos” (probablemente el que mencionas que han etiquetado como TX) en este dispositivo DTE, que será un producción, deberá estar conectado al pin RS-232 “Datos recibidos” en su PC (también un dispositivo DTE), que es un aporte (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 eficazmente su equipo DTE como si fuera una pieza de DCE. Marcan sus datos aporte pin como Tx para que el usuario simplemente conecte “Tx” desde el dispositivo externo (que, si es DTE, estarán la salida de datos desde allí) al pin marcado “Tx” en su equipo (que saben que es un aporte). De ese modo, les permite decir “simplemente conecte Tx en su dispositivo a Tx en nuestro equipo”. Creen que están tratando de ayudar, pero ese etiquetado a menudo solo aumenta la confusión.
Como Dan Mills mencionado en un comentario, muchos de nosotros que crecimos con RS-232, pasamos horas felices teniendo que conectar varios equipos con levemente diferentes implementaciones de RS-232, utilizando las “cajas de conexiones” que describió. Estas cajas de conexiones 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 está activado en ese equipo? Sí = es DTE) y tienen lugares donde el puente corto Se pueden utilizar cables para conectar los distintos pines del conector.
A diferencia de muchas configuraciones tipo bus, que utilizan nombre de la señal, la comunicación en serie utiliza tradicionalmente nombre de la función para alfileres. Entonces, si el dispositivo transmite en algún pin, está marcado como Tx. Si recibe, se marca Rx. Obviamente, conectas Tx de un dispositivo con RX del otro y viceversa.
Para ponerlo en perspectiva, el dispositivo del que estás hablando también tiene una “computadora”, que es básicamente lo que es MCU. ¿Por qué una computadora debería dictar los nombres de los pines de la otra computadora, especialmente considerando la naturaleza bidireccional asincrónica de la comunicación?
El caso especial es cuando el dispositivo en cuestión es del tipo de paso, como un módem antiguo o un convertidor FT232 moderno. No utilizan pines Tx / Rx para comunicar con la computadora, los usan para pasar la comunicación de la computadora más abajo en la línea. Por esta razón, sus pines reciben 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. Lo que a menudo no se dan cuenta es que técnicamente están creando un módem nulo, lo 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 paso. Lo que “dice” en el pin RX no proviene del adaptador en sí, sino del dispositivo del otro lado de la línea. ¿Y adivina qué? Está conectado al pin TX en alguna parte.
Por lo general, 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” (se deja como ejercicio para el estudiante). Eso es a nivel de dispositivo; No puedo hablar de lo que los diseñadores de circuitos individuales podrían elegir como nombres de red.