AIRHMI · 24.10.2026

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:
- Yüksek hız: I2C’den çok daha hızlıdır; onlarca MHz yaygındır
- Full duplex: veri aynı anda iki yönde akar
- Basit donanım: pull-up, adres veya onay mekanizması gerekmez
- Esnek veri boyu: 8 bit ile sınırlı değildir; uzun veri blokları kesintisiz aktarılır
SPI nasıl çalışır?
SPI dört hattan oluşur. Hat adları üreticiye göre değişebilir:
- SCLK (SCK): master’ın ürettiği saat
- MOSI (Master Out Slave In): master’dan slave’e veri; yeni adlandırmada COPI veya SDO (master tarafında)
- MISO (Master In Slave Out): slave’den master’a veri; yeni adlandırmada CIPO veya SDI (master tarafında)
- CS / SS (Chip Select): slave seçimi; genellikle aktif düşüktür, yani lojik 0 olduğunda slave dinler
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ı
- SCLK, MOSI ve MISO tüm slave’lerde ortaktır; her slave’e master’dan ayrı bir CS hattı gider.
- Bağlantı çapraz yapılmaz: 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. SDO / SDI etiketli cihazlarda master’ın SDO’su slave’in SDI’sına gider.
- CS seçilmemişken slave’in MISO çıkışını yüksek empedansa (tri-state) alması gerekir; aksi hâlde aynı hattaki diğer slave’lerle çakışır.
- CS hatlarına konan pull-up dirençleri, mikrodenetleyici açılırken pinler henüz ayarlanmamışken slave’lerin yanlışlıkla seçilmesini önler.
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:
| Mod | CPOL | CPHA | Saat boştayken | Veri okunur |
|---|---|---|---|---|
| Mod 0 | 0 | 0 | Düşük | Yükselen kenarda |
| Mod 1 | 0 | 1 | Düşük | Düşen kenarda |
| Mod 2 | 1 | 0 | Yüksek | Düşen kenarda |
| Mod 3 | 1 | 1 | Yüksek | Yü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
- Bellek: seri flash bellekler (ör. W25Q serisi), SD kartlar
- Ekranlar: TFT ve OLED ekran sürücüleri (ör. ILI9341)
- Analog dönüştürücüler: ADC ve DAC entegreleri (ör. MCP3008)
- Haberleşme entegreleri: Ethernet (W5500, ENC28J60), RFID okuyucular ve CAN denetleyicisi MCP2515. CAN için ayrıntılar CANBus Nedir? rehberimizde.
SPI, I2C ve UART farkları
| Özellik | I2C | SPI | UART |
|---|---|---|---|
| Hat sayısı | 2 (SDA, SCL) + GND | 3 ortak hat (SCLK, MOSI, MISO) + her slave için 1 CS | 2 (TX, RX) + GND |
| Saat | Var (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çilir | Noktadan noktaya, iki cihaz |
| Yön | Half duplex | Full duplex | Full duplex |
| Tipik hız | 100 kbit/s – 1 Mbit/s | Birkaç MHz – onlarca MHz | 9600 – 115200 bit/s (daha yükseği mümkün) |
| Onay | Her baytta ACK biti | Yok | Yok (parite isteğe bağlı) |
| Mesafe | Kart üzerinde, kısa kablolar | Kart üzerinde, kısa kablolar | Kısa kablolar; uzun mesafede RS485’e dönüştürülür |
| Tipik kullanım | Sensör, EEPROM, RTC, port genişletici | Flash bellek, SD kart, TFT ekran, ADC | GPS, 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
- Yanlış SPI modu: veri kaymış veya anlamsız gelir; CPOL ve CPHA’yı veri sayfasıyla karşılaştırın.
- MOSI ve MISO’nun çapraz bağlanması: SPI’da MOSI–MOSI, MISO–MISO bağlanır.
- CS’nin yanlış kullanımı: birçok cihaz bir komutun bittiğini CS’nin 1’e dönmesinden anlar. CS’yi tüm işlem boyunca 0’da tutun ve komutlar arasında bırakın.
- MISO çakışması: seçili değilken MISO’yu bırakmayan bir cihaz hattaki diğer cihazların cevabını bozar.
- Gerilim uyumsuzluğu: 5 V ve 3,3 V cihazlar arasında seviye dönüştürücü kullanın.
- Çok yüksek saat hızı: özellikle kabloyla yapılan bağlantılarda hızı düşürmek çoğu sorunu çözer.
- Bit sırası: MSB ve LSB önce ayarlarının iki tarafta aynı olduğundan emin olun.
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.





