Genel Özellikleri

Serial Peripheral Interface veya kısa adıyla SPI, özellikle gömülü sistemlerde kullanılan senkron ve full-duplex bir seri haberleşme protokolüdür. Senkron, haberleşmede senkronizasyonun bir clock sinyali yardımıyla yapılmasıyken, asenkron bağlantılarda bir clock sinyali bulunmaz. Full-duplex ise, half-duplex’in aksine haberleşmenin aynı anda her iki yönlü de olabileceğini ifade eder.

kaynak

Seri haberleşmede, veriyi oluşturan bitler sadece bir kanal üzerinden art arda gönderilir. Paralel haberleşmede birden çok kanal üzerinden veriyi oluşturan bitler aynı anda gönderilir. Bundan dolayı seri haberleşmede çok daha az pin bağlantısı gerekir ancak veri iletim hızı doğal olarak daha düşük olur.

serial vs parallel kaynak

SPI haberleşmesinde bus’ı kontrol eden cihaza master, kontrol edilen cihazlara ise slave ismi verilir. Bazı kaynaklarda main ve secondary şeklinde de isimlendiriliyor. Master bir clock sinyali üreterek gönderilen diğer sinyallerin ne zaman okunması gerektiğini belirler. Her bir clock cycle’da bir bitlik veri aktarılır. Veri, slaveden mastera gidiyorsa dahi clock sinyali master tarafından üretilir. kaynak

SPI Pinleri

4 adet SPI pini vardır ve aşağıdaki şekilde master ve slave arasında bağlantı kurulması gerekir.

  • Master – Out / Slave – In (MOSI), master’dan slave’e verilerin gittiği bağlantıdır.
  • Master – In / Slave – Out (MISO), slave’den master’a verilerin gittiği bağlantıdır.
  • Serial Clock (SCLK), clock sinyalidir ve master tarafından üretilir.
  • Chip Select (CS) veya Slave Select (SS), master’ın hangi slave ile konuşacağını seçmek için kullanılır.
kaynak

Eğer birden çok slave varsa aşağıdaki gibi bağlantı yapılabilir. Bu durumda master, slave select pinini kullanarak hangi slave ile konuşacağını seçmelidir. Aynı anda sadece bir slave konuşabilir. Aşağıdaki resim independent slave konfigurasyonunu içeriyor.

kaynak

Ayrıca bir çember oluşturacak şekilde daisy chain konfigurasyonu ismi verilen şekilde de slave ve master cihazları birbirine bağlanabilir.

kaynak

SPI Donanımı

SPI donanım gereksinimleri, UART ve I2C’ye göre oldukça azdır. Sadece shift register ve bir D-latch’ten ibarettir. Master tarafında ayrıca bir clock generator da tabi olmak zorundadır.

kaynak

Bahsi geçen register’lar genelde 8 ya da 16 bitliktir.

Clock Sinyali ve SPI Çalışma Modları

Clock sinyali triggering açısından iki şekilde kullanılabilir: edge triggering ve level triggering.

Edge triggering, clock sinyalinin yükselen ve alçalan anlarında veri kanalının anlamlı veriyi taşımasını ifade eder. Level triggering ise clock sinyalinin yüksek ya da alçak devam ettiği anlarda veriye göz atılması gerektiğini söyler. Genelde edge triggering mekanizması daha yaygın kullanılır.

kaynak

Her ne kadar bir clock sinyalinin var olması baudrate tartışmasının önüne bir miktar geçse de, master ve slave iletişim kurmadan önce clock sinyali hakkında anlaşmak zorundadır. Edge triggering için aşağıdaki konfigurasyonlar mümkündür.

CPOL (Clock polarity), clock sinyalinin normalde hangi durumda, aktifken hangi durumda olacağını anlatır. CPOL=LOW, clock sinyali normalde yani iletişim yokken low, iletişim varken high durumunda olmasını ifade eder. CPOL=HIGH ise normalde high, aktifken low olmasını ifade eder.

CPHA (Clock Phase), clock sinyalindeki ilk değişimini mi yoksa ikinci değişimini mi seçtiğimizi anlatır. (yükselen ya da alçalan kenarlar olarak da özetlenebilir.)

Aşağıdaki resim, muhtemel dört CPOL/CPHA kombinasyonunu özetliyor.

kaynak

Ayrıca örnek bir SPI haberleşmesini de incelemek iyi olacaktır.

kaynak

SPI Bağlantısı Kurmadan Önce Dikkate Alınması Gereken Konfigurasyonlar

SPI bağlantısı kurmadan önce master ve slave cihazlar arasında bazı ayarlar yapmak gerekir yoksa sağlıklı bir haberleşme bağlantısı kurulamaz. Aşağıda aynı olması gereken sıklıkla farklı olabilen özellikler sıralanmıştır.

  • CPOL/CPHA (çalışma modu)
  • Veri boyutu (genelde 8 bit)
  • Cihazların cevap verebileceği maximum baudrate

SPI bağlantısını düzenleyen resmi bir standart olmadığı için sık karşılaşılmasa da üreticiler aşağıdaki gibi farklı özellikler de geliştirebiliyor. Bunları da kontrol etmekte fayda var.

  • Chip Select olmadan çalışma durumu
  • Chip Select’in active low/active high olması
  • CRC biti
  • Bir bitlik verinin kanalda hangi gerilimlerle taşındığı ve anlamlandırılması esnasından kullanılan tolerans aralıkları
  • Cihazların bağlantı topolojisi (daisy chain gibi durumlar)

SPI’ın Avantaj ve Dezavantajları

Advantajları

  • SPI donanım gereksinimleri az ve basit olduğu için ucuzdur.
  • full duplextir.
  • Adreslemeye gerek yoktur, slave select ile bağlantı kurulur.
  • Sadece bir adet master olduğu için haberleşmede uyuşmazlık oluşmaz.
  • Clock sinyalini master ürettiği için, slave’lerin clock sinyali üretmesine gerek yoktur.

Dezavantajları

  • Her slave için bir slave select pini gerekir.
  • Acknowledgement mekanizması yoktur. Verinin düzgün iletildiğinden emin olunamaz.
  • Protokolü belirleyen bir standart aslında yoktur ve cihaz üreticileri farklı özellikler ekleyebilirler.
  • Akış kontrol mekanizması yoktur.

Not: Bu yazı, büyük oranda link’te yer alan makalenin Türkçeleştirilmesiyle oluşturulmuştur.