====== 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:// * [[it:hw:general|Hardware - Hlavní rozcestník]] * [[it:hw:embedded:microcontrollers|Mikrokontroléry a jejich periferie]] * [[it:net:protocols:i2c|Sběrnice I2C a srovnání s SPI]] //Tagy: {{tag>hardware sbernice spi embedded mcu microcontroller full-duplex}}//