SPI (Serial Peripheral Interface) ESP32:ssa Arduino IDE:n avulla

Spi Serial Peripheral Interface Esp32 Ssa Arduino Ide N Avulla



ESP32-kortit tukevat useita viestintäprotokollia. Näitä protokollia ovat sarja USART, I2C (IIC) ja SPI. Näiden ESP32-korttien lisäksi saatavilla on myös langattomia viestintäprotokollia, kuten WiFi, kaksois Bluetooth, ESP-Now, LoRa ja monia muita. Tänään keskitymme ESP32 SPI (Serial Peripheral interface) -protokollaan.

SPI (Serial Peripheral Interface) ESP32:ssa

SPI tai serial peripheral interface on lyhyen matkan tiedonsiirtoprotokolla, jota käytetään useissa mikro-ohjainlaitteissa, kuten ESP32. Se on synkroninen viestintäprotokolla, jota ensisijaisesti mikro-ohjaimet käyttävät kommunikoidakseen oheislaitteidensa kanssa, joten voimme käyttää tätä protokollaa SPI-protokollaa tukevien laitteiden lukemiseen ja ohjaamiseen.







SPI-kommunikaatio tukee master-slave-konfiguraatiota, on aina a yksi hallita joka ohjaa useita orjia. Se on a full duplex tiedonsiirto, jotta tietoja voidaan vaihtaa samanaikaisesti isännältä orjalle ja orjalta isännälle.




SPI-viestintä ESP32:ssa tarvitsee neljä eri nastat tiedon lähettämiseen ja vastaanottamiseen laitteisiin. Seuraavat ovat nämä neljä nastaa:



  1. SCK: Kelloviiva määrittää lähetysnopeuden
  2. MISO: Master in slave out on lähetysnasta orjalta isännälle
  3. SAVU: Master out slave in on siirtolinja isäntädatalle orjalle
  4. SS: Slave-valintarivi auttaa ESP32:ta valitsemaan tietyn orjan ja lähettämään tai vastaanottamaan tietoja kyseiseltä orjalta

merkintä: Joidenkin laitteiden, jotka ovat vain orjia ja jotka eivät voi toimia isäntänä, niiden pin-nimeäminen on erilainen, kuten:





    • MISO korvataan kanssa SDO (Sarjatiedot ulos)
    • SAVU korvataan kanssa SDI (Sarjadata sisään)

SPI-nastat ESP32:ssa

ESP32-levy tulee mukana 4 erilaisia ​​SPI-oheislaitteita integroituna sen mikro-ohjaimeen.

    • SPI0: Vain sisäiseen muistiin - ei voida käyttää ulkoisten SPI-laitteiden kanssa
    • SPI1: Vain sisäiseen muistiin - ei voida käyttää ulkoisten SPI-laitteiden kanssa
    • SPI2: (HSPI) on itsenäiset väyläsignaalit. Jokainen väylä voi johtaa 3 orjalaitteet
    • SPI3: (VSPI) väyläsignaali on riippumaton. Jokainen väylä voi johtaa 3 orjalaitteet

Useimmissa ESP32-korteissa on ennalta määrätyt SPI-nastat sekä SPI2:lle että SPI3:lle. Kuitenkin, jos niitä ei ole määritetty, voimme aina määrittää SPI-nastat koodiin. Seuraavat ovat SPI-nastat, jotka löytyvät useimmista ESP32-kortista, jotka on määritetty valmiiksi:



SPI-liitäntä SAVU MISO SCLK CS
VSPI GPIO 23 GPIO 19 GPIO 18 GPIO 5
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15



Yllä mainitut SPI-nastat voivat vaihdella levytyypin mukaan. Nyt kirjoitamme koodin tarkistaaksesi ESP32 SPI-nastat Arduino IDE:n avulla.

Kuinka löytää ESP32-oletus-SPI-nastat

Alla kirjoitettu koodi auttaa löytämään oletusarvoiset SPI-nastat ESP32-kortilta. Avaa Arduino IDE yhdistä ESP32 PC:hen, valitse oikea portti ja lataa koodi. Odota sitten tulosta. Se siitä! näin yksinkertaista se on

Koodi ESP32-oletus-SPI-pinnien löytämiseksi

Alla annettu koodi tulostaa ESP32-oletus SPI-nastat sarjanäytölle.

tyhjä asetus ( ) {
Serial.begin ( 115 200 ) ;
Serial.print ( 'MOSI GPIO Pin:' ) ;
Serial.println ( SAVU ) ;
Serial.print ( 'MISO GPIO Pin:' ) ;
Serial.println ( MISO ) ;
Serial.print ( 'SCK GPIO Pin:' ) ;
Serial.println ( SCK ) ;
Serial.print ( 'SS GPIO Pin:' ) ;
Serial.println ( SS ) ;
}
tyhjä silmukka ( ) {
}


Koodi alkaa määrittämällä baudinopeus ja jatkuu kutsumalla oletusarvoista GPIO-nastaa ESP32 SPI -tiedonsiirtoprotokollalle.

Lähtö

Tässä tapauksessamme sarjamonitori näytti nastat 23, 19, 18 ja 5 vastaavasti MOSI:lle, MISO:lle, SCK:lle ja SS:lle.

Kuinka käyttää mukautettuja SPI-nastaja ESP32:ssa

ESP32-multipleksointiominaisuuksien ansiosta mikä tahansa ESP32-kortin nasta voidaan määrittää UART-, I2C-, SPI- ja PWM-muotoon. Ne on vain määritettävä koodissa. Nyt määritämme uudet SPI-nastat ja tulostamme ne sarjanäytölle vahvistaaksesi.

Kirjoita alla oleva koodi Arduino IDE -editoriin.

#include
tyhjä asetus ( ) {
Serial.begin ( 115 200 ) ;
Serial.print ( 'MOSI GPIO:n oletuspinssi: ' ) ;
Serial.println ( SAVU ) ;
Serial.print ( 'MISO GPIO -oletuspinni: ' ) ;
Serial.println ( MISO ) ;
Serial.print ( 'SCK GPIO:n oletuspinssi: ' ) ;
Serial.println ( SCK ) ;
Serial.print ( 'SS-GPIO-oletuspinta: ' ) ;
Serial.println ( SS ) ;
#define SCK 25
#define MISO 32
#define MOSI 26
#define CS 33
/* Kirjaston_nimi Sensorin_nimi ( CS, MOSI, MISO, SCK ) ; // kutsu uusia SPI-nastoja */
Serial.print ( 'MOSI NEW GPIO Pin:' ) ;
Serial.println ( SAVU ) ;
Serial.print ( 'MISO NEW GPIO Pin:' ) ;
Serial.println ( MISO ) ;
Serial.print ( 'SCK NEW GPIO Pin:' ) ;
Serial.println ( SCK ) ;
Serial.print ( 'SS NEW GPIO Pin:' ) ;
Serial.println ( SS ) ;
}
tyhjä silmukka ( ) {
}


Tässä yllä olevassa koodissa sisällytämme SPI-sarjakirjaston ja tulostamme sitten oletusarvoiset SPI-nastat sarjanäytössä. Voidaan ohittaa tämä koodin osa, jos sitä ei tarvita. Seuraavaksi definea käyttämällä määritämme uudet nastat SPI:lle ja tulostamme ne yksitellen sarjanäytölle.

Lähtö

Sarjanäytössä näkyvä tulos tulostaa kaikki ESP32-kortin uudet SPI-nastat.

ESP32, jossa on useita SPI-laitteita

ESP32:ssa on kaksi SPI-väylää, ja jokainen väylä voi ohjata 3 laitteita, mikä tarkoittaa, että yhteensä 6 laitetta voidaan ohjata ESP32:n SPI:llä. Useiden laitteiden ohjaamiseksi voimme käyttää erilaisia ​​multipleksointitekniikoita.

Vaikka useita orjalaitteita ohjataan, ESP32 toimii isäntänä niille kaikille kolmelle linjalle MISO, MOSI SCLK on niille sama, ainoa ero on CS-kellosignaalilinja. Jos haluat lähettää tietoja orjalaitteeseen, kyseisen orjalaitteen CS-pinn on asetettava matalaksi.


Seuraavaa syntaksia noudatetaan, jos haluamme asettaa CS:n tilaan LOW.

digitalWrite ( CS, LOW ) ;


Oletetaan, että haluamme lukea tietoja mistä tahansa muusta laitteesta, joten meidän on asetettava ensimmäisen orjalaitteen CS-nastaksi KORKEA sen poistamiseksi käytöstä.

digitalWrite ( CS_1, KORKEA ) ; // poista SLAVEn CS-pinni käytöstä 1
digitalWrite ( CS_2, MATALA ) ; // Ota käyttöön SLAVEn CS-pinni kaksi

Johtopäätös

Sarjallinen oheisliitäntä on langallinen tiedonsiirtoprotokolla, jota ESP32-mikro-ohjain käyttää tietojen vaihtamiseen useiden orjalaitteiden välillä. ESP32 SPI tukee kahta eri väylää tiedonsiirtoon kunkin väyläkyvyn kanssa ohjata 3 orjalaitetta. Oletusarvoisesti ESP32:ssa on SPI-nastat; voimme kuitenkin myös määrittää ja käyttää mukautettuja nastaja koodin avulla.