Synchrónna komunikácia SPI

Z Kiwiki
Verzia z 14:26, 10. jún 2010, ktorú vytvoril Fajzen (diskusia | príspevky)
Skočit na navigaci Skočit na vyhledávání

SPI (Serial Peripheral Interface) je štvorvodičová synchrónna sériová zbernica pracujúca v móde full duplex slúžiaca na prepojenie periférií s mikropočítačmi. Protokol bol definovaný firmou Motorola v produktovej línii mikroradičov MC68HCxx. Zariadenia komunikujú spôsobom master/slave, kde zariadenie master iniciuje dátový rámec. Použitie SPI v prípadoch, kedy je k jednému zariadeniu master pripojených viacero zariadení slave, je síce možné, ale na jej realizáciu musí master disponovať potrebným počtom slave select (chip select) vývodov. SPI sa niekedy nazýva "four wire" sériová zbernica ako opak ku three, two a one wire sériovým zberniciam.

SPI zbernica: jeden master a jeden slave
SPI zbernica: jeden master a viacero slave

Rozhranie zbernice SPI

Zbernica SPI špecifikuje štyri logické signály:

  • SCLK - Serial Clock (výstup od zariadenia master)
  • MOSI/SIMO - Master Output, Slave Input (výstup od zar. master)
  • MISO/SOMI - Master Input, Slave Output (výstup od zar. slave)
  • SS - Slave Select (active low - jednotku reprezentuje nižšia úroveň napätia; výstup od zar. master)

Alternatívne pomenovania, ktoré sú tiež často používané:

  • SCK, CLK - Serial Clock
  • SDI, DI, SI - Serial Data In, Data In, Serial In
  • SDO, DO, SO - Serial Data Out, Data Out, Serial Out
  • nCS, CS, CSB, nSS, STE - Chip Select, Slave Transmit Enable

Pri pomenovaní SDI/SDO (DI/DO, SI/SO) je vyžadované, aby SDO na zariadení master bolo spojené s SDI na slave a naopak. Polarita Chip Select je zriedkakedy active high (jednotku reprezentuje vyššia úroveň napätia), aj keď niektoré značenia (SS alebo CS namiesto nSS, nCS) naznačujú opak.

Činnosť zbernice SPI

Zbernica SPI vie pracovať s jedným zariadením master a jedným alebo viacerými zariadeniami slave. Ak sa používa iba jedno zariadenie slave, SS pin môže byť zafixovaný na nižšiu úroveň napätia, ak to zariadenie dovoľuje. Niektoré zariadenia vyžadujú na pine SS hranu prechodu napätia z vyššej úrovne na nižšiu pre iniciáciu akcie, napríklad AD prevodník Maxim MAX1242. Ak je pripojených viacero zariadení slave, je potrebný samostatný SS signál zo zariadenia master do každého zariadenia slave. Väčšina zariadení slave má trojstavový výstup, takže ich signál MISO sa stane hi-Z (vysoko-impedančný, "odpojený" - neovplyvňuje obvod, do ktorého je zapojený), keď zariadenie nie je vybraté. Zariadenia bez trojstavového výstupu nemôžu zdielať segmenty SPI zbernice s ostatnými zariadeniami. Iba jedno takéto zariadenie môže komunikovať so zariadením master a iba jeho SS môže byť aktivované.

Prenos dát

Pred začatím komunikácie master najskôr nastaví taktovací signál SCLK na hodnotu frekvencie menšej alebo rovnej maximálnej frekvencie, ktorú slave podporuje. Tieto frekvencie sú väčšinou v rozsahu 1 - 70 MHz. Master potom vyberie požadovaný slave nastavením jeho signálu SS na úroveň logickej jednotky. Ak je nutná čakacia doba (napríklad pri AD prevode), potom master musí čakať minimálne po tento čas, kým začne vykonávať hodinové cykly. Počas každého hodinového cyklu SPI sa vykoná fulll duplexový prenos dát:

  • master pošle bit po linke MOSI, slave ho z tejto linky prečíta
  • slave pošle bit po linke MISO, master ho z tejto linky prečíta

Nie všetky prenosy vyžadujú všetky štyri operácie, ale vykonajú sa, aj keď nemajú význam.