SPI em Esptop 10 usando Arduino IDE

SPI em Esptop 10 usando Arduino IDE

As placas ESP32 têm suporte para vários protocolos de comunicação. Esses protocolos incluem serial USART, I2C (IIC) e SPI. Juntamente com essas placas ESP32, também existem protocolos de comunicação sem fio disponíveis, como wifi, bluetooth duplo, esp-now, lora e muito mais. Hoje estaremos focados no protocolo ESP32 SPI (interface periférica em série).

SPI (interface periférica em série) no ESP32

SPI ou interface periférica em série é um protocolo de comunicação de curta distância usado em vários dispositivos de microcontrolador, como o ESP32. É um protocolo de comunicação síncrona usado principalmente pelos microcontroladores para se comunicar com seus periféricos, de modo que podemos usar esse protocolo para ler e controlar dispositivos que suportam o protocolo SPI.

A comunicação SPI suporta a configuração do escravo mestre, sempre existe um um mestre que controla vários escravos. É um duplex completo Comunicação para que os dados possam ser trocados simultaneamente de mestre ao escravo e escravo para dominar.


Comunicação SPI nas necessidades ESP32 quatro pinos diferentes para transmitir e receber dados para dispositivos. A seguir, esses quatro pinos:

  1. SCK: A linha do relógio determina a velocidade de transmissão
  2. MISSÔ: Mestre em escravo é o pino de transmissão do escravo para o mestre
  3. Mosi: Master Out Slave In Is Line de transmissão para dados mestre para escravos
  4. SS: A linha de seleção de escravos ajuda o ESP32 a selecionar um determinado escravo e transmitir ou receber dados desse escravo

Observação: Alguns dispositivos que são apenas escravos e não podem agir como mestre que sua nomeação de alfinetes é diferente, como:

    • MISSÔ é substituído por Sdo (Dados em série OUT)
    • Mosi é substituído por SDI (Dados em série em)

Pinos SPI no ESP32

A placa ESP32 vem com 4 Diferentes periféricos de SPI integrados com seu microcontrolador.

    • SPI0: Apenas para comunicação interna da memória- não pode ser usado com dispositivos SPI externos
    • SPI1: Apenas para comunicação interna da memória- não pode ser usado com dispositivos SPI externos
    • SPI2: (Hspi) têm sinais de ônibus independentes. Cada ônibus pode derivar 3 dispositivos escravos
    • SPI3: (VSPI) o sinal de barramento é independente. Cada ônibus pode derivar 3 dispositivos escravos

A maioria das placas ESP32 vem com pinos SPI pré -projetados para SPI2 e SPI3. No entanto, se não for atribuído, sempre podemos atribuir pinos SPI no código. A seguir, estão os pinos SPI encontrados na maioria da placa ESP32, que é pré -projetada:

Interface SPI Mosi MISSÔ Sclk Cs
VSPI GPIO 23 GPIO 19 GPIO 18 GPIO 5
Hspi GPIO 13 GPIO 12 GPIO 14 GPIO 15



Os pinos SPI acima mencionados podem variar dependendo do tipo de placa. Agora vamos escrever um código para verificar os pinos SPI ESP32 usando Arduino IDE.

Como encontrar pinos SPI padrão do ESP32

O código escrito abaixo ajudará a encontrar os pinos SPI padrão na placa ESP32. Abra o Arduino IDE Connect Esp32 com PC, selecione a porta correta e faça o upload do código. Então espere pela saída. É isso! é assim que é simples

Código para encontrar pinos SPI padrão do ESP32

O código abaixo será imprimido os pinos SPI padrão do ESP32 no monitor serial.

Void Setup ()
Serial.começar (115200);
Serial.print ("Mosi gpio pin:");
Serial.println (mosi);
Serial.print ("miso gpio pin:");
Serial.println (miso);
Serial.print ("pino sck gpio:");
Serial.println (sck);
Serial.print ("SS gpio pin:");
Serial.println (ss);

Void Loop ()


O código é iniciado definindo a taxa de transmissão e continua chamando o PIN GPIO padrão para o Protocolo de Comunicação Esp32 SPI.

Saída

Aqui, no nosso caso, o monitor serial exibiu o pino 23, 19, 18 e 5 para mosi, miso, sck e ss, respectivamente.

Como usar pinos SPI personalizados no ESP32

Graças à multiplexação do ESP32, é possível configurar qualquer pino da placa ESP32 como UART, I2C, SPI e PWM. Só é preciso atribuí -los no código. Agora definiremos novos pinos SPI e os imprimiremos no monitor serial para confirmar.

Digite o código fornecido abaixo no Arduino IDE Editor.

#incluir
Void Setup ()
Serial.começar (115200);
Serial.print ("Pin Padrão de Mosi GPIO:");
Serial.println (mosi);
Serial.print ("Pin padrão do miso GPIO:");
Serial.println (miso);
Serial.print ("Pino de GPIO SCK padrão:");
Serial.println (sck);
Serial.print ("Pin Padrão SS GPIO:");
Serial.println (ss);
#Define SCK 25
#Define miso 32
#Define Mosi 26
#Define CS 33
/*Biblioteca_name sensor_name (cs, mosi, miso, sck); // Ligue para os novos pinos SPI*/
Serial.print ("Mosi New Gpio Pin:");
Serial.println (mosi);
Serial.print ("miso novo pino gpio:");
Serial.println (miso);
Serial.print ("SCK New GPio Pin:");
Serial.println (sck);
Serial.print ("SS New Gpio Pin:");
Serial.println (ss);

Void Loop ()


Aqui no código acima, incluímos a Biblioteca SPI serial e então imprimi os pinos SPI padrão no monitor serial. Pode -se pular esta parte do código se não for necessário. Em seguida, usando definir, atribuímos novos pinos para SPI e imprimi -los um por um no monitor serial.

Saída

Saída exibida no monitor serial imprime todos os novos pinos SPI para a placa ESP32.

Esp32 com vários dispositivos SPI

O ESP32 tem dois ônibus SPI, e cada ônibus pode controlar 3 dispositivos o que significa que um total de 6 dispositivos pode ser controlado usando SPI de ESP32. Para controlar mais dispositivos, podemos usar diferentes técnicas de multiplexação.

Embora o controle de vários dispositivos de escravo ESP32 atue como mestre para eles todas as três linhas miso, o Mosi Sclk será o mesmo para eles, apenas a diferença é a linha de sinal do relógio CS. Para enviar dados para um dispositivo de escravo CS desse dispositivo escravo deve ser definido como baixo.


A seguir, a sintaxe será seguida se quisermos definir CS como baixo.

DigitalWrite (CS, baixo);


Suponha que queremos ler dados de qualquer outro dispositivo, por isso devemos definir o pino CS do primeiro dispositivo escravo para desativá -lo.

DigitalWrite (CS_1, alto); // Desativar o pino CS do escravo 1
DigitalWrite (cs_2, baixo); // Habilite CS Pin of Slave 2

Conclusão

A interface periférica em série é o protocolo de comunicação com fio usado pelo microcontrolador ESP32 para trocar dados entre vários dispositivos escravos. O ESP32 SPI suporta dois ônibus diferentes para comunicação com cada capacidade de ônibus de controlar 3 dispositivos escravos. Por padrão, o ESP32 vem com pinos SPI; No entanto, também podemos definir e usar pinos personalizados usando código.