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:
- SCK: Kelloviiva määrittää lähetysnopeuden
- MISO: Master in slave out on lähetysnasta orjalta isännälle
- SAVU: Master out slave in on siirtolinja isäntädatalle orjalle
- 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.
#includetyhjä 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.
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_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.