Fórum témák
» Több friss téma |
Cikkek » SPI használata AVR-rel SPI használata AVR-rel
Szerző: Fizikus, idő: Jún 13, 2011, Olvasva: 32108, Oldal olvasási idő: kb. 3 perc
SPI Az alábbi ábra két SPI-vel rendelkező eszköz közötti kapcsolatot ábrázolja: A hagyományos SPI interfész 3 vagy 4 vezetéket használ egyetlen SPI eszközzel történő kommunikációra. Ezek a Shift Clock (léptető órajelimpulzus - SCK), Master Ki Slave Be (Master Out Slave In - MOSI), Master Be Slave Ki (Master In Slave Out - MISO) és az alacsony állapotban aktív Slave Kiválasztó (Slave Select - SS) vezeték (gyakran Chip Select-nek is hívják – CS). Ha a Master csak egy Slave eszközzel kommunikál, akkor a Master SS lába egy felhúzóellenálláson keresztül a tápfeszültségre köthető. Az SPI eszköz Save Select (SS) lába pedig a földre köthető, ami engedélyezi az SPI-t az adott eszközön (lásd a köv. ábra b pontját). Ha egynél több SPI eszköz van ugyanarra a buszra kötve, akkor már négy vezetékre van szükség. Ezt a plussz vezetéket arra használjuk hogy kiválasszuk azt az SPI eszközt amelyikkel kommunikálni akarunk. A Slave eszközt a hozzá tartozó Slave Select (Slave kiválasztó / SS) láb alacsony állapotra kapcsolásával lehet kiválasztani. Egyetlen Slave eszköz használata esetén is 4 vezeték szükséges, ha az eszköz energiatakarékos alvás módját akarjuk használni. Ekkor az SS lábat használhatjuk az SPI aktiválására, mert az SS láb alacsonyra állítása automatikusan feléleszti a Slave eszközt az alvó módból.
Az SPI lényegében két shift regiszterből és egy órajelgenerátorból áll, amire úgy is tekinthetünk, mint egy 16 bites körkörös szinkron shift regiszterre, aminek az egyik 8 bites fele a Master-ben, a másik 8 bites fele pedig a Slave-ben helyezkedne el. A működés elve elég egyszerű:
Mivel az SPI protokol full duplex szinkron soros adatküldési módot használ, a slave eszközre történő adatküldéssel egy időben a Slave eszközről érkező adatokat is fogadni tudja a belső shift regiszterével. A Master az aktív elem a rendszerben. Ő felel a kommunikáció kezdeményezéséért és vezérléséért, biztosítja a soros adatküldés folyamán az adó és a vevő közötti kommunikációt szinkronizáló órajelet. A Master eszköz felelőssége az is, hogy az SPI-t olyan módban használja amit a Slave elvár (az hogy az adatokat az SCK órajelimpulzus le vagy felfutó élére írjuk vagy olvassuk-e), és hogy az órajelimpulzus ne legyen túl gyors a Slave eszköznek. A Slave eszköz nem képes órajel generálására, csak adatokat fogad és küld a Master által küldött órajelimpulzusok ütemére. A Master csak az adatküldés alatt generálja az órajelimpulzusokat, ezért ez azt jelenti, hogyha a Master adatot akar kiolvasni egy Slave eszközről, akkor ezzel egy időben adatot is kell küldenie. A Master és a Slave közötti adatcsere folyamán egyszerre, egy órajelciklus alatt tolódik egy-egy adatbit a Master-ről a Slave-re és a Slave-ről a Master-re, ezért a két 8 bites shift regiszter úgy vehető mint egy egyetlen 16 bitből álló körkörös shift regiszter. Ez azt jelenti, hogy 8 SCK órajelimpulzus után az adat a Master és a Slave között kicserélődik. A jobb érthetőség kedvéért nézzünk egy példát amelyben a Master az 0b11011101 bájtot akarja elküldeni a Slave-nek, és ezzel egy időben a slave eszköz pedig az 0b00110010 bájtot akarja elküldeni a Master-nek. A Slave eszköz CS (chip select) lábának logikai alacsony szintre kapcsolása után az eszköz kész az adat fogadására. Az első SCK órajelimpulzusra mind a Master, mind a Slave eszköz shift regisztere balra lépteti egy bit-tel a regiszter tartalmát. Az SPI Slave shift regisztere fogadja a Master-től jövő első bitet (ami az LSB-vel jelölt legkisebb helyiértékű bit helyére kerül). Ezzel egy időben az SPI Master shift regisztere is fogadja a Slave-től jövő adat első bitjét (ami ugyancsak a shift regiszter LSB-vel jelölt legkisebb helyiértékű bitjére kerül). A fenti eljárást minden bitre megismételve, az ábráról látható, hogy a teljes Master és Slave közötti adatcsere 8 SPI órajelütem alatt lezajlódik. A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |