PROTOCOLO PARA COMUNICAÇÃO SERIAL
- moraiscg
- 15 de mai. de 2018
- 4 min de leitura

Protocolo pode ser definido como as regras, ou contratos, que possibilita uma comunicação, transferência de dados entre sistemas distintos. Um exemplo bem conhecido é o protocolo IP (Internet Protocolo).
Diversas tecnologias de interligação entre sistemas já foram desenvolvidas, podendo serem separadas em duas grandes categorias, a comunicação paralela e serial, que por suas vezes se subdividem. (Figura seguinte).

A comunicação paralela utiliza barramentos paralelo para comunicação o que torna os circuitos caros e muito grande. Assim, a comunicação serial, que utiliza menos fio, tem se tornado a mais utilizada na comunicação entre dispositivos.
A comunicação serial pode ser utilizada em dois métodos: assíncrona e síncrona. O método assíncrono não precisa de um sinal de clock, tendo um número de fios necessários é menor. Contudo, o envio dos dados é mais complicado e susceptível a erros, por isso alguns parâmetros são necessários para garantir o envio sem erros. Um parâmetro muito evidente em comunicação assíncrona é o Baud Rate, que especifica a velocidade de recepção e envio. Por isto é muito importante que os dois dispositivos utilizem a mesma taxa.

Na comunicação síncrona um sinal de "clock" acompanha a transferência de dados, ou seja, cada bit ou conjunto de bits enviado depende de um pulso do clock, tendo como principal vantagem sua velocidade de transmissão de dados, em contrapartida é necessário um fio extra para o clock.

Na comunicação serial podemos destacar três métodos, que são muito conhecidos e utilizados:
· UART: Universal Asynchronous Receiver Transmitter;
· SPI: Serial Peripheral Interface;
· I2C: Inter Integrated Circuit.
O sentido de transmissão pode ser: Full-duplex, que indica que o dispositivo pode transmitir e receber dados ao mesmo tempo; Half-duplex, quando o dispositivo pode transmitir e receber dados, mas não simultaneamente; e simplex, quando a comunicação do dispositivo é unidirecional, ou seja, apenas envia ou recebe dados.
RX é o termo usado para representar o pino receptor de uma comunicação serial e TX representa o transmissor. Os estados que um bit pode assumir, nível alto (1) ou nível baixo (0), é chamado de nível lógico. Estes níveis lógicos são interpretados pelos protocolos conforme suas tensões de funcionamento. Por exemplo o protocolo TTL considera de 2V a 5V nível lógico alto (bit 1) e de 0V a 0,8V nível lógico baixo (bit 0).
Nos protocolos síncronos e apesar do padrão de cada protocolo, cada fabricante possui a liberdade de desenvolver dispositivos com suas velocidades, principalmente nos protocolos síncronos, como mostra a tabela seguinte.

Na comunicação serial síncrona é utilizado o conceito de Mestre-Escravo. Normalmente, o gerador do sinal de sincronismo é definido como o Mestre (Master) da comunicação. Para os dispositivos que recebe o sinal de sincronismo gerado é chamado de Escravo (Slave). A s conexões deste tipo de comunicação pode conter um Master e vários Slaves, como no exemplo da figura abaixo.

Veja que na figura anterior os sinais traficam num mesmo barramento. A tecnologia utilizada para não sobrecarregar eletricamente o barramento é utilizar transistores de pull-up ou push-pull. A técnica pull-up exigi um resistor para Vcc, enquanto o push-pul não exigi. O resultado é que a qualidade do sinal com push-pull tem um formato é mais definido. Veja a figura seguinte.

O protocolo SPI é a abreviação do Inglês serial peripheral interface, ou em bom português, Serial Protocolo de Interface Periférica.
O SPI tem como aplicações a comunicação com sensores, cartões, telas, etc. A primeira empresa a usar a tecnologia SPI em seus equipamentos foi a Motorola no final de 1970, ela conectou um MCU com funções periféricas, mais tarde o SPI foi adotado por outras empresas do setor chegando a consolidar-se como um protocolo eficiente, principalmente com a evolução dos sistemas embarcados microprocessadores e microcontroladores como o AVR, PIC, Arduino, Pi Raspberry, etc.
Fisicamente o SPI é uma interface de comunicação simples de 4 fios, opera em modo full duplex, outra característica do SPI é que não existe o conceito de endereço especifico para o master e ou slave.
O uso do SPI atualmente é bem amplo, inclui na comunicação de diversos sensores, de temperatura, de pressão, ADC, telas sensíveis ao toque, controles de videogame, dispositivos de controle de codecs de áudio, potenciômetros digitais, DAC, controle de lentes de câmera EF, comunicações Ethernet , USB , USART , CAN , IEEE 802.15.4 , do IEEE 802.11, jogos de vídeo games portáteis, Memória Flash e EEPROM, relógios em tempo real, LCD, gerenciamento de dados de imagem, etc.
Os pinos básicos utilizados na comunicação SPI são mostrados na tabela seguinte:

Atualmente, dois tipos de ligação para o protocolo SPI: a ligação paralela; e ligação em cascata. Na ligação paralela é utilizado 1 pino de MOSI, MISO e clock para todos dispositivos e 1 pino SS para cada escravo ligado a comunicação.

Na ligação cascata é utilizado 1 pino SS para todos os dispositivos ligados na comunicação, porém causa perda de velocidade na comunicação, mas economiza em número de fios.

O protocolo SPI estipula ainda quatro métodos de transmissão e sincronização de dados entre transmissor e receptor usando o sinal de clock. Assim, o sinal de clock pode ter sua fase e polaridade configuradas de formas diferentes para gerar os 4 modos de transmissão. Estes modos de operação são definidos pelos parâmetros CPOL e CPHA conforme esquema mostrado abaixo. O parâmetro CPOL é relacionado a polaridade e CPHA a fase. Na maioria dos dispositivos a identificação do modo é automática.


Na tabela seguinte é mostrado a comparação entre alguns tipos de protocolo.

Para utilizar o protocolo SPI para programar microcontroladores, por exemplo o MCU8051, vários comandos podem ser enviados por SPI quando o bit RST está definido. Antes do MCU8051 aceitar qualquer comando, ele precisa ser colocado no modo de comando.
É para isso que este comando serve. Sempre execute este comando antes de executar qualquer outro comando. Assim:

Os comandos enviados para o microcontrolador pode ser de apagar (Erase), escrever na memória de código, ler da memória de código, escrever e ler da memória de dados, bloqueia memória. Tudo mostrado exemplos abaixo.

E outros comandos a mais:

Comments