Arduino SPI
Serial Peripheral Interface (SPI) magistralė yra nuosekliojo ryšio sistema, kuri naudoja iki keturių laidininkų, dažniausiai tris. Vienas laidininkas naudojamas duomenims priimti, vienas duomenims siųsti, vienas sinchronizuoti, o kitas pasirinkti įrenginį, su kuriuo bus palaikomas ryšys. Tai pilnas dvipusis ryšys, o tai reiškia, kad duomenys siunčiami ir gaunami vienu metu. Duomenų perdavimo sparta yra didesnė nei I2C ryšio sistemoje.
SPI naudoja keturis sujungimo laidus:
SCK – tai serijinis laikrodis, valdomas pagrindinio kompiuterio.
MOSI – tai pagrindinė išvestis / pagalbinė įvestis.
MISO – tai pagrindinė įvestis / pagalbinė išvestis.
SS – tai pagalbinis įrenginio pasirinkimo laidas.
SPI paleidimui reikalingos kelios esminės funkcijos kurias gausite į savo programą įterpę SPI.h biblioteką:
- SPI.begin()
- SPI.setClockDivider(divider)
- SPI.transfer(val)
- SPI.beginTransaction(SPISettings(speedMaximum, dataOrder, dataMode))
Norint duomenų perdavimui sujungti dvi Arduino plokštes tarpusavyje sujungsime šiuos pinus:
- SS -> pin’as 10
- MOSI -> pin’as 11
- MISO -> pin‘as 12
- SCK -> pin’as 13
#include <SPI.h>
void setup (void) {
Serial.begin(115200);
digitalWrite(SS, HIGH);
SPI.begin ();
SPI.setClockDivider(SPI_CLOCK_DIV8);
}
void loop (void) {
char c;
digitalWrite(SS, LOW);
for (const char * p = "Hello, world!\r" ; c = *p; p++) {
SPI.transfer (c);
Serial.print(c);
}
digitalWrite(SS, HIGH);
delay(2000);
}