Rady ESP32 mają obsługę wielu protokołów komunikacyjnych. Protokoły te obejmują szereg USART, I2C (IIC) i SPI. Wraz z tymi płytami ESP32 dostępne są również protokoły komunikacji bezprzewodowej, takie jak Wi-Fi, Dual Bluetooth, Esp-Now, Lora i wiele innych. Dzisiaj skupimy się na protokole ESP32 SPI (szeregowy interfejs peryferyjny).
SPI (szeregowy interfejs peryferyjny) w ESP32
SPI lub szeregowy interfejs peryferyjny to protokół komunikacji z krótkimi dystansem stosowany w wielu urządzeniach mikrokontrolerów, takich jak ESP32. Jest to synchroniczny protokół komunikacji stosowany przede wszystkim przez mikrokontrolery do komunikacji z jego peryferyjami, tak że możemy użyć tego protokołu do odczytu i kontroli urządzeń obsługujących protokół SPI.
Komunikacja SPI obsługuje konfigurację niewolników głównych, zawsze jest jeden gospodarz który kontroluje wielu niewolników. To jest Pełny dupleks Komunikacja, dzięki czemu dane mogą być wymiany jednocześnie od mistrza na niewolnika i niewolnika na mistrz.
Komunikacja SPI w potrzebach ESP32 cztery różne szpilki do przesyłania i odbierania danych do urządzeń. Poniżej są te cztery szpilki:
Notatka: Niektóre urządzenia, które są niewolnikami i nie mogą działać jako opanowanie nazewnictwa pinów, są różne, takie jak:
Piny SPI w ESP32
Płyta ESP32 jest wyposażona w 4 Różne peryferyjne SPI zintegrowane z mikrokontrolerem.
Większość tablic ESP32 jest wyposażona w wstępne piny SPI zarówno dla SPI2, jak i SPI3. Jeśli jednak nie zostanie przypisany, zawsze możemy przypisać piny SPI w kodzie. Poniżej znajdują się piny SPI znalezione na większości planszy ESP32, które są wstępnie wypisane:
Interfejs SPI | Mosi | Miso | Sclk | Cs |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Powyżej wspomniane piny SPI mogą się różnić w zależności od typu tablicy. Teraz napiszmy kod, aby sprawdzić piny SPI ESP32 za pomocą Arduino IDE.
Jak znaleźć domyślne piny SPI ESP32
Kod napisany poniżej pomoże znaleźć domyślne piny SPI na tablicy ESP32. Otwórz Arduino IDE Connect ESP32 z komputerem, wybierz odpowiedni port i prześlij kod. Następnie poczekaj na wyjście. Otóż to! Tak to jest proste
Kod, aby znaleźć domyślne piny SPI ESP32
Kod podany poniżej wydrukuje domyślne piny SPI ESP32 na monitor szeregowych.
void setup ()
Seryjny.rozpocząć (115200);
Seryjny.Drukuj („Pin Mosi GPIO:”);
Seryjny.println (MOSI);
Seryjny.print („Miso GPIO Pin:”);
Seryjny.println (miso);
Seryjny.print („SCK GPIO Pin:”);
Seryjny.println (SCK);
Seryjny.print („ss gpio pin:”);
Seryjny.println (ss);
void Loop ()
Kod rozpoczyna się od definiowania szybkości BAUD i kontynuowanych od wywołania domyślnego PIN GPIO dla protokołu komunikacji ESP32 SPI.
Wyjście
Tutaj w naszym przypadku monitor szeregowy wyświetlał PIN 23, 19, 18 i 5.
Jak używać niestandardowych pinów SPI w ESP32
Dzięki funkcjom multipleksowania ESP32 Możliwe jest skonfigurowanie dowolnego pinu płyty ESP32 jako UART, I2C, SPI i PWM. Trzeba je po prostu przypisać w kodzie. Teraz zdefiniujemy nowe piny SPI i wydrukujemy je na monitorze szeregowym, aby potwierdzić.
Wpisz kod podany poniżej w Edytorze Arduino IDE.
#włączać
void setup ()
Seryjny.rozpocząć (115200);
Seryjny.print („domyślny pin mosi GPIO:”);
Seryjny.println (MOSI);
Seryjny.print („Domyślny pin miso GPIO:”);
Seryjny.println (miso);
Seryjny.print („domyślny pin SCK GPIO:”);
Seryjny.println (SCK);
Seryjny.print („domyślny pin SS GPIO:”);
Seryjny.println (ss);
#definicja SCK 25
#definicja Miso 32
#definicja Mosi 26
#definicja CS 33
/*Library_name sensor_name (CS, MOSI, MISO, SCK); // Zadzwoń do nowych pinów SPI*/
Seryjny.Drukuj („MOSI New GPIO Pin:”);
Seryjny.println (MOSI);
Seryjny.Drukuj („Miso New GPIO Pin:”);
Seryjny.println (miso);
Seryjny.print („SCK NOWY PIN GPIO:”);
Seryjny.println (SCK);
Seryjny.Drukuj („SS New GPIO Pin:”);
Seryjny.println (ss);
void Loop ()
Tutaj, w powyższym kodzie, dołączamy bibliotekę szeregową SPI, a następnie drukujemy domyślne piny SPI na monitorze szeregowym. Można pominąć tę część kodu, jeśli nie jest to potrzebne. Następnie za pomocą Zdefiniuj, przypisujemy nowe szpilki do SPI i wydrukujemy je jeden po drugim na monitor szeregowych.
Wyjście
Wyjście wyświetlane na monitorze szeregowym drukuje wszystkie nowe piny SPI dla płyty ESP32.
ESP32 z wieloma urządzeniami SPI
ESP32 ma dwa autobusy SPI, a każdy autobus może kontrolować 3 Urządzenia, które oznaczają, że w sumie 6 urządzeń można kontrolować za pomocą SPI ESP32. Aby kontrolować więcej urządzeń, możemy użyć różnych technik multipleksowania.
Podczas gdy kontrolowanie wielu urządzeń niewolników ESP32 będzie działać jako mistrz dla nich wszystkie trzy linie MISO, MOSI SCLK będzie dla nich taka sama, że różnica to linia sygnału zegara CS. Aby wysłać dane do urządzenia niewolnika CS PIN tego urządzenia niewolnika, należy ustawić na niski.
Poniższa składnia zostanie przestrzegana, jeśli chcemy ustawić CS na niski.
DigitalWrite (CS, niski);
Załóżmy, że chcemy odczytać dane z dowolnego innego urządzenia, więc musimy ustawić pin CS pierwszego urządzenia niewolnika jako wysoko, aby je wyłączyć.
DigitalWrite (CS_1, High); // Wyłącz pin CS Slave 1
DigitalWrite (CS_2, Low); // Włącz pin CS Slave 2
Wniosek
Szeregowy interfejs peryferyjny to przewodowy protokół komunikacyjny używany przez MicroController ESP32 do wymiany danych między wieloma urządzeniami niewolnikami. ESP32 SPI obsługuje dwa różne autobusy do komunikacji z każdym autobusem kontrolowania 3 urządzeń niewolników. Domyślnie ESP32 jest wyposażony w piny SPI; Możemy jednak zdefiniować i używać niestandardowych pinów za pomocą kodu.