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.
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 serial e paralela
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.
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.
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.