Mikrokontroléry rady AVR – SPI zbernica

Umožňuje vysokorýchlostný synchrónny dátový prenos medzi MCU a inými periférnymi zariadeniami alebo medzi niekoľkými MCU. AVR SPI (ATmega32) vlastnosti:

– plný duplex
– trojvodičový synchrónny dátový prenos
– výber typu prenosu – najprv LSB alebo najprv MSB
– programovateľná prenosová rýchlosť
– prerušenie od konca prenosu
– zobudenie z Idle-Mode
– double speed master mode

obr1

Obr. 1 Bloková schéma jednotky SPI

Princíp komunikácie cez SPI

Pripojenie perif. zariadenia k SPI interface sa realizuje vývodmi:
a) SCK – (PB7) – SPI hodiny, ktoré generuje MASTER a prijíma SLAVE (v MASTER mode ako vystup)
b) MISO – (PB6) – dátový vodič so smerom prenášaných dát SLAVE -> MASTER (v SLAVE mode ako vystup)
c) MOSI – (PB5) – dátový vodič so smerom prenášaných dát MASTER -> SLAVE (v MASTER mode ako vystup)
d) /SS – (PB4) – Slave select (V SLAVE mode ako vstup) – aktivovanie SLAVE zariadenia MASTER-om

Jednotka SPI v podstate pozostáva z posuvného registra, ktorý postupne vysiela dátové bity na pripojené zariadenie. Počas prenosu dát jedno zariadenie pracuje ako Master – to znamená že riadi celú komunikáciu a druhé ako Slave. Zariadenie Master môže vysielať dáta do viacerých zariadení typu Slave. Výber zariadenia s ktorým bude Master komunikovať sa realizuje pomocou signálu /SS.

obr2

Obr. 2 Prepojenie MCU s iným zariadením cez SPI

Systém uvedený hore pozostáva z dvoch posuvných registrov (jeden u MCU a druhý u pripojeného zariadenia) a generátora hodín (u Master-a). Master inicializuje komunikáciu stiahnutím linky SS na log0 oslovovaného Slave zariadenia. Master a Slave si pripravia dáta na odoslanie v ich posuvných registroch (SPDR) a Master generuje hodiny na pin SCK o požadovanej frekvencii na prenos dát. Dáta su vždy posúvané z Master do Slave (pin MOSI) a zo Slave do Master (MISO) naraz (po bite).

Za každým dátovým packetom (väčšinou 8bit), Master nastaví pin SS na log1. Generátor hodín sa zastaví a nastaví sa príznak konca prenosu (SPIF) poprípade sa vygeneruje prerušenie od konca prenosu (ak je nastavený bit SPIE v registri SPCR).

Celkovo sa dajú nastaviť štyri typy prenosu a to podľa fázy a polarity SCK vzhľadom k sériovým dátam. Pozri datasheet str. 139.

Funkcia /SS pin:

a) v Slave móde:

Ak je SPI nakonfigurované ako Slave je /SS pin vždy ako vstup. Ak /SS je v log0 je SPI aktivovane a MISO pin je výstupom pre prijímané dáta (ak je tak aj nakonfigurovaný). Všetky ostatné vývody sú ako vstupy. Ak je /SS v log1 SPI je pasívne čo znamená že nebude prijímať dáta – je neaktívne. SPI Slave okamžite resetne vysielaciu a prijímaciu časť a prijaté dáta nechá v posuvnom registri odkiaľ sa musia prečítať užívateľom – 8bit register SPDR.

b) v Master móde:

Ak je /SS nakonfigurovaný ako výstup tak ním môže riadiť Slave zariadenie – komunikáciu s ním. Pre iný stav pozri datasheet str.136.

V/V registre jednotky SPI

SPI u AVR obsahuje tri 8bit- registre.

obr3

Obr. 3 Register SPCR

Konfiguračný register SPCR – SPI Control Register:

SPIE – SPI Interrupt Enable – log1 – povolené prerušenie od konca prenosu na SPI jednotke;
SPE – SPE Enable – log1 – jednotka SPI je zapnutá (povolená);
DORD – Data Order – poradie dát; log1 – najprv sa prenáša LSB dátového slova; log0 – MSB first;
MSTR – Master/Slave Select – výber funkcie medzie master alebo slave; log1 – master; log0 – slave;
– ak je súčasne nastavený /SS ako vstup a do log1 – MSTR bude automaticky vynulovaný a SPIF v SPRS sa nastaví na log1;
CPOL – Clock Polarity – polarita hodinových impulzov; log1 – SCK je v kľudovom stave na log1; log0 – SCK = log0; pozri tabuľku dole;
CPHA – Clock Phase – fáza hodín; určuje či budú data vzorkované na nábežnej (leading) alebo dobežnej (last) hrane signálu SCK; pozri tabuľku;
SPR1:0 – SPI Clock Rate Select – tieto bity (spolu SPI2X v SPSR) nastavujú rýchlosť prenosu dát, teda frekvenciu SCK na zariadení MASTER; nastavenie ukazuje tabuľka;

obr4

Obr. 4 Register SPSR

Príznakový register SPSR – SPI Status Register:

SPIF – SPI Interrupt Flag – nastavený do log1 po ukončení prenosu;
WCOL – Write Collision Flag – log1 – ak je behom prenosu dát naplnený SPI dátový register SPDR;

obr5

Obr. 5 Nastavenie polarity SCK

obr6

Obr. 6 Nastavenie fázy SCK

obr7

Obr. 7 Nastavenie frekvencie SCK

obr8

Obr. 8 SPDR register

Dátový register SPDR – SPI Data Register:

Tento register pre čítanie a zápis je používaný k prenosu dát medzi súborom registrov a SPI posuvným registrom. Vysielanie dát sa uskutočňuje zápisom (8bit) do tohto registra a prečítaním z neho sa získajú prijaté dáta.

obr9

Obr. 9 Časové diagramy – odporúčané sa zamyslieť nad nimi

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Môžete použiť tieto HTML značky a atribúty: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>