ESP32 -Boards unterstützen mehrere Kommunikationsprotokolle. Diese Protokolle umfassen serielle USAT, I2C (IIC) und SPI. Zusammen mit diesen ESP32-Boards gibt es auch drahtlose Kommunikationsprotokolle wie WiFi, Dual Bluetooth, ESP-Now, Lora und viele weitere. Heute konzentrieren wir uns auf das ESP32 -SPI -Protokoll (serielle periphere Grenzfläche).
SPI (serielle periphere Grenzfläche) in ESP32
Die SPI- oder serielle periphere Grenzfläche ist ein kurzes Distanz -Kommunikationsprotokoll, das in mehreren Mikrocontroller -Geräten wie ESP32 verwendet wird. Es ist ein synchrones Kommunikationsprotokoll, das hauptsächlich von Mikrocontrollern verwendet wird, um mit seinen Peripheriegeräten zu kommunizieren, sodass wir dieses Protokoll verwenden können, um Geräte zu lesen und zu steuern, die SPI -Protokoll unterstützen.
Die SPI -Kommunikation unterstützt die Master -Slave -Konfiguration. Es gibt immer a eins Meister Das steuert mehrere Sklaven. es ist ein Vollduplex Kommunikation So können Daten gleichzeitig vom Master zu Sklave und Sklave zu Master tauschten.
SPI -Kommunikation in ESP32 -Bedürfnissen vier Verschiedene Stifte zum Senden und Empfangen von Daten an Geräte. Im Folgenden finden Sie diese vier Stifte:
Notiz: Einige Geräte, die nur Sklave sind und nicht als Meister ihrer Pin -Benennung fungieren können, ist unterschiedlich wie folgt:
SPI -Stifte in ESP32
ESP32 Board kommt mit mit 4 Verschiedene SPI -Peripheriegeräte, die in seinen Mikrocontroller integriert sind.
Die meisten ESP32 -Boards sind mit vorgefertigten SPI -Pins für SPI2 und SPI3 ausgestattet. Wenn wir jedoch nicht zugewiesen sind, können wir immer SPI -Pins im Code zuweisen. Im Folgenden finden Sie die SPI -Stifte, die in den meisten Vorschriften der ESP32 vorhanden sind, die vorgeschrieben sind:
SPI -Schnittstelle | Mosi | Miso | Sclk | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
Hspi | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Oben erwähnte SPI -Stifte können je nach Boardtyp variieren. Jetzt schreiben wir einen Code, um ESP32 -SPI -Pins mit Arduino IDE zu überprüfen.
So finden Sie ESP32 Standard -SPI -Stifte
Der unten geschriebene Code hilft dabei, die Standard -SPI -Pins in der ESP32 -Karte zu finden. Offen. Warten Sie dann auf die Ausgabe. Das ist es! So einfach ist es
Code zum Finden von ESP32 Standard -SPI -Pins
Der unten angegebene Code druckt die ESP32 -Standard -SPI -Pins auf dem Serienmonitor aus.
void setup ()
Serie.Beginnen Sie (115200);
Serie.print ("Mosi gpio pin:");
Serie.println (mosi);
Serie.print ("Miso gpio pin:");
Serie.println (Miso);
Serie.print ("sck gpio pin:");
Serie.println (sck);
Serie.print ("ss gpio pin:");
Serie.println (ss);
void Loop ()
Der Code beginnt mit der Definition der Baudrate und wird fortgesetzt, indem der Standard -GPIO -PIN für das ESP32 -SPI -Kommunikationsprotokoll aufgerufen wird.
Ausgang
Hier in unserem Fall zeigte der Serienmonitor den Pin 23, 19, 18 und 5 für Mosi, Miso, SCK und SS.
So verwenden Sie benutzerdefinierte SPI -Pins in ESP32
Dank ESP32 -Multiplexing -Funktionen ist es möglich, einen Pin von ESP32 -Board als UART, I2C, SPI und PWM zu konfigurieren. Man muss sie nur im Code zuweisen. Jetzt werden wir neue SPI -Stifte definieren und sie auf dem Serienmonitor ausdrucken, um dies zu bestätigen.
Geben Sie den unten angegebenen Code in Arduino IDE Editor ein.
#enthalten
void setup ()
Serie.Beginnen Sie (115200);
Serie.print ("Standard MOSI GPIO PIN:");
Serie.println (mosi);
Serie.print ("Standard MISO GPIO PIN:");
Serie.println (Miso);
Serie.print ("Standard SCK GPIO PIN:");
Serie.println (sck);
Serie.print ("Standard SS GPIO PIN:");
Serie.println (ss);
#define SCK 25
#define Miso 32
#define Mosi 26
#Define CS 33
/*Library_Name Sensor_Name (CS, Mosi, Miso, SCK); // neue SPI -Stifte anrufen*/
Serie.print ("Mosi neuer GPIO Pin:");
Serie.println (mosi);
Serie.print ("Miso New Gpio Pin:");
Serie.println (Miso);
Serie.print ("sck neuer gpio pin:");
Serie.println (sck);
Serie.print ("SS New Gpio Pin:");
Serie.println (ss);
void Loop ()
Hier im obigen Code fügen wir die SPI -Serienbibliothek ein und drucken Sie die Standard -SPI -Pins auf dem Seriennobjekt. Man kann diesen Teil des Codes überspringen, wenn nicht erforderlich ist. Als Nächst.
Ausgang
Ausgegeben auf dem Serienmonitor druckt alle neuen SPI -Stifte für die ESP32 -Karte aus.
ESP32 mit mehreren SPI -Geräten
ESP32 hat zwei SPI -Busse, und jeder Bus kann kontrollieren 3 Geräte, was bedeutet, dass insgesamt 6 Geräte mit SPI von ESP32 gesteuert werden können. Um mehr Geräte zu steuern, können wir verschiedene Multiplexing -Techniken verwenden.
Während die Steuerung mehrerer Sklavengeräte ESP32 als Meister für sie alle drei Zeilen Miso fungiert, ist Mosi SCLK für sie nur der Unterschied, der CS Clock -Signallinie ist. Um Daten an einen Slave -Gerät CS -Pin dieses Slave -Geräts zu senden, sollte auf niedrig eingestellt werden.
Die folgende Syntax wird befolgt, wenn wir Cs auf niedrig einstellen möchten.
DigitalWrite (CS, niedrig);
Nehmen wir an, wir möchten Daten von jedem anderen Gerät lesen.
DigitalWrite (CS_1, hoch); // CS -Pin des Sklaven 1 deaktivieren 1
DigitalWrite (cs_2, niedrig); // CS -Pin des Sklaven 2 aktivieren
Abschluss
Die serielle periphere Schnittstelle ist verdrahtetes Kommunikationsprotokoll, das von ESP32 -Mikrocontroller verwendet wird, um Daten zwischen mehreren Slave -Geräten auszutauschen. ESP32 SPI unterstützt zwei verschiedene Busse für die Kommunikation mit jeder Busfähigkeit, 3 Sklavengeräte zu steuern. Standardmäßig wird ESP32 mit SPI -Stiften ausgestattet; Wir können jedoch auch benutzerdefinierte Stifte mit Code definieren und verwenden.