Les conseils ESP32 ont pris en charge plusieurs protocoles de communication. Ces protocoles incluent des usart série, I2C (IIC) et SPI. Parallèlement à ces cartes ESP32, il existe également des protocoles de communication sans fil disponibles tels que WiFi, Dual Bluetooth, ESP-Now, Lora et bien d'autres. Aujourd'hui, nous nous concentrerons sur le protocole ESP32 SPI (interface périphérique en série).
SPI (interface périphérique en série) dans ESP32
L'interface périphérique SPI ou en série est un protocole de communication de courte distance utilisé dans plusieurs dispositifs de microcontrôleur tels que ESP32. Il s'agit d'un protocole de communication synchrone principalement utilisé par les microcontrôleurs pour communiquer avec ses périphériques, de sorte que nous pouvons utiliser ce protocole pour lire et contrôler les appareils qui prennent en charge le protocole SPI.
SPI Communication prend en charge la configuration d'esclaves maître Il y a toujours un un maître qui contrôle plusieurs esclaves. C'est un Un duplex plein Communication afin que les données puissent être échanger simultanément du maître à l'esclave et de l'esclave à la maîtrise.
Communication SPI dans les besoins ESP32 quatre différentes broches pour transmettre et recevoir des données aux appareils. Voici ces quatre épingles:
Note: Certains appareils qui sont esclaves uniquement et ne peuvent pas agir comme maîtrise leur dénomination de la broche est différente comme:
Broches SPI dans ESP32
La carte ESP32 est livrée avec 4 différents périphériques SPI intégrés à son microcontrôleur.
La plupart des planches ESP32 sont livrées avec des broches SPI pré-sidés pour SPI2 et SPI3. Cependant, s'il n'est pas affecté, nous pouvons toujours attribuer des broches SPI dans le code. Voici les épingles SPI trouvées dans la plupart de la carte ESP32 qui sont pré-sidées:
Interface SPI | Mosi | MISO | SCLK | CS |
Vspi | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
Hspi | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Les broches SPI mentionnées ci-dessus peuvent varier en fonction du type de carte. Maintenant, nous allons écrire un code pour vérifier les broches ESP32 SPI à l'aide d'Arduino IDE.
Comment trouver des broches SPI par défaut ESP32
Le code écrit ci-dessous aidera à trouver les broches SPI par défaut dans la carte ESP32. Open Arduino IDE Connect ESP32 avec PC, sélectionnez le port droit et téléchargez le code. Puis attendez la sortie. C'est ça! c'est comme ça que c'est simple
Code pour trouver des broches SPI par défaut ESP32
Le code ci-dessous imprimera les broches SPI par défaut ESP32 sur le moniteur série.
void setup()
En série.commencer (115200);
En série.print ("Mosi gpio broche:");
En série.println (mosi);
En série.print ("Miso gpio broche:");
En série.println (miso);
En série.print ("SCK GPIO PIN:");
En série.println (SCK);
En série.print ("SS GPIO Pin:");
En série.println (ss);
VOID LOOP ()
Le code commence par définir le taux de bauds et continue en appelant la broche GPIO par défaut pour le protocole de communication ESP32 SPI.
Sortir
Ici, dans notre cas, le moniteur en série a affiché respectivement les broches 23, 19, 18 et 5 pour Mosi, Miso, SCK et SS.
Comment utiliser des broches SPI personnalisées dans ESP32
Grâce aux fonctionnalités de multiplexage ESP32, il est possible de configurer toute broche de la carte ESP32 en tant que UART, I2C, SPI et PWM. Il suffit de les attribuer dans le code. Nous allons maintenant définir de nouvelles broches SPI et les imprimer sur le moniteur en série pour confirmer.
Tapez le code ci-dessous dans l'éditeur Arduino IDE.
#inclure
void setup()
En série.commencer (115200);
En série.print ("PIN MOSI GPIO par défaut:");
En série.println (mosi);
En série.print ("PIN MISO GPIO par défaut:");
En série.println (miso);
En série.print ("Pin SCK GPIO par défaut:");
En série.println (SCK);
En série.print ("PIN SS GPIO par défaut:");
En série.println (ss);
#Define SCK 25
#Define Miso 32
#define mosi 26
#Define CS 33
/ * Library_Name Sensor_name (CS, MOSI, MISO, SCK); // Appel de nouvelles broches SPI * /
En série.print ("MOSI NOUVELLE PIN GPIO:");
En série.println (mosi);
En série.print ("Miso New GPIO Pin:");
En série.println (miso);
En série.print ("SCK New GPIO Pin:");
En série.println (SCK);
En série.print ("SS nouvelle broche gpio:");
En série.println (ss);
VOID LOOP ()
Ici, dans le code ci-dessus, nous incluons la bibliothèque série SPI puis imprimez les broches SPI par défaut sur le moniteur en série. On peut ignorer cette partie du code si elle n'est pas nécessaire. Ensuite, en utilisant Define, nous attribuons de nouvelles broches à SPI et les imprimez un par un sur moniteur en série.
Sortir
La sortie affichée sur le moniteur série imprime toutes les nouvelles broches SPI pour la carte ESP32.
ESP32 avec plusieurs appareils SPI
ESP32 a deux bus SPI, et chaque bus peut contrôler 3 dispositifs qui signifie qu'un total de 6 appareils peuvent être contrôlés à l'aide de SPI de ESP32. Pour contrôler plus d'appareils, nous pouvons utiliser différentes techniques de multiplexage.
Tout en contrôlant plusieurs dispositifs d'esclaves ESP32 agira en tant que maître pour eux les trois lignes Miso, Mosi SCLK sera le même pour eux seule la différence est CS Clock Signal Line. Pour envoyer des données à un appareil esclave, la broche CS de cet appareil esclave doit être réglée sur bas.
La syntaxe suivante sera suivie si nous voulons régler CS à Low.
DigitalWrite (CS, Low);
Supposons que nous voulons lire les données de tout autre appareil, nous devons donc définir la broche CS du premier appareil esclave comme haut pour le désactiver.
DigitalWrite (CS_1, High); // Désactiver la broche CS de l'esclave 1
DigitalWrite (CS_2, Low); // activer la broche CS de l'esclave 2
Conclusion
L'interface périphérique série est un protocole de communication câblé utilisé par le microcontrôleur ESP32 pour échanger des données entre plusieurs dispositifs d'esclaves. ESP32 SPI prend en charge deux bus différents pour la communication avec chaque capacité de bus de contrôler 3 appareils d'esclaves. Par défaut, ESP32 est livré avec des broches SPI; Cependant, nous pouvons également définir et utiliser des épingles personnalisées à l'aide du code.