Buscar

Comunicação serial

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

10.1 
Capítulo 10- COMUNICAÇÃO SERIAL 
 
 
10.1- Introdução 
Comunicação Serial x Comunicação Paralela 
 
Na comunicação paralela enviamos uma palavra por vez ao longo de um barramento 
composto por vários sinais. A comunicação com impressoras é tipicamente uma 
comunicação paralela. A velocidade é alta, porém as distâncias são curtas. Além do envio 
dos dados deve-se também enviar sinais de controle. 
 
Na comunicação serial o dado é enviado bit por bit. O cabo que conecta os dispositivos 
pode ser mais longo, em virtude de características especiais do sinal que é transmitido. 
Diversos protocolos de comunicação operam sobre comunicação serial: redes de campo, 
comunicação com modens, etc... 
 
Existem dois modos de comunicação serial: Síncrono e Assíncrona. 
 
Comunicação Serial Síncrona 
Neste modo de comunicação o transmissor e o receptor devem ser sincronizados para a 
troca de comunicação de dados. Geralmente uma palavra de SINCRONISMO é utilizada 
para que ambos ajustem o relógio interno. Após a sincronização os bits são enviados 
seqüencialmente, até uma quantidade pré-combinada entre os dispositivos. 
 
Comunicação Serial Assíncrona 
Esta é a forma mais usual de transmissão de dados. Não existe a necessidade de 
sincronização entre os dispositivos, uma vez que os caracteres são transmitidos 
individualmente e não em blocos como na comunicação síncrona. A transmissão de cada 
caractere é precedida de um bit de start e terminada por 1 (1/2 ou 2) bit(s) de stop. 
 
Neste capítulo iremos explorar 2 tipos de padrões comunicação serial suportadas pelos 
processadores DSPs da Texas: 
(i) Comunicação assíncrona universal (formato RS232) Æ SCI; 
(ii) Comunicação síncrona entre dispositivos Æ SPI; 
 
 
A Figura 10.1 mostra a composição típica um frame assíncrono. 
 
 
10.2 
Figura 10.1- Frame assíncrono típico 
 
Notem que neste frame existe um bit de start, 8 bits de dados, um bit de paridade e um bit 
de parada. A paridade pode ser par ou ímpar. Quando a paridade é par o bit de paridade é 
gerado de modo que o número de 1s resultante na palavra mais o bit de paridade seja par. 
Por exemplo, se a palvra 10001010 está sendo transmitida, ou recebida, o bit de paridade 
deve ser 1, para que o conjunto palavra + bit de paridade tenha sempre um número par de 
1s. Se a paridade usada for ímpar o bit de paridade no exemplo anterior será zero. 
 
 
No processo de transmissão assíncrona, os dispositivos envolvidos no processo de 
comunicação devem ter a mesma taxa de transmissão e recepção. 
 
 
Comunicação RS-232 
Um dos padrões mais conhecidos para comunicação serial assíncrona é o RS-232. O padrão 
define um nível de tensão diferente do TTL: 
• Nível Lógico 0 Æ +5 a +15 Volts 
• Nível Lógico 1 Æ -5 a –15 Volts 
 
A conversão entre o nível TTL e RS232 pode ser feita pelo chip 1488 e do nível RS232 
para o TTL através do 1489. Estes dois chips precisam de alimentação simétrica o que pode 
ser inconveniente em alguns projetos. O chip MAX232 da MAXIM (www.maxim-ic.com) 
necessita apenas de fonte +5V e incorpora tanto o conversor TTL-RS232 como o RS232-
TTL, conforme mostrado na Figura 10.2. 
 
10.3 
 
Figura 10.2- Diagrama de blocos do MAX232 
A Tabela 10.1 mostra os sinais típicos em um conector RS232. Muitos destes sinais só são 
empregados em comunicação com dispositivos mais complexos, como no caso de modens 
externos. Nos processos mais simples de comunicação apenas os pinos TXD e RXD são 
utilizados.. 
 
Tabela 10.1 - Sinais Padrão RS232 
Nome 
TXD Dados transmitidos pelo terminal 
RXD Dados recebidos pelo terminal 
RTS Requisição de envio 
CTS Permissão de envio 
DSR Dados prontos 
DCD Detector de portadora 
DTR Terminal de dados pronto 
 
 
A Figura 10.3 mostra uma conexão simples entre dois dispositivos através da porta serial 
assíncrona empregando os conversores de níveis 1488 e 1489. 
 
10.4 
Dispositivo 1 Dispositivo 2
TXD RXD
TXD
RXD
5V5V
MAX232 MAX232
 
 
Figura 10.3- Conexão entre dois dispositivos usando porta RS232 
 
 
10.2 - Descrição da Interface Serial no TMS320F243 
 
As principais configurações de uma porta de comunicação serial são: 
¾ Taxa de transmissão de bits (Exemplo: 9600 bps, 12400 bps, etc.); 
¾ Números de bits por caractere (Exemplo: 5, 6, 7 ou 8 bits por caractere); 
¾ Definição do bit de paridade: par, ímpar ou sem bit de paridade; 
¾ Definição do número de bits de paradas (Stop Bit): 1 ou dois; 
¾ Configuração das interrupções geradas pela interface. 
 
Os principais registros que o programador precisa ter acesso ao usar as portas seriais são os 
registros de configuração, o registro de transmissão e recepção de dados e os registros de 
interrupção. A Figura 10.4 representa um diagrama de blocos simplificado da interface de 
comunicação serial. 
 
Registro TXBUF (7059h) e flags TXRDY e TXINT 
O registro TXBUF é o registro que contém os dados para serem transmitidos. Neste caso a 
CPU pode escrever o dado neste registro que o controlador se encarregará de transmitir os 
dados serialmente. Note que este é um registro de 8 bits. Note ainda do diagrama de blocos 
dois flags associados a este registro: o flag TXRDY e o flag de interrupção TXINT. O 
primeiro flag indica que o buffer de transmissão está vazio e que uma nova palavra pode ser 
enviada pela CPU para ser transmitida. A CPU deve verificar o estado deste flag antes de 
enviar um novo byte para a transmissão, caso contrário o byte anterior é perdido. O flag 
de interrupção pode ser utilizado para interromper a CPU. Deste modo quando o buffer de 
transmissão estiver vazio o periférico pode interromper a CPU para solicitar dela um novo 
dado para ser transmitido. 
 
 
 
 
10.5 
 
 
Figura 10.4 – Diagrama de Blocos do SCI 
 
Registro RXBUF (7057h) e flag RXRDY 
O registro RXBUF é o registro de recepção. Quando a recepção de todos os bits de um 
dado é completada o periférico transfere o dado para o registro RXBUF, ao mesmo tempo 
em que ativa (seta) o flag RXRDY. Este flag pode causar interrupção na CPU caso esteja 
configurado para gerar este evento. Quando o processador lê o registro RXBUF este flag é 
automaticamente zerado. 
 
 
Registro de Controle da Comunicação-SCICCR (7050h) 
Este registro define o formato dos caracteres conforme Tabela 10.1 
 
 
Tabela 10.1- Registro de controle da comunicação 
Bit Função valores 
7 Bits de 
Parada 
0 Um bit de parada 
1 Dois bits de paradas 
10.6 
 
6 Paridade 
 
 
0 ímpar 
1 par 
5 Habilita 
Paridade 
 
0 desabilita 
1 habilita 
4 0 
 
Ver obs. 2 
3 0 
 
Ver obs. 2 
2 
1 
0 
Tamanho do 
caractere 
000 1 bit 
001 2 bits 
010 3 bits 
…… 
110 7 bits 
111 8 bits 
 
 
OBS: 
1- Quando a paridade é desativada nenhum bit de paridade é gerado na transmissão e 
nenhum bit de paridade é esperado na recepção. 
2- Estas posições descrevem funções mais complexas que não são abordadas neste 
livro, por isso use zero nestes bits, que corresponde à função default. O leitor 
interessado em conhecer estas funções deve consultar do periférico. 
 
 
Registro de Controle 1 - SCICTL1 (7051h) 
Este registro controla a habilitação do transmissor e receptor do periférico e outras funções 
mais complexas. Neste livro serão utilizadas apenas as funções de habilitação do receptor e 
transmissor, que correspondem aos bits 0 e 1 da palavra de controle. Os demais bits devem 
ser escritos com o valor default, zero, conforme mostrado na Tabela 10.2 
 
Tabela 10.2- Registro de Controle SCICTL1 
Bit Função valores 
7 0 
 
Reservado 
6-2 0 Ver obs. 1 
10.7 
1 TXENA 
Habilita a transmissão: 
0 Transmissão desabilita 
1 Transmissão habilitada 
0 RXENA 
Habilita a Recepção: 
0 Recepção desabilita 
1 Recepção habilitada 
 
 
OBS:1- Estas posições descrevem funções mais complexas que não são abordadas neste livro, 
por isso use zero nestes bits, que corresponde à função default. O leitor 
 
 
Registro de Controle 2 – SCICTL2 (7054h) 
Este registro contém os flags de recepção (RXRDY) e transmissão TXRDY e as 
habilitações das interrupções respectivas. A Tabela 10.3 mostra a função dos bits. 
 
 
Tabela 10.3- Registro de Controle SCICTL2 
Bit Função valores 
7 TXRDY 
 
1 indica que o buffer de transmissão está vazio 
0 buffer de transmissão cheio 
(R-1) Æ ver observação 1 
6 ----- 
 
(R-1) Æ ver observação 1 
5-2 0 (R-0) Æ ver observação 1 
1 RXINT Enable 
Habilita da interrupção RXINT: 
0 desabilita interrução 
1 habilita interrupção 
0 TXINT Enable 
Habilita a interrupção TX: 
0 desabilita interrução 
1 habilita interrupção 
 
 
Observações: 
 
1- Estes bits são apenas bits de leitura, não sendo afetados por instruções de escrita, ou 
seja, o se escrever um dado neste registro, estes bits não serão afetados. O valor 
após R- indica o valor do bit após o reset. 
 
10.8 
Registros de Seleção da Taxa de Transmissão e recepção 
 
A taxa de transmissão e recepção do periférico é escolhida escrevendo-se em dois registros: 
SCIHBAUD (7052h) e SCILBAUD (7053h). A taxa de transmissão (Taxa_Trans) é dada 
pela seguinte equação: 
 
_
( 1)*8
CLKOUTTaxa Trans
BRR
= + 
 
Onde: 
¾ CLKOUT é 20MHz para a família TMS320C2xx; 
¾ BRR é a palavra composta pela concatenação dos 8 bits mais significativos de 
SCIHBAUD com os 8 bits menos significativos de SCILBAULD, conforme 
ilustrado na Figura 10.4. 
 
 
 
10.9 
10.4- Interface Serial para Periférico - SPI 
 
A conexão entre microcontroladores e dispositivos externos, tais como memória, 
conversores A/D, D/A e display de cristal líquido, entre outros, pode ser feita na forma 
paralela ou serial. A conexão na forma paralela envolve a ligação de muitas linhas de 
circuito impresso, ao mesmo tempo em que o circuito integrado deve possuir muitos pinos 
externos. Embora esta seja o tipo de conexão preferível para transferências de dados em 
altas velocidades, existem técnicas seriais, também de alta velocidade, que simplificam a 
construção da placa de circuito impresso. Um dos padrões mais difundido é a interface SPI 
(Serial Peripheral Interface) que necessita de apenas 4 linhas de controle para a 
comunicação entre os dispositivos. 
 
 
10.4.1- Descrição de um dispositivo SPI genérico 
A Figura 10.5 mostra dois dispositivos SPI conectados. O dispositivo da direita é 
denominado dispositivo mestre e o da esquerda dispositivo escravo. O dispositivo mestre 
possui o controle do sinal de clock (SPICLK) e é quem controla o processo de trocas de 
mensagens e dados. Os pinos de dados são denominados SPISIMO e SPISOMI. No 
primeiro pino os dados entram quando o dispositivo é escravo (SI Î Slave In) e saem 
quando o dispositivo e mestre (MOÎ Mestre Out). No segundo pino a operação é inversa. 
Observe na figura a setas indicando a direção dos dados. 
 
SPISIMO
SPISOMI
SPICLKI
SPIRXBUF
Registros de
Controle
SPIDATA
SPITXBUF
SPISIMO
SPISOMI
SPICLKI
SPIRXBUF
Registros de
Controle
SPIDATA
SPITXBUF
SPI-MESTRE SPI-ESCRAVO
 
 
Figura 10.5- Conexão entre dois dispositivos SPI 
 
 
A Figura 10.5 mostra ainda os principais registros dos controladores SPI: 
10.10 
 
¾ SPITXBUF Î É o buffer que contém o dado a ser transmitido. 
¾ SPIRXBUF Î É o buffer que contém o dado recebido. 
¾ SPIDATA Î É o registro de dados. Os dados a serem transmitidos são transferidos 
para este registro. Na realidade ao mesmo tempo em que o mestre transmite dados 
ele recebe dados do dispositivo escravo. Neste caso o mestre deve, por software, 
aceitar ou não o dado. Trataremos deste processo com mais detalhes depois. 
¾ Registros de controle ÎSão os registros utilizados para configurar a interface SPI, 
como estabelecer a freqüência do clock, definir se o dispositivo será mestre ou 
escravo e outras funções que serão exploradas posteriormente. 
 
Descrição da Operação 
Na Figura 10.5 o mestre inicia uma transmissão enviando o sinal de relógio SPICLK. 
Dados seriais são enviados pelo pino SPISIMO, do lado do mestre, e pelo pino SPISOMI, 
do lado do escravo. Por exemplo, na subida do clock os dados são disponibilizados nos 
pinos anteriores e na descida subseqüente do relógio os dados são armazenados no registro 
SPIDATA. Assim na descida de cada pulso de clock o escravo captura um bit vindo do 
mestre e o mestre captura um bit vindo do escravo. Deste modo ambos dispositivos 
transmitem e recebem dados simultaneamente. Cabe ao software de aplicação determinar se 
o dado é significativo ou não. 
 
O mestre pode iniciar uma transmissão a qualquer momento, uma vez que ele controla o 
sinal de clock, porém cabe ao projetista determinar como o mestre irá saber quando o 
escravo está pronto para transmitir dados. Isto pode ser feito, por exemplo, através de sinais 
de interrupção ou varredura por software. 
 
Exemplo 10.1 – Conexão DSP conversor D/A 
A Figura 10.6 mostra a conexão entre a interface SPI do DSP com a interface SPI do 
conversor D/A TLV5606 da TI. O processador é configurado como mestre, uma vez que o 
conversor só pode atuar como escravo. Na Figura o pino SPISTE (Slave Transmission 
Enable) da interface SPI do conversor é conectado ao pino FS do conversor. O conversor 
DA (conversor de 10 bits) recebe o dado do mestre e transforma este dado em um nível de 
tensão analógico que aparece no resistor RLOAD. A tensão no pino de saída é dada pela 
expressão (obtida da folha de dados do conversor): 
OUT=2 * REF *CODE [V] 210 
10
2. .
2out
REF CODEv = 
 
Onde REF é a tensão de referência e CODE é a palavra binária de 10 bits recebida pelo 
conversor. 
O conversor D/A deve receber do mestre uma palavra de controle pela interface serial, 
conforme mostrado na Figura 10.7. Os bits D14 e D13 são bits de controle para o conversor 
D/A. O bit SPD controla a velocidade de transmissão, sendo permitido o modo fast 
(SPD=1) ou slow (SPD=0). O bit PWR permite colocar o conversor no modo de baixo 
10.11 
consume (PWR=1 power down) O modo de operação normal é conseguido quando 
PWR=0. 
Os bits de dados correspondem aos bits D11 a D2 da palavra de controle. 
 
 
 
Figura 10.6 – Conexão entre o processador e um conversor D/A através da interface SPI 
 
Tabela 10.4- Palavra de Controle para o conversor D/A 
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 
X SPD PWR X novo valor para o conversor (10 bits) 0 0 
 
A Figura 10.7 mostra o diagrama de tempo para o conversor D/A. A Figura mostra que para 
que os dados possam ser transferidos o sinal de seleção do chip (CS ) deve estar baixo e o 
sinal FS também. Note que a cada transição negativa do clock (de alto para baixo) o dado é 
transferido para o conversor D/A. 
 
 
Figura 10.7 – Diagrama de tempo para o conversor D/A 
 
10.12 
Mais descrição sobre interface SPI 
 
No Exemplo 10.1 o DSP é o dispositivo mestre e o conversor D/A é um dispositivo 
escravo. Neste exemplo, o escravo somente recebe dados, ou seja, a comunicação é 
unidirecional. Existem outros dispositivos SPI, como memórias e conversores A/D, que 
além de receberem dados do mestre, também precisam enviar dados para o mestre. O que 
caracteriza uma transmissão SPI é que a comunicação é dita mestre-escravo, o que significa 
que o mestre é quem sempre comanda a troca de informações, uma vez que é ele quem 
comanda o sinal de clock. Considere o caso do mestre ser conectado a um conversor A/D. 
O mestre deve enviar comandos de configuração para o conversor e um comando de início 
de conversão. O conversor A/D ao ser configurado e receber o início de conversão, 
processa então a conversãoanalógica para digital do sinal monitorado. A pergunta é: 
quando a conversão estiver pronta como o conversor A/D irá transferir o dado para o 
mestre se ele não pode iniciar a conversão? A resposta para esta pergunta está ilustrada na 
Figura 10.8. Esta figura mostra a interface do DSP com o conversor A/D TLV3544 da 
Texas. Note que neste caso o pino SPISTE do DSP é utilizado como pino de habilitação do 
conversor A/D. O pino /INT EOC do conversor A/D indica o fim da conversão. Deste 
modo este pino pode ser continuamente lido pelo DSP, através da porta A (IOPA.1). Neste 
caso temos o procedimento de varredura, ou seja, o processador lê constantemente este pino 
até que ele mude de estado. Quando isto ocorre o DSP sabe que a conversão terminou e 
portanto pode fazer uma operação de leitura dos dados. Só que para ler o dado o 
processador tem que enviar para o conversor um dado sem significado chamado dado 
“dummy”. 
O segundo procedimento para que o processador saiba quando o conversor terminou a 
conversão é o uso da interrupção. Neste caso o DSP fica liberado para ralizar outras tarefas 
enquanto espera o final da conversão do dado. Quando o conversor termina o processo de 
conversão ele ativa o pino de interrupção do processador. A rotina de interrupção se 
encarrega de ler o dado, enviando um dado “dummy” para o conversor e recebendo a 
informação desejada do conversor. 
 
 
Figura 10.8 – Modos para o escravo solicitar transferência de dados para o mestre: 
varredura ou interrupção 
10.13 
10.4.2- Registradores do periférico SPI 
 
A Tabela 10.5 mostra os registradores do periférico SPI contido no DSP. Estes 
registradores são registros mapeados na memória do DSP e podem ser acessados utilizando 
endereçamento direto ou endereçamento indireto. 
 
Tabela 10.5- Endereços dos Registradores de Controle do SPI 
Endereço 
(Físico) 
Endereço 
relativo 
(DP=00E0h) 
Registro Comentário 
7040h 40h SPICCR Registro de controle de configuração SPI 
7041h 41h SPICTL Registro de controle de operação SPI 
7042h 42h SPISTS Registro de estado SPI 
7044h 43h SPIBRR Registro que define a velocidade do SPI 
7047h 47h SPIRXBUF Registro do buffer de recepção 
7048h 48h SPITXBUF Registro do buffer de transmissão 
7049h 49h SPIDAT Registro de dados seriais 
704Fh 4Fh SPIRI Registro de prioridade de interrupção 
 
 
Registro de controle da configuração SPICCR 
 
Tabela 10.6- Registro de controle da configuração SPICCR 
Bit Função valores 
7 SPI SW 
reset 
 
Resete da interface SPI por software: 
0 inicializa o SPI para a configuração de resete. 
 (Interface SPI fica no estado inativo) 
1 SPI está pronto para transmitir e receber dados. 
6 
Polaride 
do clock 
0 dado é externado na subida do SPICLK e lido na 
 descida do mesmo (o estado inativo do clock é baixo); 
1 dado é externado na descida do SPICLK e lido na 
 subida do mesmo (o estado inativo do clock é baixo); 
5-4 0 Bits reservados (não são afetados por escrita ) 
3-0 A3 –A0 
Define o tamanho do caractere a ser transferido ou 
recebido: 
0000 Æ 1 bit 
0001 Æ 2 bits 
....... 
1111 Æ 16 bits 
 
 
10.14 
Registro de controle de operação SPICTL 
 
Tabela 10.7- Registro de controle de operação SPICTL 
Bit Função Valores 
 
7-5 
 
 
 
Reservado 
 
4 
Overrun 
INT_ENA 
É o habilitador do flag que causa interrupção quando 
uma palavra é perdida, porque o sistema não foi capaz 
de ler a última palavra e uma nova palavra foi recebida. 
 
0 desabilita a interrupção 
1 habilita a interrupção de Overrun 
 3 Fase de CLKIN 
Este bit seleciona a fase do clock (ver observação 1) 
 
0 operação normal 
1 o sinal de clock é atrasado 
2 Mestre/ Escravo 
A interface SPI do DSP pode operar como mestre ou escravo. 
Para as operações usuais ela será sempre mestre. 
 
0 configurada como escravo 
1 configurada como mestre 
 
1 Talk 0 desabilita transmissão 1 habilita transmissão 
0 SPI_INT ENA 
Habilitação da interrupção do SPI. Quando habilitada uma 
interrupção é gerada quando um caracter está pronto para ser lido. 
 
0 desabilita interrupção 
1 habilita interrupção 
 
 
 
Observação: 
1) O bit Fase de CLKIN, juntamente com o bit de Polaridade do Clock (Tabela 
10.6), determinam quando o dado é externado e quando ele é lido. Observe 
por exemplo a Figura 10.7 que mostra quando o conversor D/A lê o dado 
vindo do DSP. Note que o conversor D/A adquire o dado na descida do 
clock. A Figura 10.9 mostra as 4 possibilidade determinadas pelos bits 
Polaridade e Fase do clock CLKIN. Uma palavra de 8 bits está sendo 
transmitida ou recebida. O último traço do gráfico mostra o momento em 
que os dados recebidos são retidos na interface SPI. A Tabela 10.8 mostra 
apresenta as 4 combinações. Possibilidade. Para a interface entre o DSP e o 
conversor D/A anterior o dado deve estar disponível na caída do clock, 
assim as configurações 00 e 11 seriam as únicas que atenderiam ao projeto. 
10.15 
 
 
 
 
Tabela 10.8 – Esquema do clock CLKIN 
Esquema do CLKIN Polaridade Fase 
SPI externa dado na subida do clock CLKIN e recebe 
dado na descida do mesmo. 
0 0 
SPI externa dado ½ ciclo à frente da subida do clock CLKIN 
e recebe dado na subida do mesmo. 
0 1 
SPI externa dado na descida do clock CLKIN e recebe dado na 
Subida do mesmo. 
1 0 
SPI externa dado ½ ciclo à frente da descida do clock CLKIN 
e recebe o dado na descida do mesmo. 
1 1 
 
 
 
 
Figura 10.9 – As quatro possibilidades de configuração de CLKIN 
 
 
 
 
 
Registro de Estado SPISTS 
 
10.16 
Tabela 10.9- Registro de controle da configuração SPISTS 
Bit Função Valores 
7 
Flag de 
Overrun 
 
Quando setado (‘1’) indica que um dado foi perdido 
devido a recepção de um novo dado. 
Este bit é zerado em uma das seguintes situações: 
• Por software ao escrever um neste bit; 
• Escrevendo 0 no bit de resete por software do SPI (SPICCR.7) 
• Após o resete do sistema. 
 
6 
SPI INT 
Flag de interrupção. Quando setado indica que a transmissão ou 
recepção do dado foi completada. Se a máscara de interrupção deste 
bit estiver setado será gerada uma interrupção na CPU (INT1 
ou INT5 dependendo da prioridade escolhida). Este bit é somente de 
leitura e só será zerado numa das situações abaixo: 
• Lendo o registro SPIRXBUF; 
• Escrevendo 0 no bit de resete por software do SPI (SPICCR.7) 
• Após o resete do sistema. 
 
 5 
BUF TX 
 cheio 
 
Este flag é somente de leitura. Quando um dado é escrito no registro 
SPITXBUF este bit é automaticamente setado. Ele é zerado quando o 
dado é transferido para o registro de deslocamento serial SPIDAT ou 
pelo resete do sistema. 
4-0 
 
Reservado 
 
 
 
Registro de velocidade de transmissão/recepção SPIBRR 
 
Tabela 10.10- Registro de velocidade de transmissão/recepção SPIBRR 
Bit Função Valores 
7 
 
 
Reservado 
 
 
6-0 
 
A6-A0 
 
Definem a taxa de transmissão expressa pela Equação 10.1 
 
 
 
10.17 
Se SPIBRR 3
 _
1
Caso contrario
 _
1
CLKOUTTaxa SPI
SPIBRR
CLKOUTTaxa SPI
SPIBRR
≥
= +
= +
 (10.1) 
 
Onde: 
• SPIBRR = (A6 – A0)10 varia de 0 a 127 
• CLKOUT é o clock do DSP. Para o F243 é de 50ns. 
 
 
 
Registro de Controle de Prioridade 
 
Este registro define o nível de prioridade da interrupção e o que ocorre durante o processo 
de emulação. 
 
Tabela 10.9- Registro de controle da configuração SPISTS 
Bit Função Valores 
7 Reservado 
6 Prioridade 
Interrupção 
 0 - Interrupção em alta prioridade (INT1) 
 1 – Interrupção em baixa prioridade (INT5)* 1 
5-4 Emulação 
Seleciona o comportamento da interface SPI 
durante o processo de emulação. Para maiores detalhes 
consulte o manual do fabricante.Use 00 
3-0 
 
Reservado (Bits somente de leitura) 
 
 
OBS: 
1- Use a interrupção INT1 quando estiver usando o sistema DSK da placa, uma vez 
que esta utiliza a INT5 para comunicação serial do sistema monitor com o PC. Se 
você puder utilizar periféricos em INTs não compartilhadas a programação fica bem 
mais simples. 
 
 
10.4.3- Exemplo de aplicação 
 
Neste exemplo vamos configurar a interface SPI para transferir os dados do gerador de 
senoides para o conversor D/A TLV5606. Supõem-se que o temporizador foi programado 
10.18 
para gerar uma interrupção à cada 1/16000 segundo e que o dado a ser transferido para o 
D/A encontra-se na variável senos. 
 
 
 
 .setsect “.text”, 8800h 
 .setsect “.vectors”, 0800h 
 .setsect “.data”, 300h 
 
* Definição dos Registros de Controle de I/O 
OCRPG .set 0E1h ; página de dados de OCR; 
OCRB .set 012h ; registro de controle B 
 
* Definição dos Registros SPI 
SPIPG .set 0E0h ; Página do SPI 
SPICCR .set 040h ;registro configuração SPI 
SPICTL .set 041h ;registro de controle da 
;operação 
SPIBRR .set 044h ;registro de velocidade 
SPITXB .set 048h ;buffer de saída 
 
* Definição dos Registros da interrupção do timer 
EVMPG .set 232 ;Página do EVM 
EVIFRA .set 2Fh ;pega o offset de EVIFRA 
EVIMRA .set 42Ch ;pega o offset de EVIMRA 
 
* Seção de dados 
 .data 
senos .word 0 ; variável de retorno da 
;subrotina seno 
 ----- ;completar 
 
 .sect “vectors” ;Seção dos vetores de 
;interrupção 
 B start ; reset 
 B int1 ; INT1 não usada neste exemplo 
 B int2 ; INT2 usada pelo Timer 
 
 .text 
Start: SETC SXM ;seta extensão de bit de sinal 
 CLRC OVM ;outras instruções 
 SPM 1 
 
* Configuração dos pinos do chip para SPI 
 LDP #OCRPG 
 SPLK #003Ch,OCRB ;seleciona os pinos para a 
;função primária do SPI (Ver 
10.19 
;Tab. 7.4) 
 
* Configuração do interface SPI 
 LDP #SPIPG ;carrega página SPI 
 SPLK #0000h,SPICCR ;reseta o SPI 
 SPLK #0006h;SPICTL ; seta modo mestre, clock 
;normal e talk 
 SPLK #09h,SPIBRR ;define taxa de 1MHz 
 SPLK #008Fh,SPICCR ;ativa SPI para transmitir 16 
;bits 
 
* Configuração do temporizador 
 ;configure temporizador para 
;gerar 1 interrupção a cada 
;1/16000 segundos. 
 
 
* Configuração da interrupção 
 LDP #0 ;Acesso à máscara de interrup. 
 SPLK #12h,04 ;Habilita INT2 e INT5(é usada 
;pelo sistema monitor da DSK) 
 LDP #EVMPG ;Página EVM 
 SPLK #0080h ,EVIMRA ;habilita interrupção do 
;temporizador 
 
* Gerando o seno 
loop: CALL seno ;chama subrotina que retorna o 
;valor da soma de senos na 
;variável senos 
espere LDP #EVMPG ;pagina de dados 
 BIT EVIFRA,(15-7) ;Isola o flag de interrupção 
;T1PINT 
 BCND espere,NTC ;espera até que se complete o 
;ciclo 
 LACL EVIFRA ; 
 SACL EVIFRA ;desativa T1PINT (habilita 
;nova interrupção) 
 B loop ;nova amostra 
 
* Interrupção do temporizador 
int2: LDP #300h ; 
 LACC senos,12 ;ajustando o dado para o SPI 
 XOR #0800h,16 ;inverte bit 11 do ACCH 
 AND #4FFC,16 ;zera os bits 0,1,12,13,15 
 OR #4000h,16 ;seta bit 14 
 LDP #SPIPG 
 SACH SPITXB ; transfere o dado para o 
10.20 
;conversor 
 CLRC INTM ;habilita nova interrupção 
 RET 
 
* Subrotina seno 
seno: Completar ... ;

Outros materiais