RS232 - Controle de fluxo.

Componentes, Dispositivos, Equipamentos, etc...

Moderadores: 51, guest2003, Renie

RS232 - Controle de fluxo.

Mensagempor Francesco » 06 Jul 2009 17:27

Pessoal, a pergunta é tão simples que é até um pouco boba, mas pergunta é pergunta.

Preciso fazer uma conversão RS-232 para SPI. O problema é que o SPI vai ser mais lento que a UART. Logo, foi decidido usar um controle de fluxo.

Alguém pode me explicar a forma de onda do CTS (saída) e RTS (entrada)? E qual a diferença do handshaking para seqüência ou byte-simples? E o uso do RTS e DSR?

Agradeço desde já.
Avatar do usuário
Francesco
Word
 
Mensagens: 699
Registrado em: 04 Mar 2008 00:22
Localização: São Paulo - SP

Mensagempor Djalma Toledo Rodrigues » 06 Jul 2009 19:51

Veja o Data Sheet do 8251

Mas, atualmente se usa mais o Contrôle de Fluxo por Soft XON XOFF.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor Wagner de Queiroz » 07 Jul 2009 08:38

CTS e RTS nao tem segredo nao.

O ponto "A" (transmissor) aciona o sinal RTS (Request do Send) do receptor. O receptor, se puder receber, ativa o sinal CTS (Clear to Send). O Transmissor recebendo o CTS, ele pode enviar um byte. Depois de enviar o byte, se desativa o RTS e CTS. e o processo se inicia novamente pedindo com RTS e aguardando o CTS, lembre-se que esses sinais sao ativos em nivel baixo (-12v).

Alem destes sinais, as portas seriais de PC, algumas ativam o sinal DTR (Data terminal Ready) quando abrem a porta serial, indicando que estao ativas e aguardam o sinal DSR (Data Set Ready) do outro lado para saber que podem transmitir. Geralmente isso é um sinal que o outro lado trabalha com Controle de fluxo por hardware (CTS/RTS) qualquer duvida me procura no MSN.

É mais complicado explica do que fazer.

Depois vc me ensina a trabalhar com SPI, hehe...
Seja Livre, Use Linux
Avatar do usuário
Wagner de Queiroz
Word
 
Mensagens: 872
Registrado em: 11 Out 2006 13:38
Localização: Barueri-SP

Mensagempor Francesco » 07 Jul 2009 09:26

Olá Wagner e Djalma,

Olhei o datasheet do 8251, tanto da Intel como da Texas, mas não ficou claro quem faz as solicitações e o uso do RTS. Também procurei o datasheet do 16C450, mas tão está claro o uso.

Wagner, estou começando a entender. Só ficou uma dúvida, nos cabos Null-Modem o RTS (out) é ligado ao CTS (in). Isso indica que o terminal que irá receber é quem solicita os dados para quem vai transmitir?

Obrigado.
Avatar do usuário
Francesco
Word
 
Mensagens: 699
Registrado em: 04 Mar 2008 00:22
Localização: São Paulo - SP

Mensagempor Djalma Toledo Rodrigues » 07 Jul 2009 14:02

Desculpe a Intel retirou o Datasheet

Tenho livros da Intel mas, com mudança ainda não estão nas prateleiras de
modo que esta difícil localizar

Mas, veja este site - além de CTS, DSR, etc., no final da página tem esquema de Null Cable
http://www.arcelect.com/rs232.htm

Para cabo DB9 Null Modem

http://www.cc86.org/~pjf/hwb/ca_Nullmodem9to9.html
.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor Wagner de Queiroz » 07 Jul 2009 14:33

Francesco,

Vc esta certo, veja: Null-modem = modem nulo. Algumas portas seriais, conforme eu falei, só funcionam se lerem o sinal DSR, por isso costuma se fazer um jumper entre DTR e DSR, para fazer o pc, na hora de ligar o DTR, achar que tem um modem do outro lado. A mesma coisa para os sinais RTS e CTS, assim é possivel poder usar um cabo null modem em modo de controle de fluxo por software em portas seriais mais antigas, pois o hardware só funcionaria se tivesse DSR e só enviaria se recebesse um CTS quando enviar um RTS.

Espero ter te ajudado.
Seja Livre, Use Linux
Avatar do usuário
Wagner de Queiroz
Word
 
Mensagens: 872
Registrado em: 11 Out 2006 13:38
Localização: Barueri-SP

Mensagempor Djalma Toledo Rodrigues » 08 Jul 2009 11:18

Francesco escreveu:... Isso indica que o terminal que irá receber é quem solicita os dados para quem vai transmitir?....
Isso . E porque ? Porque ele possui um Buffer logo, só permite que o outro envie se espaço houver.

O Transmissor, no caso do 8251, também possui um Buffer mas de apenas um Byte. Logo o além do Byte que esta no momento sendo enviado em série, de D0 a D7, o próximo Byte já esta no Buffer.

(Um sistema bem bolado, bem engenhoso)
.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor msamsoniuk » 08 Jul 2009 21:19

eu acho que o 68681 da motorola eh infinitamente mais interessante (ou como vc diria: bem bolado, bem engenhoso). eh um bom exemplo de como funciona controle de fluxo por hardware.

voce comeca testando se a TX FIFO do 68681 esta vazia. se estiver, vc pode escrever nela sem se preocupar (quando ela encher, um flag ira sinalizar que vc nao deve mais escrever). o que esta na TX FIFO soh eh transmitido efetivamente quando o sinal CTS esta ativo (ele eh ativo em nivel baixo). como o TX esta conectado no RX remoto e o CTS esta conectado no RX remoto, a analise passa para o lado receptor do 68681.

neste caso, ele vai receber ateh encher a RX FIFO. quando isso acontecer, ele ira automaticamente desativar RTS (que eh ativo em nivel baixo, tal como CTS). e desativando RTS, q esta conectado ao CTS remoto, vc inibe a transmissao remota, de modo que nao estoura a RX FIFO do lado receptor. na medida que a RX FIFO eh esvaziada e a fila anda, o 68681 ativa RTS indicando que o outro lado pode voltar a transmitir.

existem muitas variacoes do 68681, sendo que no componente original acho que a TX FIFO possui 2 bytes e a RX FIFO possui 3 bytes. com o mecanismo de controle de fluxo, evita-se perder caracteres em funcao de um buffer overflow na RX FIFO.

note que para controle de fluxo por hardware com alta velocidade, apenas CTS e RTS sao usados, os outros pinos sao para funcionalidades estaticas e nao servem para sinalizacao de alta velocidade.

Djalma Toledo Rodrigues escreveu:
Francesco escreveu:... Isso indica que o terminal que irá receber é quem solicita os dados para quem vai transmitir?....
Isso . E porque ? Porque ele possui um Buffer logo, só permite que o outro envie se espaço houver.

O Transmissor, no caso do 8251, também possui um Buffer mas de apenas um Byte. Logo o além do Byte que esta no momento sendo enviado em série, de D0 a D7, o próximo Byte já esta no Buffer.

(Um sistema bem bolado, bem engenhoso)
.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor Francesco » 10 Jul 2009 10:34

Olá Marcelo,

Procurei esse componente, mas os datasheets que encontrei são bastante incompletos. Por exemplo http://pdf1.alldatasheet.com/datasheet-pdf/view/65953/IMP/EI68C681.html

Você saberia onde encontro um datasheet completo dele?
Obrigado.
Avatar do usuário
Francesco
Word
 
Mensagens: 699
Registrado em: 04 Mar 2008 00:22
Localização: São Paulo - SP

Mensagempor Djalma Toledo Rodrigues » 10 Jul 2009 12:21

All Datasheet já foi bom

Veja aqui em 68306 User Manual
http://www.freescale.com/webapp/sps/sit ... r=default&
.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor msamsoniuk » 10 Jul 2009 12:55

o MC68681 eh um componente antigo e nao eh mais fabricado, mas vc pode usar o manual do SCN68681, que eh compativel:

http://www.datasheet4u.com/download.php?id=500291

como o djalma falou, o mesmo bloco eh reutilizado em diversos outros componentes, como o 68306, que ainda eh fabricado:

http://www.datasheet4u.com/download.php?id=522795
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor Francesco » 10 Jul 2009 13:26

Pessoal, obrigado. Vou estudar esse manual.
Avatar do usuário
Francesco
Word
 
Mensagens: 699
Registrado em: 04 Mar 2008 00:22
Localização: São Paulo - SP


Voltar para Componentes\Equipamentos Eletrônicos

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x