Arduino – SPI (Suomi)

Tämä kirjasto avulla voit kommunikoida SPI-laitteiden, Arduino, koska master-laite.
Voit käyttää tätä kirjasto
#include <SPI.h>

Lyhyt Johdatus Serial Peripheral Interface (SPI)

Serial Peripheral Interface (SPI) on synkroninen serial data protocol käytetään mikro kommunikoida yhden tai useamman oheislaitteiden nopeasti lyhyitä matkoja. Sitä voidaan käyttää myös kahden mikrokontrollerin väliseen viestintään.,

SPI-liitännällä on aina yksi päälaite (yleensä mikrokontrolleri), joka ohjaa oheislaitteita., Tyypillisesti on olemassa kolme riviä yhteistä kaikille laitteille:

  • MISO (Master In Slave Out) – Orja line lähettää dataa master,
  • MOSI (Master Out Slave In) – Master line lähettää tiedot oheislaitteet,
  • SCK (Serial Clock) – Kello pulsseja, jotka synkronoida tiedonsiirron syntyy mestari

yksi rivi erityisiä jokaiselle laitteelle:

  • SS (Slave Select) – pin-koodi jokaiselle laitteelle, jonka mestari voi ottaa käyttöön ja poistaa käytöstä tiettyjä laitteita.,

kun laitteen Slave Select pin on matala, se kommunikoi isännän kanssa. Kun se on korkealla, se ei välitä mestarista. Näin sinulla on useita SPI-laitteita, jotka jakavat samat MISO -, MOSI-ja CLK-linjat.

kirjoittaaksesi koodin uudelle SPI-laitteelle sinun täytyy huomata muutama asia:

  • mikä on suurin SPI-nopeus, jota laitteellasi voi käyttää? Tätä ohjataan Spisettingsin ensimmäisellä parametrilla. Jos käytät siru mitoitettu 15 MHz, käytä 15000000. Arduino käyttää automaattisesti parasta nopeutta, joka on yhtä suuri tai pienempi kuin Spisettingsin kanssa käyttämäsi numero.,
  • tiedot On siirtynyt Eniten Merkitsevä Bitti (MSB) vai Vähiten Merkitsevä Bitti (LSB) ensin? Tätä ohjataan toisella SPISettings-parametrilla, joko MSBFIRSTILLÄ tai LSBFIRSTILLÄ. Useimmat SPI-sirut käyttävät MSB: n ensimmäistä datatilausta.
  • onko datakello tyhjäkäynnillä korkealla vai matalalla? Ovatko näytteet kellojen nousevilla tai putoavilla reunoilla pulsseja? Näitä tiloja ohjataan Spisettingsin kolmannella parametrilla.

SPI-standardi on väljä ja jokainen laite toteuttaa sen hieman eri tavalla. Tämä tarkoittaa, että sinun täytyy kiinnittää erityistä huomiota laitteen datalehteen kirjoittaessasi koodiasi.,

yleisesti ottaen siirtotapoja on neljä. Nämä tilat valvoa, ovatko tiedot on siirtynyt sisään ja ulos nouseva tai laskeva reuna tietojen kello signaali (kutsutaan clock phase), ja onko kello on tyhjäkäynnillä, kun korkea tai matala (kutsutaan clock polarity).,se according to this table:

Mode Clock Polarity (CPOL) Clock Phase (CPHA) Output Edge Data Capture
SPI_MODE0 0 0 Falling Rising
SPI_MODE1 0 1 Rising Falling
SPI_MODE2 1 0 Rising Falling
SPI_MODE3 1 1 Falling Rising

Once you have your SPI parameters, use SPI.,beginTransaction () aloittaa SPI-portin käytön. SPI-portti konfiguroidaan kaikilla asetuksillasi. Yksinkertaisin ja tehokkain tapa käyttää SPISettings on suoraan SPI: n sisällä.beginTransaction ().Esimerkiksi:

SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0));

Jos muut kirjastot käyttävät SPI alkaen keskeytykset, ne voidaan estää pääsemästä SPI kunnes soitat SPI.endTransaction(). SPI-asetukset sovelletaan begin kaupan ja SPI.endTransaction() ei muuta SPI-asetukset., Jos et, tai jokin kirjasto, puhelut alkavat transaction toisen kerran, asetus säilytetään. Sinun pitäisi yrittää minimoida välinen aika, ennen kuin soitat SPI.endTransaction() parhaan yhteensopivuuden jos ohjelmaa käytetään yhdessä muiden kirjastojen kanssa, jotka käyttävät SPI.

useimmat SPI laitteita, kun SPI.beginTransaction(), voit kirjoittaa orja valitse pin ALHAINEN, soittaa SPI.transfer() monta kertaa tahansa siirtää tietoja, sitten kirjoittaa SS pin KORKEA, ja lopulta soittaa SPI.endTransaction().

Lisää SPI: stä, katso Wikipedian sivu SPI: stä.,

Yhteyksiä

seuraavassa taulukossa näytetään, mitkä nastat SPI-linjat ovat rikki pois eri Arduino levyt:

Huomaa, että MISO, MOSI ja SCK ovat saatavilla johdonmukaisesti fyysinen sijainti ICSP otsikon; tämä on hyödyllistä, esimerkiksi, suunnittelussa kilpi, joka toimii jokaisen aluksella.

Huomaa noin Slave Select (SS) pin AVR pohjainen levyt

AVR-pohjainen levyt ovat SS pin-koodin, joka on hyödyllinen silloin, kun ne toimivat orjana määräysvallassa ulkopuolinen mestari., Koska tämä kirjasto tukee vain master mode, tämä pin olisi asetettava aina lähtö muuten SPI-liitäntä voidaan laittaa automaattisesti Orja tilassa laitteisto, mikä tekee kirjaston toimintakyvyttömäksi.

Se on kuitenkin mahdollista käyttää mitä tahansa pin Slave Select (SS) laitteita. Esimerkiksi Arduino Ethernet shield käyttää pin 4 ohjaus SPI-yhteys aluksella SD-kortti ja pin-10 valvonta-yhteys Ethernet controller.

Esimerkkejä

  • Barometrinen Paine-Anturi: Lue ilmanpaine ja lämpötila anturi käyttää SPI-protokollaa.,
  • Digital Pot Control: Control a AD5206 digital potentiometer using the SPI protocol.

viimeisin revisio 2019/12/24 by SM

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *