SPI in esptop 10 mit Arduino ide

SPI in esptop 10 mit Arduino ide

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:

  1. SCK: Die Taktlinie bestimmt die Übertragungsgeschwindigkeit
  2. Miso: Der Meister im Sklaven ist der Getriebestift vom Sklaven zu Master
  3. Mosi: Master Out Slave in IS -Übertragungslinie für Stammdaten zum Sklaven
  4. SS: Die Slave -Select -Zeile hilft ESP32, einen bestimmten Sklaven auszuwählen und Daten von diesem Slave zu übertragen oder zu empfangen

Notiz: Einige Geräte, die nur Sklave sind und nicht als Meister ihrer Pin -Benennung fungieren können, ist unterschiedlich wie folgt:

    • Miso wird ersetzt durch SDO (Seriendaten)
    • Mosi wird ersetzt durch SDI (Seriendaten in)

SPI -Stifte in ESP32

ESP32 Board kommt mit mit 4 Verschiedene SPI -Peripheriegeräte, die in seinen Mikrocontroller integriert sind.

    • SPI0: Für die interne Speicherkommunikation kann nicht mit externen SPI-Geräten verwendet werden
    • SPI1: Für die interne Speicherkommunikation kann nicht mit externen SPI-Geräten verwendet werden
    • SPI2: (HSPI) haben unabhängige Bussignale. Jeder Bus kann ableiten 3 Sklavengeräte
    • SPI3: (VSPI) Bussignal ist unabhängig. Jeder Bus kann ableiten 3 Sklavengeräte

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.