Arduino-SPI (Română)

această bibliotecă vă permite să comunice cu dispozitive SPI, cu Arduino ca dispozitiv de master.
Pentru a utiliza această bibliotecă
#include <SPI.h>

O Scurtă Introducere în Serial Peripheral Interface (SPI)

Serial Peripheral Interface (SPI) este un sincron de date seriale protocol folosit de microcontrolere pentru a comunica cu unul sau mai multe dispozitive periferice rapid pe distante scurte. Poate fi folosit și pentru comunicarea între două microcontrolere., cu o conexiune SPI există întotdeauna un dispozitiv principal (de obicei un microcontroler) care controlează dispozitivele periferice., De obicei, există trei linii comune pentru toate dispozitivele:

  • MISO (Master În Slave Out) – Sclavul linie pentru trimiterea de date de la master,
  • MOSI (Master Out Slave In) – Master linie pentru trimiterea de date de la periferice,
  • SCK (Serial Clock) – Ceasul impulsuri care sincronizarea transmisiei de date generat de master

și o linie specifice pentru fiecare dispozitiv:

  • SS (Slave Select) – pin-ul pe fiecare dispozitiv master poate folosi pentru a activa și dezactiva dispozitivele specifice.,

când PIN-ul de selectare Slave al unui dispozitiv este scăzut, acesta comunică cu comandantul. Când e sus, îl ignoră pe stăpân. Acest lucru vă permite să aveți mai multe dispozitive SPI care împărtășesc aceleași linii MISO, MOSI și CLK.

pentru a scrie cod pentru un nou dispozitiv SPI trebuie să rețineți câteva lucruri:

  • care este viteza maximă SPI dispozitivul poate utiliza? Acest lucru este controlat de primul parametru în SPISettings. Dacă utilizați un cip evaluat la 15 MHz, utilizați 15000000. Arduino va folosi automat cea mai bună viteză care este egală sau mai mică decât numărul pe care îl utilizați cu SPISettings.,
  • datele sunt mutate mai întâi în Bit-ul cel mai semnificativ (MSB) sau în Bit-ul cel mai puțin semnificativ (LSB)? Acest lucru este controlat de al doilea parametru SPISettings, fie MSBFIRST sau LSBFIRST. Cele mai multe cipuri SPI folosesc prima comandă de date MSB.
  • ceasul de date este inactiv când este ridicat sau scăzut? Sunt probe pe marginea în creștere sau care se încadrează de impulsuri de ceas? Aceste moduri sunt controlate de al treilea parametru în SPISettings.standardul SPI este liber și fiecare dispozitiv îl implementează puțin diferit. Aceasta înseamnă că trebuie să acordați o atenție deosebită Fișei Tehnice a dispozitivului atunci când scrieți codul., în general, există patru moduri de transmisie. Aceste moduri controlează dacă datele sunt deplasate și ieșite pe marginea în creștere sau în cădere a semnalului ceasului de date (numit faza ceasului) și dacă ceasul este inactiv atunci când este ridicat sau scăzut (numit polaritatea ceasului).,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 () pentru a începe să utilizați portul SPI. Portul SPI va fi configurat cu toate setările. Cel mai simplu și mai eficient mod de a utiliza SPISettings este direct în interiorul SPI.beginTransaction ().De exemplu:

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

    Dacă alte biblioteci utilizarea SPI din întrerupe, acestea vor fi împiedicate să acceseze SPI până te sun SPI.endTransaction(). Setările SPI sunt aplicate la începutul tranzacției și SPI.endTransaction() nu modifică setările SPI., Cu excepția cazului în care dvs. sau o bibliotecă începeți apeleletransacție a doua oară, setarea este menținută. Ar trebui să încercați să minimalizați timpul dintre înainte de a apela SPI.endTransaction(), pentru cea mai bună compatibilitate dacă programul dvs. este utilizat împreună cu alte biblioteci care utilizează SPI.

    Cu cele mai multe dispozitive SPI, după SPI.beginTransaction(), va scrie sclav selectați pin SCĂZUT, sun SPI.transfer() orice număr de ori pentru a transfera date, apoi scrie SS pin MARE, și în cele din urmă de apel SPI.endTransaction().

    Pentru mai multe informații despre SPI, consultați pagina Wikipedia despre SPI.,

    Legaturi

    următorul tabel afișează pe care pinii SPI linii sunt defalcate pe diferite placi Arduino:

    Rețineți că MISO, MOSI, și SCK sunt disponibile într-o concordanță locație fizică pe ICSP antet; acest lucru este util, de exemplu, în proiectarea unui scut care funcționează pe fiecare bord.

    notă despre Slave Select (SS) pin pe plăcile bazate pe AVR

    toate plăcile bazate pe AVR au un PIN SS care este util atunci când acționează ca un sclav controlat de un master extern., Deoarece această bibliotecă acceptă numai modul master, acest pin ar trebui să fie setat întotdeauna ca ieșire, altfel interfața SPI ar putea fi pusă automat în modul slave de hardware, făcând biblioteca nefuncțională.cu toate acestea, este posibil să folosiți orice pin ca Slave Select (SS) pentru dispozitive. De exemplu, Arduino Ethernet shield utilizează pinul 4 pentru a controla conexiunea SPI la cardul SD de bord și pinul 10 pentru a controla conexiunea la controlerul Ethernet.

    Exemple

    • senzor de presiune barometrică: citiți presiunea aerului și temperatura de la un senzor folosind protocolul SPI.,
    • Digital Pot Control: Controlați un potențiometru digital AD5206 folosind protocolul SPI.

    ultima revizuire 2019/12/24 de SM

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *