# RS-232

RS-232 (também conhecido por EIA RS-232C ou V.24) é um padrão de protocolo para troca série de dados binários entre um DTE (terminal de dados, de Data Terminal equipment) e um DCE (comunicador de dados, de Data Communication equipment). É comumente usado nas portas seriais dos PCs.

## Abrangência do padrão

A Eletronics Industries Association (EIA), que padronizou o RS-232-C em 1969 define:
* Características elétricas como níveis de tensão, taxa de sinalização, taxa de rotação dos sinais, nível máximo de tensão, comportamento de curto-circuito e carga máxima da capacitância;
* Características mecânicas da interface, conectores "plugáveis" e identificação dos pinos;
* Funções de cada circuito no conector da interface;
* Subconjuntos padrões de circuitos de interface para aplicações selecionadas de telecomunicação.
O padrão não define elementos como:
* Codificação de caracteres (por exemplo, ASCII, código Baudot ou EBCDIC);
* Enquadramento dos caracteres no fluxo de dados (bits por caractere, bits de início e parada, paridade);
* Protocolos para detecção de erros ou algoritmos para compressão de dados;
* Taxas de bit para transmissão, apesar de o padrão dizer ser destinado para taxas de bits menores que 20 000 bits por segundo, muitos dispositivos modernos suportam velocidade de 115 200 bit/s;
* Fornecimento de energia para dispositivos externos.

## História

Este padrão foi originalmente usado para conectar um teletipo (equipamento eletromecânico de comunicação assíncrona que usava código ASCII) a um modem. Quando terminais eletrônicos começaram a ser usados, eram projetados para serem intercambiáveis com as teletypewriters, e também suportavam RS-232. A terceira revisão deste padrão (chamada de RS-232C) fora publicada em 1969, em parte para adequar-se às características elétricas destes dispositivos. Deste modo, foi utilizado em diversos tipos de comunicação remota, especialmente por modems. Posteriormente PCs (e outros equipamentos) começaram a utilizar este padrão para comunicação com equipamentos já existentes. Quando a IBM lançou computadores com uma porta RS-232, esta interface tornou-se realmente onipresente. Por muitos anos o padrão para comunicação serial em quase todos os computadores era algum tipo de porta RS-232. Continuou sendo utilizado em grande escala até o fim dos anos 1990. Durante este tempo esta foi a maneira padrão para a conexão de modems.
Uma exceção eram os mainframes, que geralmente não se comunicavam diretamente com dispositivos terminais. Estes costumavam ter processadores especializados em I/O conectados a eles, por exemplo, alguns mainframes da IBM possuíam uma unidade de controle de telecomunicação (TCU - Telecommunication Control Unit, Unidade de Controle de Telecomunicação) anexados a seus canais multiplexadores. O TCU deveria suportar múltiplos terminais, às vezes centenas. Vários desses TCUs suportavam RS-232 quando necessário, assim como outras interfaces seriais.
Há alguma confusão sobre o que a EIA (Eletronics Industries Alliance) padronizou no RS-232. Este padrão apenas especifica características elétricas dos circuitos e a numeração dos pinos. Outras características como o conector em forma de "D", o uso de código ASCII, formato dos dados e comunicação assíncrona não são parte do RS-232, a palavra "padrão", porém, é utilizada geralmente quando todos estas características aparecem juntas, de modo a tornarem-se efetivamente obrigatórias. Foram construídas em torno de 100 000 teletypewriters (33-ASR) e milhares de PCs feitos toda semana, todos podem atuar como teletypewriters virtuais. Uma única característica que era utilizada em teletypewriters e que fora abandonada é que uma teletypewriter real requer dois bits de parada para trabalhar de modo satisfatório, deste modo um caractere ocupava 11 bits. Por isso teletypewriters de 100 palavras por minuto transmitiam a 110 bauds. Hoje em dia utiliza-se apenas um bit de parada. Sendo que trataremos aqui uma simulação de um 33-ASR, não o documento RS-232.
A IBM favoreceu o uso do código EBCDIC de oito bits ao invés do ASCII com sete bits, favoreceu também um formato de transmissão "big endian" ao invés do formato "little endian" do ASCII. A IBM ofereceu suporte a esses outros formatos de modo que, para transmitir caracteres "little endian", o mainframe precisaria somente inverter cada caractere usando uma instrução para tradução de bloco. Os primeiros teletypewriters tinham três linhas de teclas e suportavam somente letras maiúsculas. Elas utilizavam o código Baudot e, geralmente, trabalhavam a taxas de 60 palavras por minuto. Os equipamentos com teclados de quatro linhas, código ASCII e letras maiúsculas e minúsculas começaram a aparecer quando computadores pessoais se popularizaram. Os circuitos integrados de comunicação serial UART, introduzidos no início dos anos 1970, continuam sendo emulados por muitos chipsets e ainda suportam os primeiros formatos, incluindo 1,5 bits de parada. Contudo tais recursos são raramente utilizados. Algumas tecnologias utilizam muito esse protocolo. A importância de portas seriais começou a decrescer gradualmente quando redes de alta velocidade tornaram-se disponíveis para comunicação PC com PC. Hoje é comum utilizar conexões Ethernet Base 10, 100 ou 1000. Num futuro próximo, velocidades ainda maiores serão comuns.

## Papel na computação moderna

Hoje, o protocolo de comunicação RS-232 vem sendo, gradualmente, suprimido pelo USB para comunicação local. O protocolo USB é mais rápido, possui conectores mais simples de usar e tem um melhor suporte por software. Por isso muitas placas-mãe, destinadas ao uso em escritórios ditas "livre de legados" (legacy-free) são produzidas sem circuitos RS-232. Mesmo assim, esse protocolo continua sendo utilizado em periféricos para pontos de venda (caixas registradoras, leitores de códigos de barra ou fita magnética) e para a área industrial (dispositivos de controle remoto). Por essa razões, computadores para estes fins continuam sendo produzidos com portas RS-232, tanto on-board ou em placas para barramentos PCI ou barramento ISA. Como alternativa, existem adaptadores para portas USB, que podem ser utilizados para conectar teclados ou mouses PS/2, uma ou mais portas seriais e uma ou mais portas paralelas.

### Detalhes do padrão

No protocolo de comunicação RS-232, caracteres são enviados um a um como um conjunto de bits. A codificação mais comumente usada é o "start-stop assíncrono" que usa um bit de início, seguido por oito bits de dados, possivelmente um bit de paridade, e um, 1,5 ou dois bits de paragem sendo então necessários pelo menos 10 bits para enviar um único caractere. Tal facto acarreta a necessidade em dividir por um fator de dez a taxa de transmissão para obter a velocidade de transmissão. A alternativa mais comum ao "start-stop assíncrono" é o HDLC. O protocolo HDLC pode operar nos modos Síncrono e Assíncrono. O padrão define os níveis elétricos correspondentes aos níveis lógicos um e zero, a velocidade de transmissão padrão e os tipos de conectores.

### Conectores

O padrão especifica 30 diferentes sinais de conexão, e um conector em forma de D usado de forma comum. São utilizados conectores machos e fêmeas - geralmente os conectores dos cabos são machos e os conectores de dispositivos são fêmeas - e estão disponíveis adaptadores m-m e f-f. Há também os chamados "null modems" para conectar unidades utilizando-se ambas como terminais de dados (ou modems). Para configuração e diagnóstico de problemas com cabos RS-232 pode-se utilizar uma "breakout box". Este dispositivo possui um conector macho e um conector fêmea e deve ser anexado em linha. Além disso, possui luzes para cada pino e meios de interconectar os pinos com diferentes configurações.
A maioria dos pinos são inutilizados pela maioria dos dispositivos sendo, então, comum que máquinas economizem espaço e dinheiro, utilizando conexões menores. A segunda geração dos IBM PC AT foi disponibilizada com um conector em forma de D com apenas 9 pinos, tornando-se o padrão. Grande parte dos dispositivos utilizam conectores de 25 pinos. Conseqüentemente, cabos com 9 pinos em uma extremidade e 25 em outra são comuns. O Apple Macintosh utilizava um sistema similar, mas posteriormente mudou para um novo conector com apenas 8 pinos, menos que o necessário para um modem.
Os cabos para RS-232 podem ser construídos com conectores disponíveis em qualquer loja de eletrônicos. Os cabos podem ter de 3 a 25 pinos. Cabos "Flat RJ" (cabos de telefone) podem ser usados com conectores RJ-RS232 e são os de mais fácil configuração. A razão pela qual é possível criar uma interface mínima com apenas três fios é que todo sinal RS-232 utiliza o mesmo fio terra para referência. O uso de circuitos desbalanceados deixa o RS-232 altamente suscetível a problemas devido a diferenças de potencial entre os sinais de terra dos dois circuitos. Este padrão também tem um pobre controle dos tempos de picos e descidas do sinal, levando a potenciais problemas de comunicação.
O RS-232 é recomendado para conexões curtas (quinze metros ou menos). Os sinais variam de 3 a 15 volts positivos ou negativos, valores próximos de zero não são sinais válidos. O nível lógico um é definido por ser tensão negativa, a condição de sinal é chamada marca e tem significado funcional de OFF (desligado). O nível lógico zero é positivo, a condição de sinal é espaço, e a função é ON (ligado). Níveis de sinal +-5, +-10, +- 12 e +-15 são vistos comumente, dependendo da fonte elétrica disponível.
Marca e espaço são termos herdados das teletypewriters. O modo de comunicação nativo destas eram simples séries de circuitos de corrente contínua que são interrompidos, muito similar aos telefones que possuíam as "rodas de discagem" que interrompiam o sinal telefônico. A condição de marca é quando o circuito está fechado e a condição de espaço, quando o circuito está aberto. O início de um caractere é sinalizado por um espaço e os bits de parada são marcas. Quando a linha é interrompida, a teletypewriter entra num ciclo contínuo mas nada é impresso porque tudo o que é recebido são zeros, o caractere NULL.
Três são os sinais carregados por esses fios: terra, transmissão/recepção e "handshake". Existem códigos para estes sinais, por exemplo:
| Sinal | Significado |
| SG ou GND | Terra |
| TD ou TX | Transmissão de dados |
| RD ou RX | Recepção de dados |
| DTR | Terminal de dados pronto |
| DSR | Conjunto de dados pronto |
| RTS | Pronto para enviar(computador) |
| CTS | Envie os dados (modem) |
| DCD | Portadora detectada |
| RI | Indicador de telefone tocando |
| FG | (Frame Ground) |
Os dispositivos RS-232 podem ser classificados em DTE e DCE. Essa classificação permite definir quais fios irão mandar e/ou enviar sinais de dados. De qualquer modo, estas definições nem sempre seguidas. Normalmente é necessário consultar a documentação ou testar as conexões com uma "breakout box" para determinar os sinais necessários.
O sinal de terra tem a função de aterrar as outras conexões e é necessário. Se os equipamentos estiverem muito longe, com diferentes fontes de eletricidade, o terra se degradará entre os dois dispositivos e a comunicação irá falhar, sendo esta uma condição difícil de traçar. Em conectores de 25 pinos, o pino 7 geralmente é o terra (pino 1 e terra do chassis são raramente usados). Neste mesmo conector, os pinos 2 e 3 são os pinos de transmissão e recepção, um dispositivo deve enviar no 2 e receber no 3; o outro deve ser o contrário (se não, essa inversão deve ser feita no fim do cabo, como num cabo para null modem, também chamado crossover). No caso de desenvolver cabos para uma conexão, pode-se testá-lo com uma breakout box qual pino está transmitindo. Estritamente falando, apenas um dispositivo precisa estar transmitindo (se não for necessária comunicação duplex ou um handshake), por exemplo uma impressora simples que não responde seu estado para o computador. Necessariamente, deve-se utilizar tanto o pino TX quanto o pino RX.
Outros handshakes podem ser necessários por um ou por outro dispositivo. Por exemplo, o pino 20 é comumente usado para indicar "dispositivo pronto". Os pinos também podem ser curto-circuitados. Por exemplo, um pino que pergunte "você está pronto?" que parte do dispositivo A pode ser ligado diretamente no pino referente a resposta "estou pronto" no dispositivo A se o dispositivo A não transmitir tal sinal. Os pinos normalmente utilizados para handshake são os pinos 20, 8, 4 e 6.

## Padrões correlatos

Existem diversos "padrões" que são chamados de "padrões" RS-232 mas na verdade não o são. TTL RS-232 usa +5V para alto e 0V para baixo. CMOS RS-232 usa +3,3V para alto e 0V para baixo. Tipicamente estes sinais são utilizados entre dois dispositivos na mesma placa de circuito. Laços de corrente com 20mA utilizam tal corrente para alto e a presença de corrente no laço para baixo; este nível de sinal é comumente usado para comunicações de longa distância e para ligações isoladas opticamente.
Outras interfaces similares ao RS-232:
* EIA-422 (alta velocidade, similar ao RS-232 com sinalização diferencial);
* RS-423 (alta velocidade, similar ao RS-232 com sinalização não balanceada);
* RS-449 (um proposto sucessor para o RS-232, que usa sinais do RS-422 e RS-423, nunca se popularizou como o RS-232);
* MIL STD 188 (um sistema como o RS-232, mas com melhor controle de impedância e de tempo de subida).