SPI ( anglicky Serial Peripheral Interface, SPI bus - sériové periferní rozhraní, SPI bus) je standard sériového synchronního přenosu dat v plně duplexním režimu , navržený tak, aby poskytoval jednoduché a levné vysokorychlostní propojení mikrokontrolérů a periferií. SPI se také někdy označuje jako čtyřvodičové rozhraní .
Na rozdíl od standardního sériového portu je SPI synchronní rozhraní, ve kterém je jakýkoli přenos synchronizován se společným hodinovým signálem generovaným hostitelem (procesorem). Přijímací (slave) periferie synchronizuje příjem bitové sekvence s hodinovým signálem. K jednomu sériovému perifernímu rozhraní hlavního IC lze připojit více integrovaných obvodů. Master vybere podřízenou jednotku pro přenos aktivací signálu volby čipu na podřízeném čipu . Periferie nevybrané procesorem se přenosu SPI neúčastní.
SPI používá čtyři digitální signály:
Konkrétní názvy portů rozhraní SPI se mohou lišit v závislosti na výrobci hardwaru, ale jsou možné následující možnosti:
Bitové intervaly v datových linkách jsou určeny hodinovým signálem SCK generovaným masterem, slave zařízení pomocí hodinového signálu určují, kdy se bity na datové lince mění, zatímco slave zařízení nemohou bitové intervaly nijak ovlivnit. Master i slave mají čítač hodinových impulsů (bitů). Čítač v podřízeném zařízení umožňuje podřízenému zařízení určit, kdy skončil přenos paketu. Počítadlo se vynuluje, když se vypne subsystém SPI, který je v masteru vždy k dispozici. V podřízeném zařízení se čítač obvykle resetuje deaktivací signálu rozhraní SS .
Vzhledem k tomu, že akce master a slave jsou taktovány stejným signálem, neexistují žádné požadavky na stabilitu tohoto signálu, kromě omezení délky půlcyklů, které je určeno maximální pracovní frekvencí pomalejšího zařízení. . To umožňuje použití SPI v systémech s nízkou stabilní rychlostí hodin a také usnadňuje softwarovou emulaci mastera.
Přenos se provádí v dávkách. Délka paketu je obvykle 1 bajt (8 bitů), zatímco implementace SPI jsou známé s jinými délkami paketů, jako jsou 4 bity. Hlavní zařízení zahájí komunikační cyklus stažením podřízeného výběrového ( SS ) kolíku zařízení, ke kterému se má připojit. Když je signál SS nízký :
Data master a slave, která mají být přenášena, jsou umístěna v posuvných registrech. Poté začne nadřazené zařízení generovat hodinové impulsy na lince SCLK, což vede ke vzájemné výměně dat. Data jsou přenášena bit po bitu z master na lince MOSI a ze slave na lince MISO. Přenos se zpravidla provádí od nejvýznamnějších bitů, ale někteří výrobci umožňují změnu pořadí přenosu bitů softwarovými metodami. Po odeslání každého datového paketu může hlavní zařízení uvést SS linku do vysokého stavu, aby se synchronizovalo podřízené zařízení.
Jsou možné čtyři režimy synchronizace. Režim je určen kombinací bitů CPHA a CPOL:
Pro označení provozních režimů rozhraní SPI byla přijata následující konvence:
V nejjednodušším případě je k hlavnímu zařízení připojeno jediné podřízené zařízení a je vyžadována obousměrná komunikace. V tomto případě se používá schéma třívodičového připojení. Rozhraní SPI umožňuje připojit několik slave zařízení k jednomu master zařízení a připojení lze provést několika způsoby.
První metoda umožňuje implementovat radiální komunikační strukturu (hvězdovou topologii), je považována za hlavní způsob připojení několika podřízených zařízení. V tomto případě, aby bylo možné komunikovat s více než jedním slavem, musí master generovat odpovídající počet slave select ( SS ) signálů. Při komunikaci s podřízeným zařízením je odpovídající signál SS nastaven do aktivního (nízkého) stavu, zatímco všechny ostatní signály SS jsou v neaktivním (vysokém) stavu. Datové piny MISO slave zařízení jsou zapojeny paralelně, jsou v neaktivním stavu a před zahájením výměny přejde jeden z výstupů (vybraného slave zařízení) do aktivního režimu.
Druhá metoda umožňuje implementovat strukturu připojení typu "kroužek". V tomto případě se jeden signál SS používá k aktivaci několika podřízených zařízení současně a datové výstupy všech zařízení jsou zapojeny do série a tvoří uzavřený obvod. Když je paket vysílán z mastera, je tento paket přijat prvním slave zařízením, které zase vysílá svůj paket dalšímu slave zařízení a tak dále. Aby se paket z masteru dostal ke konkrétnímu slave zařízení, master musí odeslat několik dalších paketů.
Níže je uveden příklad softwarové implementace hlavního SPI v jazyce C. Linka CS (volba čipu, výběr čipu) musí být aktivována (ve většině případů snížena) před zahájením výměny dat a deaktivována po dokončení výměny. Většina zařízení vyžaduje více přenosových relací s aktivní CS linkou . Tuto funkci lze volat vícekrát, když je linka aktivní.
unsigned char SPIBitBang8BitsMode0 ( unsigned char byte ) { unsigned char bit ; for ( bit = 0 ; bit < 8 ; bit ++ ) { /* zápis MOSI na sestupnou hranu předchozích hodin */ if ( byte & 0x80 ) SETMOSI (); jiný CLRMOSI (); byte <<= 1 ; /* počkejte půl hodiny, než se vygeneruje náběžná hrana */ SPIDELAY ( SPISPEED / 2 ); SETCLK (); /* počkejte půl hodiny, než se vygeneruje pokles */ SPIDELAY ( SPISPEED / 2 ); /* čtení MISO na ústupu */ byte |= READMISO (); CLRCLK (); } návratový bajt ; }Počítačové sběrnice a rozhraní | |
---|---|
Základní pojmy | |
Procesory | |
Vnitřní | |
notebooky | |
Pohony | |
Obvod | |
Správa zařízení | |
Univerzální | |
Video rozhraní | |
Vestavěné systémy |
Mikrokontroléry | ||||||||
---|---|---|---|---|---|---|---|---|
Architektura |
| |||||||
Výrobci |
| |||||||
Komponenty | ||||||||
Obvod |
| |||||||
Rozhraní | ||||||||
OS | ||||||||
Programování |
|