Circuitos integrados, Eletrônica embarcada, Microcontroladores, Telecomunicações

Protocolo de comunicação SPI

O SPI, abreviatura de Interface Serial Periférica, é outro protocolo de comunicação usado em microcontroladores e seus periféricos.

Como funciona o SPI?

A Motorola implementou este padrão pela primeira vez em 1970. Assim como o I2C, é um padrão de comunicação serial síncrono. Neste método de comunicação, os dispositivos transmissores e receptores devem ter seus sinais de clock sincronizados, ou seja, devem mudar de bit ao mesmo tempo. Uma solução é enviar este sinal de clock do transmissor para os receptores.

Transmissão de dados no SPI.
No SPI, os dados são transmitidos continuamente. Sem a necessidade de bits para indicar o início e o fim da mensagem. Fonte: teachmemicro.com.

O SPI opera no modo full-duplex, ou seja, ambos os lados da comunicação podem trocar informações entre si ao mesmo tempo.

interface entre o chip e o pino de saída no SPI
Na interface entre o circuito integrado e o terminal de saída, 2 MOSFETs determinam se o sinal do pino será nível 1(“ALTO”, à esquerda) ou 0(“BAIXO”, à direita). Fonte: Open4Tech.
A curva de um pulso na configuração push-pull, usada pelo SPI. Em comparação com a configuração pull-up ou dreno aberto, presente nos protocolos I2C. Fonte: embarcados.

Interface serial e paralela

transmissão série e paralelo
Em uma interface de comunicação serial (serial interface), como é o caso do SPI, os bits são transmitidos um de cada vez a cada pulso de clock. A vantagem é que requer menos espaço. Em uma interface paralela (parallel interface), vários bits podem ser transmitidos ao mesmo tempo. A velocidade é maior, mas cada bit precisa ter um canal físico para a transmissão. Fonte: Adafruit.
registrador de deslocamento para SPI
O mestre e o escravo devem ter um registrador de deslocamento (shift register) de 8 bits para fazerem a comunicação SPI. Fonte: fastbitlab.com.

O barramento SPI

A interface de comunicação SPI requer 4 fios entre o master (que transmite comandos) e o slave (que recebe comandos). 

  • SCLK: sinal de clock serial. Para ambos terem o mesmo sinal de clock, pois esta interface é síncrona.
  • MOSI (Master Output Slave Input): canal de comunicação para o mestre ou controlador enviar dados para o escravo ou periférico.
  • MISO (Master Input Slave Output): canal para os periféricos enviarem dados para o controlador.
  • SS ou CS (Slave/Chip Select): o mestre deve enviar sinal de nível “BAIXO” neste terminal para se comunicar com o receptor. Não haverá troca de dados se este estiver no nível “ALTO” ou 1.
Barramento de comunicação SPI de um mestre para vários escravos.
Para se conectar com mais de um periférico (peripheral), o controlador (controller) deve ter mais de um pino CS. Fonte: ITP Physical Computing.

Parâmetros do clock

É possível ajustar dois parâmetros no canal do clock para configurar o barramento SPI: polaridade (polarity) e fase (phase). A polaridade do clock (CPOL) determina se o estado ocioso do clock (idle state) será “1” ou “0”. Enquanto a fase do clock (CPHA), determina se a amostragem dos dados será na borda de subida ou na borda de descida do sinal de clock, este parâmetro também depende da polaridade.

Parâmetros do clock no SPI.
Os quatro modos de ajuste dos parâmetros do clock. Fonte: StackExchange.
amostragem no SPI
Exemplo de amostragem dos dados no SPI. Fonte: Stack Exchange.

Vantagens e desvantagens em relação ao I2C

As vantagens do SPI são:

  • Não precisa de bits de endereçamento, tornando a transmissão mais simples.
  • Maior taxa de transmissão que o I2C.
  • Comunicação de duas vias (full-duplex). Enquanto o I2C é half-duplex, também é de duas vias, mas o fluxo de informação em um sentido deve esperar a hora que cessar a transmissão no sentido oposto.
  • Menor consumo de potência.

Quanto às desvantagens:

  • Esta interface requer 4 fios para cada periférico, enquanto o I2C só necessita de dois.
  • Apenas um mestre é viável.
  • Não há correção de erros.
  • Não há verificação de recepção dos dados.

About Pedro Ney Stroski

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *