Az ESP32 kártyák több kommunikációs protokollt is támogatnak. Ezek a protokollok közé tartozik a soros USART, az I2C (IIC) és az SPI. Az ESP32 kártyák mellett vezeték nélküli kommunikációs protokollok is elérhetők, például WiFi, dual Bluetooth, ESP-Now, LoRa és még sok más. Ma az ESP32 SPI (Serial Peripheral Interfész) protokollra fogunk összpontosítani.
SPI (Serial Peripheral Interface) az ESP32-ben
Az SPI vagy soros periféria interfész egy rövid távú kommunikációs protokoll, amelyet több mikrokontroller eszközben használnak, például az ESP32-ben. Ez egy szinkron kommunikációs protokoll, amelyet elsősorban a mikrokontrollerek használnak a perifériákkal való kommunikációra, így ezzel a protokollal tudjuk olvasni és vezérelni az SPI protokollt támogató eszközöket.
Az SPI kommunikáció támogatja a master slave konfigurációt mindig van a egy fő- amely több rabszolgát vezérel. Ez egy full duplex kommunikáció, így az adatok egyidejűleg cserélhetők mestertől szolgáig és szolgától mesterig.
SPI-kommunikáció az ESP32-ben négy különböző érintkezők az adatok továbbításához és fogadásához az eszközökhöz. Íme a négy csap:
- SCK: Az óravonal határozza meg az átviteli sebességet
- MISO: Master in slave out átviteli láb a slave-től a masterig
- FÜST: Master out slave in az átviteli vonal a master adatokhoz a slave-hez
- SS: A slave kiválasztási vonal segíti az ESP32-t, hogy kiválasszon egy adott slave-et, és adatokat küldjön vagy fogadjon ettől a slave-től
Jegyzet: Egyes eszközök, amelyek csak szolgaként működnek, és nem működhetnek masterként, a pin elnevezésük eltérő, például:
-
- MISO helyére kerül SDO (Sorozatos adatok kimennek)
- FÜST helyére kerül SDI (Soros adat be)
SPI pinek az ESP32-ben
ESP32 kártya jár hozzá 4 különböző SPI perifériák integrálva a mikrokontrollerrel.
-
- SPI0: Csak belső memória kommunikációhoz - nem használható külső SPI-eszközökkel
- SPI1: Csak belső memória kommunikációhoz - nem használható külső SPI-eszközökkel
- SPI2: (HSPI) független buszjelekkel rendelkeznek. Mindegyik busz származtathat 3 szolga eszközök
- SPI3: (VSPI) buszjel független. Mindegyik busz származtathat 3 szolga eszközök
A legtöbb ESP32 kártya előre hozzárendelt SPI érintkezőkkel rendelkezik mind az SPI2, mind az SPI3 számára. Ha azonban nincs hozzárendelve, mindig hozzárendelhetünk SPI-tűket a kódban. Az alábbiakban láthatók a legtöbb ESP32 kártyán található SPI érintkezők, amelyek előre hozzá vannak rendelve:
SPI interfész | FÜST | MISO | SCLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
A fent említett SPI érintkezők a kártya típusától függően változhatnak. Most írunk egy kódot az ESP32 SPI érintkezők ellenőrzéséhez az Arduino IDE segítségével.
Hogyan lehet megtalálni az ESP32 alapértelmezett SPI-tűit
Az alább írt kód segít megtalálni az alapértelmezett SPI érintkezőket az ESP32 kártyán. Nyissa meg az Arduino IDE csatlakoztassa az ESP32-t a számítógéphez, válassza ki a megfelelő portot, és töltse fel a kódot. Ezután várja meg a kimenetet. Ez az! ez milyen egyszerű
Kód az ESP32 alapértelmezett SPI-pineinek megtalálásához
Az alább megadott kód kinyomtatja az ESP32 alapértelmezett SPI érintkezőit a soros monitoron.
üres beállítás ( ) {Serial.begin ( 115200 ) ;
Serial.print ( 'MOSI GPIO Pin: ' ) ;
Serial.println ( FÜST ) ;
Serial.print ( 'MISO GPIO Pin: ' ) ;
Serial.println ( MISO ) ;
Serial.print ( 'SCK GPIO Pin: ' ) ;
Serial.println ( SCK ) ;
Serial.print ( 'SS GPIO Pin:' ) ;
Serial.println ( SS ) ;
}
üres hurok ( ) {
}
A kód az adatátviteli sebesség meghatározásával kezdődik, és az ESP32 SPI kommunikációs protokoll alapértelmezett GPIO tűjének meghívásával folytatódik.
Kimenet
Esetünkben a soros monitor a MOSI, MISO, SCK és SS 23-as, 19-es, 18-as és 5-ös lábát jelenítette meg.
Az egyéni SPI-csapok használata az ESP32-ben
Az ESP32 multiplexelési funkcióknak köszönhetően az ESP32 kártya bármely érintkezője UART, I2C, SPI és PWM-ként konfigurálható. Csak hozzá kell rendelni őket kódban. Most meghatározzuk az új SPI-tűket, és kinyomtatjuk őket a soros monitoron a megerősítéshez.
Írja be az alábbi kódot az Arduino IDE szerkesztőbe.
#includeüres beállítás ( ) {
Serial.begin ( 115200 ) ;
Serial.print ( 'Alapértelmezett MOSI GPIO Pin: ' ) ;
Serial.println ( FÜST ) ;
Serial.print ( 'Alapértelmezett MISO GPIO Pin: ' ) ;
Serial.println ( MISO ) ;
Serial.print ( 'Alapértelmezett SCK GPIO Pin: ' ) ;
Serial.println ( SCK ) ;
Serial.print ( 'Alapértelmezett SS GPIO Pin: ' ) ;
Serial.println ( SS ) ;
#define SCK 25
#define MISO 32
#define MOSI 26
#define CS 33
/* Könyvtár_név Érzékelő_neve ( CS, MOSI, MISO, SCK ) ; // hívjon új SPI-csapokat */
Serial.print ( 'MOSI ÚJ GPIO Pin: ' ) ;
Serial.println ( FÜST ) ;
Serial.print ( 'MISO NEW GPIO Pin: ' ) ;
Serial.println ( MISO ) ;
Serial.print ( 'SCK ÚJ GPIO Pin: ' ) ;
Serial.println ( SCK ) ;
Serial.print ( 'SS ÚJ GPIO Pin: ' ) ;
Serial.println ( SS ) ;
}
üres hurok ( ) {
}
A fenti kódban tartalmazzuk az SPI soros könyvtárat, majd kinyomtatjuk az alapértelmezett SPI érintkezőket a soros monitoron. A kódnak ezt a részét átugorhatja, ha nincs rá szükség. Ezután a define használatával új érintkezőket rendelünk az SPI-hez, és egyenként kinyomtatjuk őket a soros monitoron.
Kimenet
A soros monitoron megjelenő kimenet kinyomtatja az ESP32 kártya összes új SPI érintkezőjét.
ESP32 több SPI-eszközzel
Az ESP32 két SPI-busszal rendelkezik, és mindegyik busz vezérelhető 3 eszközök, ami azt jelenti, hogy összesen 6 eszköz vezérelhető az ESP32 SPI használatával. Több eszköz vezérléséhez különböző multiplexelési technikákat alkalmazhatunk.
Míg több slave eszköz vezérlése esetén az ESP32 mindhárom MISO-vonalon masterként működik, a MOSI SCLK ugyanaz lesz, csak a CS órajel vonal a különbség. Ha adatokat szeretne küldeni egy szolga eszközre, annak a szolga eszköznek a CS pin-jét alacsonyra kell állítani.
A következő szintaxist követjük, ha a CS-t LOW-ra akarjuk állítani.
Tegyük fel, hogy bármilyen más eszközről szeretnénk adatokat olvasni, ezért az első szolgaeszköz CS pinjét HIGH-ra kell állítanunk a letiltáshoz.
digitalWrite ( CS_2, ALACSONY ) ; // A SLAVE CS PIN-kódjának engedélyezése két
Következtetés
A soros periféria interfész egy vezetékes kommunikációs protokoll, amelyet az ESP32 mikrokontroller használ több slave eszköz közötti adatcserére. Az ESP32 SPI két különböző buszt támogat a kommunikációhoz, mindegyik buszképességgel 3 szolgaeszköz vezérléséhez. Alapértelmezés szerint az ESP32 SPI tűkkel érkezik; azonban kód segítségével is definiálhatunk és használhatunk egyedi tűket.