SPI Nedir? SPI Haberleşme, Bağlantı Şeması ve SPI Modları

SPI (Serial Peripheral Interface), mikrodenetleyicinin flash bellek, SD kart, TFT ekran, ADC ve Ethernet entegresi gibi çevre birimleriyle yüksek hızda haberleşmesini sağlayan senkron bir seri arabirimdir. Motorola tarafından geliştirilmiştir ve basit yapısı sayesinde bugün neredeyse her mikrodenetleyicide bulunur. Bu rehberde SPI’ın nasıl çalıştığını, bağlantı şemasını, SPI modlarını ve I2C ile farklarını anlatıyoruz.

SPI nedir?

SPI, ayrı bir saat hattı ve iki yönlü veri için iki ayrı hat kullanan senkron, full duplex bir seri arabirimdir. Haberleşmeyi her zaman master başlatır ve saati master üretir. Slave cihazlar adresle değil, her birine giden ayrı bir CS (chip select) hattıyla seçilir.

SPI için resmî bir standart yoktur; temel yapı her yerde aynıdır ama saat kutbu, kelime uzunluğu ve komut yapısı cihazdan cihaza değişir. Bu yüzden her cihazın veri sayfasındaki SPI ayarlarına bakmak gerekir.

Tercih edilmesinin başlıca nedenleri:

SPI nasıl çalışır?

SPI dört hattan oluşur. Hat adları üreticiye göre değişebilir:

Master ve slave’in içinde birer kaydırmalı yazmaç (shift register) vardır ve bu ikisi bir halka oluşturur. Her saat darbesinde master MOSI üzerinden bir bit gönderirken slave de MISO üzerinden bir bit gönderir. Sekiz saat darbesi sonunda iki taraf baytlarını değiş tokuş etmiş olur. Bu yüzden SPI’da her gönderim aynı zamanda bir alımdır: master bir cihazdan veri okumak istediğinde, slave’in cevabını almak için boş (dummy) baytlar gönderir.

SPI bağlantı şeması

SPI bağlantı şeması: master ile üç slave arasında ortak SCLK, MOSI ve MISO hatları, her slave için ayrı CS hattıMasterMikrodenetleyiciSCLKMOSIMISOSlave 1SCLKMOSIMISOCS1CSSlave 2SCLKMOSIMISOCS2CSSlave 3SCLKMOSIMISOCS3CSSCLK, MOSI ve MISO tüm slave’lerde ortak; her slave’in kendi CS (chip select) hattı var.
SPI bağlantı şeması: bir master ve üç slave. Master, iletişim kuracağı slave’in CS hattını lojik 0 yapar.

Her slave için ayrı CS hattı pin sayısını artırır. Bazı cihazlar (ör. kaydırmalı yazmaçlar ve bazı LED sürücüleri) zincirleme (daisy-chain) bağlantıyı destekler: bir cihazın çıkışı sonrakinin girişine bağlanır ve tüm zincir tek bir CS ile sürülür.

SPI modları: CPOL ve CPHA

Saatin boştayken hangi seviyede durduğunu CPOL, verinin saatin hangi kenarında okunduğunu CPHA belirler. Bu iki bitin birleşimi dört SPI modunu oluşturur:

ModCPOLCPHASaat boştaykenVeri okunur
Mod 000DüşükYükselen kenarda
Mod 101DüşükDüşen kenarda
Mod 210YüksekDüşen kenarda
Mod 311YüksekYükselen kenarda

Master ve slave aynı modda çalışmalıdır; mod, slave’in veri sayfasında belirtilir. En yaygın olanı Mod 0’dır, onu Mod 3 izler. Aynı hatta farklı modda çalışan cihazlar varsa master her cihazı seçmeden önce modunu değiştirebilir. Bit sırası da (genellikle önce en anlamlı bit, MSB) iki tarafta aynı olmalıdır.

Hız ve hat uzunluğu

SPI’ın protokolden gelen bir hız sınırı yoktur; sınırı en yavaş cihazın veri sayfasındaki en yüksek saat frekansı ve kart tasarımı belirler. Birkaç MHz ile birkaç on MHz arası yaygındır; seri flash bellekler daha yüksek hızlara çıkabilir.

SPI kart içi haberleşme için tasarlanmıştır. Uzun kablolarda ve breadboard bağlantılarında sinyal kenarlarında çınlama (ringing) ve gecikme oluşur. Hatları kısa tutun, gerekirse saat hattına kaynağa yakın 22–33 Ω seri direnç ekleyin ve sorun yaşarsanız saat frekansını düşürün. Metrelerce uzaktaki cihazlar için RS485 veya CANBus kullanılmalıdır.

Flash belleklerde veri hattı sayısını artıran Dual SPI (2 hat) ve Quad SPI (4 hat) çeşitleri de vardır; aynı saat frekansında iki ve dört kat veri taşırlar.

SPI ile kullanılan cihazlar

SPI, I2C ve UART farkları

ÖzellikI2CSPIUART
Hat sayısı2 (SDA, SCL) + GND3 ortak hat (SCLK, MOSI, MISO) + her slave için 1 CS2 (TX, RX) + GND
SaatVar (senkron)Var (senkron)Yok (asenkron); iki taraf aynı baudrate’e ayarlanır
Cihaz bağlantısıÇok cihaz, adresle seçilirÇok cihaz, her biri ayrı CS ile seçilirNoktadan noktaya, iki cihaz
YönHalf duplexFull duplexFull duplex
Tipik hız100 kbit/s – 1 Mbit/sBirkaç MHz – onlarca MHz9600 – 115200 bit/s (daha yükseği mümkün)
OnayHer baytta ACK bitiYokYok (parite isteğe bağlı)
MesafeKart üzerinde, kısa kablolarKart üzerinde, kısa kablolarKısa kablolar; uzun mesafede RS485’e dönüştürülür
Tipik kullanımSensör, EEPROM, RTC, port genişleticiFlash bellek, SD kart, TFT ekran, ADCGPS, modüller, HMI ekran haberleşmesi

Yüksek hızda çok veri aktarılacaksa (ekran, bellek, ADC) SPI; az pinle çok sayıda yavaş cihaz bağlanacaksa (sensörler, saat, EEPROM) I2C uygundur. I2C’nin ayrıntıları için I2C Nedir? rehberimize bakabilirsiniz.

AIRHMI ürünlerinde SPI

AirHMI ekranların Industry paketinde bir SPI ve bir I2C arabirimi bulunur (ör. AirHMI 7" Rezistif Industry ve 10.1" Rezistif Industry). AirHMI IO Board bu pinleri GPIO, ADC ve PWM ile birlikte kolay bağlantı için dışarı alır.

Sık yapılan hatalar ve sorun giderme

Sorun giderirken önce cihazın kimlik (ID) register’ını okumayı deneyin; birçok flash bellek ve sensör sabit bir kimlik değeri döndürür. Hep 0x00 veya 0xFF geliyorsa bağlantıya, CS’ye ve SPI moduna bakın. Bir mantık analizörü SCLK, MOSI, MISO ve CS’yi aynı anda göstererek hatayı hızla bulmanızı sağlar.

SPI destekli AirHMI ekranlarını inceleyin

AirHMI ekranların Industry paketinde SPI ve I2C arabirimleri, 3 ADC, GPIO, PWM ve video ile ses oynatma desteği bulunur. Projeniz için doğru modeli seçmekte yardım isterseniz bize yazın.

AirHMI Ekranlar AirHMI IO Board

İlgili Ürünler

Sıkça Sorulan Sorular

SPI’da cihaz adresi var mı?

Hayır. SPI’da adresleme yoktur; master her slave’e giden ayrı CS (chip select) hattını lojik 0 yaparak konuşacağı cihazı seçer.

MOSI ve MISO çapraz mı bağlanır?

Hayır. Master’ın MOSI’si slave’in MOSI’sine, MISO’su slave’in MISO’suna bağlanır. UART’taki TX–RX çaprazlaması SPI’da yoktur.

SPI hangi hızda çalışır?

Protokolden gelen bir sınır yoktur; hızı cihazların veri sayfasındaki en yüksek saat frekansı ve kart tasarımı belirler. Birkaç MHz ile birkaç on MHz arası yaygındır.

SPI modu nedir?

Saatin boştaki seviyesi (CPOL) ve verinin okunduğu kenar (CPHA) ile belirlenen dört çalışma biçimidir. Master ve slave aynı modda olmalıdır; en yaygını Mod 0’dır.

SPI mı I2C mi kullanmalıyım?

Ekran, bellek ve ADC gibi yüksek hızda çok veri aktarılan cihazlarda SPI; sensör, saat ve EEPROM gibi az pinle çok cihaz bağlanan uygulamalarda I2C uygundur.

SPI uzun kabloyla kullanılabilir mi?

SPI kart içi haberleşme için tasarlanmıştır. Uzun kablolarda sinyal bozulur; hızı düşürmek kısa mesafede yardımcı olur, ancak metrelerce uzaktaki cihazlar için RS485 veya CANBus kullanılmalıdır.