Eu tenho trabalhado com um dispositivo que usa comunicação RS232 para um PC. Houve alguma confusão, pois eles definiram seus pinos TX e RX em relação ao dispositivo. Em suas definições, eles costumam significar TX como o pino que envia dados do dispositivo. Na minha opinião, isso deve ser rotulado como RX, porque é o pino no qual o computador recebe.
Como os pinos devem ser definidos? Eles são relativos a cada dispositivo ou relativos ao "controlador"?
Respostas:
Pode ser mais fácil entender, se analisarmos rapidamente como o padrão RS-232 foi originalmente usado.
Nota: Todos os números de pinos abaixo se referem ao conector D original de 25 pinos; a numeração foi alterada no conector de 9 pinos usado em computadores posteriores.
fundo
DTE = Equipamento de terminal de dados - antigamente, esse usualmente seria um terminal ou uma impressora ou um equipamento que os emulas.
DCE = Equipamento de Comunicação de Dados - antigamente, normalmente era um modem ou outra interface WAN.
O pino 2 no conector D original de 25 pinos (descrito na norma como "Dados transmitidos", "Circuito BA", "V24. Número 103") deve ser dado do DTE ao DCE.
O pino 3 no conector D original de 25 pinos (descrito na norma como "Dados recebidos", "Circuito BB", "V24. Número 104") deve ser dado do DCE ao DTE.
Isso significava que o cabo que ligava um terminal e um modem era "direto" - o pino 2 em um terminal (DTE) em uma extremidade do cabo onde os dados se originavam, era conectado ao pino 2 em um modem (ou similar) na outra extremidade do cabo (DCE) em que esses dados foram recebidos. O modem então enviou esses dados usando o link de comunicação para qualquer equipamento que estivesse do outro lado desse link.
O pino 3 "Dados recebidos" foi o sinal de dados na direção oposta - transmitido pelo modem (DCE) no pino 3 e recebido pelo terminal (DTE) no pino 3.
Portanto, você pode ver que a rotulagem do que foi transmitido e do que foi recebido foi do ponto de vista do DTE (ou seja, o terminal). Tudo isso fazia sentido quando as conexões típicas estavam entre um DCE e um DTE.
No entanto, os equipamentos que estamos usando atualmente (mesmo quando não usam RS-232 e, em vez disso, usam uma interface de protocolo TTART ou outra interface UART de tensão) são geralmente todos efetivamente DTE (com uma exceção sendo modems). Conectar o pino 2 (que é uma saída) em um pedaço de DTE ao pino 2 (outra saída) em outro equipamento configurado como DTE, não faz sentido (e ao usar sinais de nível lógico, pode até causar danos ao hardware). É aqui que entra o uso de cabos "cruzados" ou "modem nulo" (ou seja, sem modem).
Sua pergunta
A partir das informações de plano de fundo acima, você pode ver que as etiquetas estão corretas se o dispositivo estiver atuando como DTE (o que é mais, a menos que seja um modem ou outra interface WAN). Em um pedaço de DTE, o pino marcado "dados transmitidos" (2 pino no conector de 25 pinos) se enviar dados. (E, como explicado acima, em um pedaço de DCE (por exemplo, um modem), o pino conhecido como "Dados transmitidos" (pino 2 em seu conector de 25 pinos) é na verdade uma entrada que recebe o sinal do DTE.)
A porta serial do PC também será configurada como DTE (a menos que tenha uma porta serial muito incomum - que não se aplicará aqui, como você saberia se ela se aplicasse).
Portanto, você está conectando o dispositivo DTE (este dispositivo que você mencionou) ao dispositivo DTE (o PC), ou seja, não há DCE na "terminologia RS-232, ou seja, nenhum modem, e o" modem nulo "ou" cruzado "RS-232 Qualquer pino é RS-232 "Dados transmitidos" (provavelmente aquele que você mencionou como rotulado como TX) neste dispositivo DTE, que será uma saída , precisará ser conectado ao RS-232 "Received Dados "no seu PC (também um dispositivo DTE), que é uma entrada (e obviamente vice-versa para transferência de dados na outra direção).
Embora isso não pareça se aplicar a você, acrescentarei: Para tornar a vida mais complicada, alguns fabricantes tentam "ajudar" rotulando efetivamente seus equipamentos de DTE como se fossem um DCE. Eles marcam o pino de entrada de dados como Tx, para que o usuário conecte "Tx" do dispositivo externo (que, se for DTE, será a saída de dados) ao pino marcado "Tx" no equipamento (que eles sabem que é uma entrada ). Assim, eles podem dizer "basta conectar o Tx no seu dispositivo ao Tx no nosso equipamento". Eles acham que estão tentando ajudar, mas essa rotulagem geralmente aumenta a confusão.
Como Dan Mills mencionou em um comentário, muitos de nós que crescemos com o RS-232, passamos horas felizes tendo que conectar vários equipamentos com implementações RS-232 ligeiramente diferentes, usando as "caixas de interrupção" que ele descreveu. Essas caixas de interrupção têm LEDs, que mostram quais sinais estão sendo ativados ativamente (isso rapidamente permite que você veja se o equipamento está configurado como DTE ou DCE: o pino 2 é acionado nesse equipamento? Sim = é DTE) e tem locais onde o jumper curto cabos podem ser usados para conectar os vários pinos do conector.
fonte
Ao contrário de muitas configurações de barramento, que usam o nome do sinal , a comunicação serial tradicionalmente usa o nome da função para os pinos. Portanto, se o dispositivo transmitir em algum pino, ele será marcado como Tx. Se receber, está marcado como Rx. Obviamente, você conecta o TX de um dispositivo ao RX do outro e vice-versa.
Para colocar em perspectiva, o dispositivo sobre o qual você está falando também possui um "computador", que é basicamente o MCU. Por que um computador deve ditar os nomes dos pinos do outro computador, especialmente considerando a natureza assíncrona bidirecional da comunicação?
O caso especial é quando o dispositivo em questão é do tipo passagem, como um modem antigo ou um conversor FT232 moderno. Eles não estão usando pinos Tx / Rx para se comunicar com o computador, eles os usam para passar a comunicação do computador mais adiante na linha. Por esse motivo, seus pinos recebem o nome dos sinais que chegam.
ATUALIZAÇÃO: Aqui estão alguns exemplos para ilustrar o ponto.
Provavelmente, milhões de pessoas estão usando Arduinos hoje em dia, algumas sem ter a menor idéia de como isso funciona. Eles conectam Tx a Rx, Rx a Tx, Gnd a Gnd e eles estão prontos. O que eles geralmente não percebem é que estão tecnicamente criando modem nulo, o que permite que dois MCUs conversem entre si.
Agora, as mesmas pessoas às vezes querem adicionar conectividade USB aos seus Arduinos. Eles conectam TX a TX e RX a RX no adaptador ou no chip conversor. Observe que os chamados frequentemente "TX-IN" e "RX-OUT" para evitar confusão. Novamente, o que parece óbvio, mas raramente pensado, é que tecnicamente esse adaptador USB é um dispositivo de passagem. O que "diz" no pino RX não é proveniente do próprio adaptador, mas do dispositivo do outro lado da linha. E adivinha? Ele está conectado ao pino TX em algum lugar.
fonte
Eles geralmente são relativos ao dispositivo, pois os dispositivos RS232 não têm um relacionamento "mestre / escravo" ou "cliente / servidor". O protocolo SPI possui uma arquitetura mestre / escravo, sendo rotulados como "MISO" (Master In Slave Out) e "MOSI" (deixado como exercício para o aluno). Isso é no nível do dispositivo; Não posso falar com o que os projetistas de circuitos individuais podem escolher como nomes de rede.
fonte
Infelizmente, para os engenheiros, esse é um enigma entre duas fatias de bosta.
Não existe uma solução lógica real, ambas as formas podem fazer sentido lógico.
Tento rotular pinos, placas de circuito impresso, layouts de IC, tabelas de conexões, software, com as palavras IN / OUT e / ou setas mostrando a direção. Use as palavras "Saída TX" "Entrada RX" "Saída CTS" "Entrada RTS" nos seus esquemas etc. Isso resolve completamente a ambiguidade. [Geralmente penso que TX e RX devem ser nomeados corretamente, ou seja, TX deve ser uma saída].
Aqui está um PCB onde os sinais cruzam uma barreira de isolamento. Observe as setas, para que alguém a depure ou tente encaixar um conector, saiba claramente para onde os sinais estão indo.
Os sinais de controle são ainda piores. (além de uma direção elétrica, eles também têm uma direção de controle lógico)
Os sinais de controle possuem uma documentação explicitamente explicando a função: 'CTS (saída) sinaliza ao computador que o dispositivo está pronto para receber dados'
Às vezes, os dois lados fazem sentido ao mesmo tempo: eu tenho um chip em que RX e TX são nomeados corretamente com sua própria função (da perspectiva dos chips). Mas os pinos do aperto de mão são nomeados CTS e RTS correspondentes aos pinos do PC aos quais eles serão conectados, porque é a isso que software e luzes de status se referem.
Algo que ajudou nos últimos anos, é usar dispositivos que usam um conector DE9F que se conecta diretamente a uma porta serial do PC com um cabo mf direto. Isso reduziu o livre para todo o passado.
fonte
RXD>
com a seta apontando para fora do pino, o que significa que há um sinal saindo desse pino - eu certamente esperaria que isso fosse uma saída , não uma entrada!