Arduino – SPI (Norsk)

Dette biblioteket gir deg mulighet til å kommunisere med SPI-enheter, med Arduino som master-enheten.
for Å bruke dette biblioteket
#include <SPI.h>

En Kort Introduksjon til Serial Peripheral Interface (SPI)

Serial Peripheral Interface (SPI) er en synkron seriell data protokollen som brukes av mikrokontrollere for å kommunisere med en eller flere eksterne enheter raskt over korte avstander. Det kan også brukes for kommunikasjon mellom to mikrokontrollere.,

Med en SPI-tilkobling det er alltid en master-enheten (vanligvis en mikrokontroller) som kontrollerer eksterne enheter., Vanligvis er det tre linjer felles for alle enheter:

  • MISO (Master I Slave Ut) – Slave-linjen for å sende data til master
  • MOSI (Master Ut Slave I) – Master linje for å sende data til eksterne enheter,
  • SCK (Seriell Klokke) – Klokken pulser som synkronisere data overføring er generert av master

og en linje som er spesifikke for hver enhet:

  • SS (Slave Select) – pin-koden på hver enhet som master kan brukes til å aktivere og deaktivere bestemte enheter.,

Når en enhet er Slave Velg pin-kode er lave, det kommuniserer med master. Når det er høyt, det tar master. Dette tillater deg å ha flere SPI enheter som deler den samme MISO, MOSI, og CLK linjer.

for Å skrive kode for en ny SPI-enhet trenger du å merke seg et par ting:

  • Hva er maksimal SPI hastighet enheten kan bruke? Dette er kontrollert av den første parameteren i SPISettings. Hvis du bruker en chip rangert på 15 MHz, bruk 15000000. Arduino vil automatisk bruke den beste hastigheten som er lik eller mindre enn tallet du bruker med SPISettings.,
  • data Er forskjøvet i Mest Signifikante Bit (MSB) eller Minst Signifikante Bit (LSB) først? Dette er kontrollert av andre SPISettings parameter, enten MSBFIRST eller LSBFIRST. Mest SPI chips bruk MSB først data for.
  • Er data klokke på tomgang når den er høy eller lav? Er eksempler på stigende eller fallende kant av klokke pulser? Disse modusene er kontrollert av den tredje parameteren i SPISettings.

SPI-standard er løs og hver enhet som implementerer det litt annerledes. Dette betyr at du må betale spesiell oppmerksomhet til enhetens dataark når du skriver dine kode.,

Generelt sett, det er fire moduser for overføring. Disse modusene kontrollere om dataene er flyttet inn og ut på stigende eller fallende kant av data klokke signal (kalt klokke fase), og om klokken er ledig når den er høy eller lav (kalt clock polaritet).,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() for å begynne å bruke SPI-port. SPI-porten vil være konfigurert med alle dine innstillinger. Den enkleste og mest effektive måten å bruke SPISettings er direkte inne i SPI.beginTransaction().For eksempel:

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

Hvis andre biblioteker bruk SPI fra avbrudd, vil de bli forhindret fra å få tilgang til SPI før du ringer SPI.endTransaction(). SPI-innstillingene brukes på de begynner på transaksjonen og SPI.endTransaction() ikke endre SPI-innstillinger., Hvis du, eller noen bibliotek, samtaler beginTransaction en gang, innstillingen opprettholdes. Du bør forsøke å redusere tiden mellom før du ringer SPI.endTransaction() for best mulig kompatibilitet hvis programmet brukes sammen med andre bibliotekene som bruker SPI.

Med mest SPI-enheter, etter SPI.beginTransaction(), vil du skrive slave velg pin LAVE, ring SPI.transfer() en rekke ganger til å overføre dataene, og deretter skrive SS pin HØY, og til slutt ringer SPI.endTransaction().

For mer om SPI, se Wikipedia ‘ s side på SPI.,

Tilkoblinger

tabellen nedenfor viser på hvilke pinner SPI-linjer er brutt ut på forskjellige Arduino brett:

Merk som MISO, MOSI, og SCK er tilgjengelig i et konsekvent fysisk plassering på ICSP overskriften; dette er nyttig, for eksempel i utformingen av et skjold som fungerer på hver board.

Merknad om Slave Select (SS) pin-koden på AVR-basert styrene

Alle AVR-baserte brett har en SS pin-kode som er nyttig når de opptrer som en slave kontrollert av en ekstern master., Siden dette biblioteket støtter bare master-modus, denne pin-koden skal angis alltid som OUTPUT ellers SPI-grensesnitt kan settes automatisk inn i slave modus av maskinvare, rendering biblioteket ute av drift.

Det er imidlertid mulig å bruke en pinne som Slave Select (SS) for enheter. For eksempel, Arduino Ethernet-shield bruker pinne 4 til kontroll SPI-tilkobling for å on-board-SD-kort og pin-10 for å kontrollere tilkoblingen til Ethernet-kontrolleren.

Eksempler

  • Barometrisk Trykk-Sensor: Les lufttrykk og temperatur fra en sensor ved hjelp av SPI-protokollen.,
  • Digital Pott Kontroll: en Kontroll AD5206 digital potensiometer ved bruk av SPI-protokollen.

Siste revisjon 2019/12/24 av SM

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *