Obsah
Sběrnice SPI (Serial Peripheral Interface)
SPI (Serial Peripheral Interface) je synchronní sériové komunikační rozhraní navržené společností Motorola koncem 80. let. Jedná se o jeden z nejrozšířenějších standardů pro nízkoúrovňovou komunikaci na krátké vzdálenosti mezi mikrokontroléry (např. Arduino, ESP32, STM32) a jejich periferními čipy (senzory, SD karty, displeje, paměti EEPROM).
Na rozdíl od sběrnice I2C funguje SPI v režimu Full-Duplex, což znamená, že data mohou být přenášena oběma směry současně.
Principy fungování: Master a Slave
SPI komunikace využívá architekturu Master/Slave (pán / podřízený):
- Master (Řídicí zařízení): Obvykle hlavní mikrokontrolér. Generuje hodinový signál a iniciuje veškerou komunikaci.
- Slave (Podřízené zařízení): Periferní čip. Odpovídá pouze tehdy, když je k tomu vyzván Masterem.
[Image of SPI bus master slave architecture showing MOSI MISO SCLK and SS lines]
Komunikace probíhá pomocí posuvných registrů (shift registers) na straně Mastera i Slavea, které jsou propojeny do uzavřené smyčky. S každým hodinovým impulzem se posune jeden bit z Mastera do Slavea a zároveň jeden bit ze Slavea do Mastera.
Popis signálových vodičů
SPI je standardně čtyřvodičová sběrnice (Four-Wire Bus). Vodiče mají následující význam:
| Název signálu | Celé označení | Funkce |
|---|---|---|
| SCLK | Serial Clock | Hodinový signál generovaný Masterem. Určuje rychlost přenosu. |
| MOSI | Master Out, Slave In | Datová linka pro směr z Mastera do Slavea. |
| MISO | Master In, Slave Out | Datová linka pro směr ze Slavea do Mastera. |
| SS / CS | Slave Select / Chip Select | Výběr konkrétního podřízeného zařízení. Aktivuje se logickou nulou (Low). |
Připojení více Slave zařízení
Pokud Master komunikuje s více periferními čipy, existují dva způsoby jejich zapojení:
1. Paralelní zapojení (Independent Slave Configuration)
Linky SCLK, MOSI a MISO jsou sdílené všemi zařízeními. Master však musí mít pro každé Slave zařízení vyhrazený samostatný vodič SS (Slave Select). Aktivací konkrétní SS linky Master určí, se kterým čipem právě komunikuje. Ostatní čipy mají v té chvíli linku MISO přepnutou do stavu vysoké impedance (odpojeno), aby nerušily komunikaci.
2. Kaskádové zapojení (Daisy-Chain Configuration)
Využívá se méně často. Výstup MISO prvního Slavea je spojen se vstupem MOSI druhého Slavea atd. Všechna zařízení sdílí jednu linku SCLK a jednu linku SS. Data protékají všemi čipy jako jedním velkým posuvným registrem.
Režimy SPI (Clock Polarity a Phase)
SPI nemá pevně daný komunikační protokol, proto je nutné nastavit, jakým způsobem se budou bity na datových linkách číst. K tomu slouží dva parametry:
- CPOL (Clock Polarity): Určuje stav hodinové linky v neaktivním stavu. (0 = Low, 1 = High).
- CPHA (Clock Phase): Určuje, zda se data vzorkují na náběžnou (1. hrana) nebo sestupnou (2. hrana) hranu hodinového signálu.
Kombinací těchto parametrů vznikají 4 režimy SPI (Mode 0 až 3):
| Režim | CPOL | CPHA | Vzorkování dat (při čtení) |
|---|---|---|---|
| Mode 0 | 0 | 0 | Náběžná hrana, klidový stav hodina je Low |
| Mode 1 | 0 | 1 | Sestupná hrana, klidový stav hodina je Low |
| Mode 2 | 1 | 0 | Sestupná hrana, klidový stav hodina je High |
| Mode 3 | 1 | 1 | Náběžná hrana, klidový stav hodina je High |
Výhody a nevýhody SPI
Výhody:
- Vysoká rychlost: SPI běžně dosahuje rychlostí v řádech desítek MHz (mnohem rychlejší než I2C nebo UART).
- Full-Duplex: Současný obousměrný přenos dat.
- Jednoduchý hardware: Čipy nepotřebují unikační adresy, komunikaci řídí přímo hardwarové posuvné registry.
- Nízká spotřeba: Na linkách nejsou potřeba pull-up rezistory jako u I2C.
Nevýhody:
- Větší počet vodičů: S každým dalším Slave zařízením přibývá jedna linka SS (při paralelním zapojení).
- Chybí potvrzení doručení: Protokol neobsahuje vestavěný mechanismus potvrzení (ACK/NACK), zda Slave data skutečně přijal.
- Pouze na krátké vzdálenosti: Kvůli absenci stínění a náchylnosti na rušení je sběrnice vhodná pro spoje na jedné desce plošných spojů (typicky do 20-30 cm).
Související články:
Tagy: hardware sbernice spi embedded mcu microcontroller full-duplex
