Apesar das portas seriais do TMS320C30 serem projetadas para ser usadas com portas síncronas, elas também podem ser usadas como portas assíncronas, com ajuda de um pequeno software. Neste artigo, baseado na Designers Notebook número 44 da Texas, de autoria de Corey Minyard, mostramos como isso pode ser feito .
COMO FUNCIONA
O projeto se baseia no fato de que os sinais recebidos por uma porta RS232 sempre começam com um "start bit", que não é parte dos dados e que termina com um ou mais "stop bips" e que também não são parte dos dados.
Neste projeto o que se faz é manter o receptor desligado e uma interrupção (também ligada na linha do receptor) o mantém ligado quando não se está recebendo nenhum caractere.
Quando a interrupção vai a off, sinaliza-se um bit de partida nesta linha. O código leva então a interrupção ao estado off e o receptor on: os dados entram então como um caractere normal de b bit. O bit de parada (stop bit) assegura que o C30 tenha tempo de manusear os dados antes de chegar o próximo caractere.
O transmissor basicamente divide os dados em palavras de 16 bits, acrescentando um bit de partida, o caractere a ser transmitido e no final os bits de parada.
Este procedimento resulta em até seis ciclos do clock (taxa de clock RS-232) onde a faixa passante do canal é ocupada.
Um modo mais eficiente, mas mais complicado, de se solucionar o problema pode ser feito, mas não foi empregado neste projeto. Nele os sinais vão e vem pela porta serial mas "de costas" mas isso significa que eles devem ser invertidos bit a bit para recuperar a forma original.
A porta serial é ajustada para funcionar como uma porta normal de transmissão contínua. Blocos de sincronismo não são usados e os clocks internos são usados para a temporização da porta serial.
Hardware
Pouco hardware é necessário para esta aplicação. Basicamente ele consiste em ligar a porta serial ao C30 apropriadamente. Na figura 1 mostramos como isso é feito.

Observe que o sinal recebido é ligado ao DRx (Data Receive) e também o INTx (qualquer das interrupções do C30). DXx (Data TRANSmit) deve ser ligado ao nível alto (pull up) de modo a se evitar que o C30 coloque constantemente o nível alto na linha quando não houver nada para transmitir. Os clocks e os sincronismos de blocos não são usados.
Software
O parte principal deste projeto está no software. Ele deve ser capaz de manusear as interrupções e os setups das portas além de enfileirar os dados. O programa para esta finalidade pode ser obtido no Designer Notebook (solicitado à Texas), na BBS do TMS320 que era mantida pela própria Texas cuja ligação para dados era feita no (713) 274-2323 ou ainda via Internet no E-mail:
Entrando com o código TMS320 em qualquer programa de buscas da Internet (Yahoo, Infoseek, Lycos, etc) pode-se chegar diretamente ao programa e dar um "download" para desenvolvimento do projeto.
Transmissor/Receptor
O transmissor não faz muito neste circuito. Apenas forma blocos apropriados com os dados, espera que o transmissor esteja livre e então envia esses dados.
O receptor faz muito mais que o transmissor. Algumas interrupções fornecem a conversão necessária para os modos "sync para async". Normalmente o receptor da porta serial se mantém desligado. Uma interrupção ocorre quando chega um start bit ao receptor. Isso vai fazer com que a interrupção rec_coming seja desligada e o receptor seja ativado. Os próximos 8 bits que chegam pela porta serial devem corresponder aos dados que se deseja receber.
Depois dos 8 bits de dados terem entradas, a interrupção rec0 é desligada (off). Isso vai permitir o manuseio do caractere recebido, desligar o receptor e retornar a interrupç!ao rec_coming ao estado on para se aguardar o próximo start bit.
CONCLUSÃO
A possibilidade de uso da Porta Serial do TMS3209C30 e de outros da mesma família como porta Assíncrona abre algumas possibilidades interessantes para uso destes DSPs. Para os leitores que desejam fazer seus projetos, quer para uso próprio quer para participar do grande concurso anunciado na revista 290, este artigo pode ser grande utilidade.