SPI (Serial Peripheral Interface) az ESP32-ben Arduino IDE használatával

Spi Serial Peripheral Interface Az Esp32 Ben Arduino Ide Hasznalataval



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:



  1. SCK: Az óravonal határozza meg az átviteli sebességet
  2. MISO: Master in slave out átviteli láb a slave-től a masterig
  3. FÜST: Master out slave in az átviteli vonal a master adatokhoz a slave-hez
  4. 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.

digitalWrite ( CS, LOW ) ;


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_1, MAGAS ) ; // letiltja a SLAVE CS érintkezőjét 1
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.