Aula 20 – SPI (Serial Peripheral Interface)
Nesta aula vamos estudar o barramento SPI, uma comunicação serial síncrona muito utilizada em memórias, cartões SD, displays TFT, conversores ADC externos e dispositivos que exigem maior velocidade de transferência.
1. O que é SPI?
SPI significa Serial Peripheral Interface. É um protocolo de comunicação serial síncrona utilizado para troca de dados entre um dispositivo mestre e um ou mais escravos.
SPI = Serial Peripheral Interface
2. Diferença básica entre SPI e I²C
O I²C usa apenas dois fios, enquanto o SPI normalmente usa quatro sinais principais. Em compensação, o SPI costuma ser mais rápido e simples de controlar.
| Protocolo | Fios principais | Característica |
|---|---|---|
| UART | TX e RX | Serial assíncrona |
| I²C | SDA e SCL | Dois fios e endereçamento |
| SPI | MOSI, MISO, SCK e SS | Alta velocidade |
3. Sinais do SPI
| Sinal | Função |
|---|---|
| MOSI | Master Out Slave In – dado enviado do mestre para o escravo |
| MISO | Master In Slave Out – dado enviado do escravo para o mestre |
| SCK | Serial Clock – clock gerado pelo mestre |
| SS / CS | Slave Select / Chip Select – seleciona o dispositivo escravo |
4. Mestre e Escravo
No SPI, o mestre controla o clock e seleciona qual escravo irá se comunicar.
O escravo só responde quando seu pino SS ou CS é ativado.
PIC Mestre
|
+-- MOSI
+-- MISO
+-- SCK
+-- CS1 → Memória Flash
+-- CS2 → Display TFT
+-- CS3 → Cartão SD
5. Como ocorre a transmissão
Enquanto o mestre envia dados pela linha MOSI, o escravo pode enviar dados de volta pela linha MISO. Isso permite comunicação em duas direções.
Mestre envia: MOSI → Escravo
Escravo responde: MISO → Mestre
Clock: SCK
6. O pino SS ou CS
O pino SS ou CS funciona como uma chave de seleção.
Normalmente, o dispositivo é selecionado quando esse pino vai para nível baixo.
CS = 0 → Escravo selecionado
CS = 1 → Escravo desativado
7. SPI no PIC
Nos microcontroladores PIC, a comunicação SPI normalmente utiliza o módulo MSSP, o mesmo periférico usado para I²C em muitos modelos.
MSSP = Master Synchronous Serial Port
8. Registradores comuns
| Registrador | Função |
|---|---|
| SSPCON | Configura o módulo SPI |
| SSPSTAT | Configura estado e amostragem dos dados |
| SSPBUF | Buffer de transmissão e recepção |
9. Configuração básica do SPI
void SPI_Init()
{
TRISCbits.TRISC3 = 0; // SCK como saída
TRISCbits.TRISC4 = 1; // SDI/MISO como entrada
TRISCbits.TRISC5 = 0; // SDO/MOSI como saída
SSPSTAT = 0x40;
SSPCON = 0x20; // SPI Master, clock Fosc/4
}
10. Enviando e recebendo um byte
unsigned char SPI_Write(unsigned char dado)
{
SSPBUF = dado; // Envia dado
while(!SSPSTATbits.BF); // Aguarda finalizar
return SSPBUF; // Retorna dado recebido
}
11. Exemplo com Chip Select
CS = 0; // Seleciona escravo
resposta = SPI_Write(0x9F);
CS = 1; // Desativa escravo
12. Memórias Flash SPI
Memórias Flash SPI são muito usadas para armazenamento de dados, logs, parâmetros e configurações de sistemas embarcados.
PIC SPI → Memória Flash SPI
13. Cartões SD
Cartões SD podem operar em modo SPI, permitindo que o PIC grave arquivos, logs e medições.
PIC → SPI → Cartão SD
14. Displays TFT
Muitos displays gráficos TFT usam SPI por permitir atualização rápida da tela com poucos fios.
PIC → SPI → Display TFT
15. Comparação SPI × I²C × UART
| Característica | UART | I²C | SPI |
|---|---|---|---|
| Clock | Não possui | Possui | Possui |
| Velocidade | Média | Média | Alta |
| Fios | 2 | 2 | 4 ou mais |
| Endereço | Não | Sim | Não, usa CS |
| Uso comum | PC, Bluetooth, RS-485 | RTC, sensores, LCD | SD, TFT, Flash |
16. Aplicações industriais e embarcadas
- Data logger com cartão SD.
- Displays gráficos industriais.
- Memórias externas para parâmetros.
- Conversores ADC externos de alta resolução.
- Conversores DAC externos.
- Módulos de rádio e comunicação sem fio.
17. Cuidados importantes
- Verifique se todos os dispositivos usam a mesma tensão lógica.
- Use um pino CS separado para cada escravo.
- Evite fios longos em comunicação SPI.
- Confira o modo SPI exigido pelo dispositivo.
- Consulte sempre o datasheet do componente.
18. Exercícios
Exercício 1: O que significa MOSI?
Master Out Slave In
Exercício 2: O que significa MISO?
Master In Slave Out
Exercício 3: Qual linha fornece o clock no SPI?
SCK
Exercício 4: Qual sinal seleciona o escravo?
SS ou CS
19. Laboratório prático
Monte um PIC com uma memória Flash SPI ou módulo de cartão SD. O objetivo é inicializar o barramento SPI e enviar um byte de teste.
PIC SCK → SCK do módulo
PIC MOSI → MOSI do módulo
PIC MISO ← MISO do módulo
PIC CS → CS do módulo
GND ↔ GND
20. Resumo da Aula
- SPI é comunicação serial síncrona.
- MOSI envia dados do mestre para o escravo.
- MISO envia dados do escravo para o mestre.
- SCK é o clock gerado pelo mestre.
- SS/CS seleciona o dispositivo escravo.
- SPI é indicado para aplicações de alta velocidade.
Próxima Aula – Aula 21
Na próxima aula vamos estudar LCD 16x2 com PIC, aprendendo a exibir textos, valores de sensores, mensagens de status e informações de processos.