Arduino-SPI (Čeština)

tato knihovna umožňuje komunikovat se zařízeními SPI, s Arduino jako hlavní zařízení.
Pro použití této knihovny
#include <SPI.h>

Stručný Úvod do Sériové Periferní Rozhraní (SPI)

Sériové Periferní Rozhraní (SPI) je synchronní sériový datový protokol používaný mikroprocesory pro komunikaci s jedním nebo více periferních zařízení rychle na krátké vzdálenosti. Může být také použit pro komunikaci mezi dvěma mikrokontroléry.,

s připojením SPI je vždy jedno hlavní zařízení (obvykle mikrokontrolér), které řídí periferní zařízení., Obvykle jsou tam tři řádky společné pro všechna zařízení:

  • MISO (Master In Slave Out) – Otrok linku pro odesílání dat do master,
  • MOSI (Master Out Slave In) – Master line pro odesílání dat do periférie,
  • SCK (Serial Clock) – Hodinové impulsy, které synchronizují přenos dat generovaných master

a jeden řádek specifické pro každé zařízení:

  • SS (Slave Select) – pin na každé zařízení, které velitel může povolit a zakázat konkrétní zařízení.,

když je podřízený pin zařízení nízký, komunikuje s velitelem. Když je vysoká, ignoruje mistra. To vám umožní mít více zařízení SPI sdílejících stejné linky MISO, MOSI a CLK.

Chcete-li napsat kód pro nové zařízení SPI, musíte si uvědomit několik věcí:

  • jaká je maximální rychlost SPI, kterou může vaše zařízení použít? To je řízeno prvním parametrem ve SPISettings. Pokud používáte čip Jmenovitý na 15 MHz, použijte 15000000. Arduino bude automaticky používat nejlepší rychlost, která se rovná nebo menší než číslo, které používáte s SPISettings.,
  • jsou data nejprve posunuta v nejvýznamnějším bitu (MSB) nebo nejméně významném bitu (LSB)? To je řízen druhým parametrem SPISettings, buď MSBFIRST nebo LSBFIRST. Většina SPI čipy používají MSB první pořadí dat.
  • jsou datové hodiny nečinné, když jsou vysoké nebo nízké? Jsou vzorky na stoupající nebo klesající hraně taktovacích pulsů? Tyto režimy jsou řízeny třetím parametrem v SPISettings.

standard SPI je volný a každé zařízení jej implementuje trochu jinak. To znamená, že při psaní kódu musíte věnovat zvláštní pozornost datovému listu zařízení.,

obecně řečeno existují čtyři režimy přenosu. Tyto režimy kontrolu, zda data jsou posunuta dovnitř a ven na stoupající nebo klesající hraně dat hodinový signál (clock, fáze), a zda jsou hodiny volnoběhu při vysokých nebo nízkých (tzv. 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 () začít používat SPI port. SPI port bude nakonfigurován se všemi vašimi nastaveními. Nejjednodušší a nejúčinnější způsob použití SPISettings je přímo uvnitř SPI.beginTransaction ().Například:

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

Pokud ostatní knihovny pomocí SPI z přerušení, které bude bráněno v přístupu k SPI, dokud budete volat SPI.endTransaction(). Nastavení SPI se použije na začátku transakce a SPI.endTransaction() nemění nastavení SPI., Pokud vy nebo nějaká knihovna nezačínáte volánítransakce podruhé, nastavení je zachováno. Měli byste se pokusit minimalizovat čas mezi tím, než zavoláte SPI.endTransaction(), pro nejlepší kompatibilitu, pokud váš program používá spolu s dalšími knihovnami, které používají SPI.

U většiny SPI zařízení, po SPI.beginTransaction(), můžete psát slave zvolte pin NÍZKÉ, call SPI.transfer() libovolný počet časů pro přenos dat, pak napsat SS pin VYSOKÉ, a konečně volání SPI.endTransaction().

Další informace o SPI naleznete na stránce Wikipedie na SPI.,

Připojení

následující tabulce Se zobrazují na které piny SPI linky jsou rozděleny na různé Arduino desky:

Všimněte si, že MISO, MOSI a SCK jsou k dispozici v jednotné fyzické umístění na záhlaví ICSP; to je užitečné, například, v navrhování štít, který funguje na každé desce.

Poznámka o Slave Select (SS) pin na AVR založené desky

Všechny AVR založené desky mají SS pin, že je užitečné, když se chovají jako slave řízen externí master., Protože tato knihovna podporuje pouze režimu master, tento pin by měla být vždy nastavena jako VÝSTUPNÍ, jinak SPI rozhraní by mohla být uvedena automaticky do režimu slave pomocí hardware, vykreslování knihovna nefunkční.

je však možné použít libovolný pin jako Slave Select (SS) pro zařízení. Například Arduino Ethernet shield používá pin 4 pro ovládání připojení SPI k palubní SD kartě a pin 10 pro ovládání připojení k řadiči Ethernet.

příklady

  • barometrický snímač tlaku: čtecí tlak vzduchu a teplotu ze senzoru pomocí protokolu SPI.,
  • Digital Pot Control: Ovládejte digitální potenciometr AD5206 pomocí protokolu SPI.

Poslední revize 2019/12/24 podle SM

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *