2 Eylül 2026 Çarşamba

Serial Peripheral Interface (SPI), mikrodenetleyiciler tarafından kısa mesafelerde bir veya daha fazla çevresel aygıtla hızlı bir şekilde iletişim kurmak için kullanılan, senkronize bir seri veri iletişim protokolüdür. Motorola tarafından geliştirilmiştir. İki mikrodenetleyici arasındaki iletişim için de kullanılır.

SPI full dublex olarak çalışan bir haberleşme tekniğidir. Buradaki Full dublex’ in anlamı veri alma ve gönderme işlemini eş zamanlı olarak gerçekleştirebilmesidir. SPI protokolünde de I2C'de olduğu gibi bir adet Master cihaz bulunur. Bu cihaz hatta bağlı slave adı verilen çevresel cihazları kontrol eder. İletişim Master ve slave cihazlar arasında gerçekleşir. Master cihaz iletişim kurmak istediği cihazı seçer ve o cihazla iletişime geçer.

SPI, birçok farklı cihaz tarafından kullanılan yaygın bir iletişim protokolüdür. Örneğin,  SD kart okuyucu modülleri, RFID kart okuyucu modülleri ve 2,4 GHz kablosuz verici/alıcılar,  mikrodenetleyicilerle iletişim kurmak için SPI kullanır.

SPI'nin en basit yapılandırması tek bir master, tek bir slave sistemidir ancak; bir master birden fazla slave'i kontrol edebilir.







SPI'nin benzersiz faydalarından biri, verilerin kesintisiz olarak aktarılabilmesidir. Sürekli bir akışta herhangi bir sayıda bit gönderilebilir veya alınabilir. I2C ve UART’da ise veriler, belirli sayıda bit ile sınırlı paketler halinde gönderilir. Başlatma ve durdurma koşulları her paketin başlangıcını ve sonunu tanımlar, böylece veriler iletim sırasında kesilir.

SPI, I2C gibi iletişim tekniklerine göre daha hızlıdır. 2 den fazla cihaz için bile olsa adresleme gibi işlemler gerektirmez(I2C’ den ayıran özellik). Aynı kablo üzerinden farklı cihazlara farklı verileri aktarabilir (RS-232 den ayıran özellik).



Pin Yapısı ve Veri Hatları:




MISO (Master In Slave Out): Çevresel cihazlardan (slave) yollanan verilerin master cihaza aktarıldığı hattır.

MOSI (Master Out Slave In): Master cihazdan yollanan verilerin çevresel cihazlara (slave)aktarıldığı hattır.

SCK (Serial Clock): SPI haberleşmesinde senkronu sağlayan saat sinyalinin bulunduğu hattır. Saat sinyali master cihaz tarafından üretilir.

SS/CS (Slave Select/Chip Select): Master'ın hangi slave'e veri göndereceğini seçmesi için kullanılan hattır. MISO ve MOSI hatlarından da anlaşıldığı gibi SPI protokolünde I2C'den farklı olarak veri hatları tek yönlüdür. Ayrıca çevresel cihazların (slave) adreslerinin olmasına gerek yoktur. Her çevresel cihazın seçim ayağı bulunur. Bu ayağa, SS (Slave Select) denir. Bu hattın sayısı kullanılan çevresel cihazların sayısı kadardır. Her cihaz için master cihazından ayrı SS hattı çıkar. Burada dikkat edilmesi gereken donanımda SS pinin üzeri çizgi olmasıdır. Bu çizgi slave seçimi için pinin lojik - 0′ a çekilmesi gerektiğini gösterir. Bir cihazın Slave Select pini LOW olduğunda, master ile iletişim kurar. HIGH olduğunda, master’ı görmezden gelir. Her seferinde sadece bir SS/CS LOW olabilir. 

Master cihazda tek SPI donanımı olduğunu farz edelim. Bu durumda master cihaz tek SS pinine sahip demektir. Ancak birden fazla cihaz ile iletişime geçmemiz gerektiğinde kendimiz SS pinleri belirlemeli ve onları Slave cihazların SPI donanımında bulunan SS pinlerine bağlamamız gerekir. Bu işlem için denetleyicimizin herhangi dijital pinlerini çıkış olarak tanımlayıp, lojik durumunu veri aktarmak istediğimiz cihaz için değiştirmemiz yeterlidir.


SPI Veri İletişim Protokolü Nasıl Gerçekleşir?

SPI standartları gevşektir ve her cihaz bunu biraz farklı şekilde uygular.  Bu, kodu yazarken cihazın veri sayfasına dikkat edilmesi gerektiği anlamına gelir. SPI’da aşağıdaki ayarlamalar yapılabilir:

  • Bitlerin saat döngüsünün yükselen veya alçalan kenarında çıkışa verilmesi.

  • Veri göndermenin ve almanın saat döngüsünün ilk kenarında veya ikinci kenarında gerçekleşmesi.

  • SPI hızı.

  • Verilerin önce Most Significant Bit (MSB)’den başlayıp Least Significant Bit (LSB)’de bitecek şeklinde mi gönderileceği yada tam tersi şeklinde mi gönderileceği. Çoğu SPI çipi verileri MSB’den başlayıp LSB’de bitecek şekilde gönderir.


Saat sinyali, veri bitlerini senkronize eder. Her saat döngüsünde bir bit veri aktarılır. Bu nedenle veri aktarım hızı saat sinyalinin frekansı tarafından belirlenir. SPI iletişimi her zaman master tarafından başlatılır. Çünkü master, saat sinyalini yapılandırır ve üretir. Master, MOSI hattı üzerinden seri olarak verileri bit bit slave'e gönderir. Slave, master'dan gönderilen verileri MOSI pininden alır. Master'dan slave'e gönderilen veriler genellikle en anlamlı bitten(MSB) başlayıp en az anlamlı bitte(LSB) bitecek şekilde gönderilir. Slave ayrıca seri olarak MISO hattı üzerinden ana bilgisayara veri gönderebilir. Slave'den ana bilgisayara gönderilen veri genellikle en az anlamlı bitten(LSB) başlayıp en anlamlı bitte(MSB) bitecek şeklinde gönderilir. SPI standartlaşmadığından verilerin MSB-LSB durumunda farklılıklarla karşılaşmak mümkündür. 

SPI tam çift yönlü bir iletişimdir. Hem master hem de slave sırasıyla MOSI ve MISO hatları üzerinden aynı anda veri gönderebilir. SPI iletişimi sırasında veriler aynı anda iletilir(seri olarak MOSI veri yoluna kaydırılır) ve aynı anda alınır(veri yolundaki veriler MISO örneklenir). Saat sinyali verilerin iletilmesini ve alınmasını senkronize eder. SPI ara yüzü, kullanıcıya verileri göndermek veya almak için saatin yükselen veya alçalan kenarını seçme esnekliği sağlar.


Saat Polaritesi ve Saat Fazı

SPI iletişimi, cihazlar arasındaki veri gönderme/alma biçimini ayarlamak için iki parametreye dayanır: Saat polaritesi (CPOL) ve saat fazı (CPHA).

CPOL: Cihazlar arasında veri aktarımı olmadığında saat sinyalinin boşta kalma durumunu tanımlar. SPI iletişiminde, saatin boşta olma durumu; CPOL ayarına bağlı olarak düşük voltaj seviyesinde ya da yüksel voltaj seviyesinde olabilir. 

CPOL = 0 ise; saat düşük seviyede boştadır.

CPOL = 1 ise; saat yüksek seviyede boştadır.

Bu boşta kalma durumları, SPI aygıtları arasındaki iletişim zamanlaması için önemlidir. Aygıtlar, uygun senkronizasyon ve veri aktarım güvenilirliğini sağlamak için CPOL ayarı konusunda anlaşmalıdır.


CPHA: Bu ayar verilerin saat sinyalinin kenarlarına göre ne zaman alınacağını ve gönderileceğini belirler.

CPHA = 0 ise; veriler yükselen kenarda alınır, düşen kenarda gönderilir.

CPHA = 1 ise; veriler düşen kenarda alınır, yükselen kenarda gönderilir.

SPI Modu

CPOL

CPHA

Saat Boştayken Mantık Durumu

Alma/Gönderme Saat Fazı

0

0

0

Düşük voltaj

Yükselen kenarda alma, düşen kenarda gönderme

1

0

1

Düşük voltaj

Düşen kenarda alma, yükselen kenarda gönderme

2

1

0

Yüksek voltaj

Düşen kenarda alma, yükselen kenarda gönderme

3

1

1

Yüksek voltaj

Yükselen kenarda alma, düşen kenarda gönderme


Aşağıdaki grafiklerde yukarıdaki tabloya göre veri iletim şekilleri yer almaktadır. İletimin başlangıcı ve sonu noktalı yeşil çizgiyle, veri alma kenarı turuncuyla ve veri gönderme kenarı maviyle gösterilmiştir. 

NOT: Lütfen bu şekillerin yalnızca açıklama amaçlı olduğunu unutmayın. Başarılı SPI iletişimleri için, kullanıcılar ürün veri sayfasına başvurmalı ve parçanın zamanlama özelliklerinin karşılandığından emin olmalıdır.


SPI Mod 0








SPI Mod 1








SPI Mod 2



 





SPI Mod 3







İletişim Adımları

  1. Master saat sinyalini çıkışa verir:






  1. Master, SS/CS pinini düşük voltaj durumuna geçirir ve bu da slave'i aktifleştirir:






  1. Master, verileri MOSI hattı boyunca slave birer bit halinde gönderir. Slave, bitler geldikçe okur.







  1. Slave cihazın Master’a bir cevap vermesi gerekiyorsa, slave, MISO hattından verileri birer bit halinde Master’a gönderir.







Master-Slave Bağlantı Türleri

  1. Master'ın birden fazla slave seçme pini varsa:






  1. Master’ın sadece bir adet slave seçme pini varsa Daisy-Chain(papatya zinciri) yöntemi kullanılır:






Daisy Chain konfigürasyonunda, tüm slave’ler ortak bir slave-select hattını paylaşırlar. Veriler master’dan ilk slave’e, sonra da ilk slave’den ikincisine kaydırılarak ilerlemektedir. Bu yöntemde verileri iletmek için gereken saat döngüsü sayısı Daisy Chain zincirindeki slave sayısıyla orantılıdır. Normal SPI modunda yalnızca 8 saat darbesi gerekirken, 8 bitlik bir sistemde, verilerin 3. Slave’de kullanılabilir olması için 24 saat darbesi gerekir.


SPI'nin Avantajları ve Dezavantajları

SPI kullanmanın bazı avantajları ve dezavantajları vardır ve farklı iletişim protokolleri arasında seçim yapmanız gerektiğinde, projenizin gereksinimlerine göre SPI'yi ne zaman kullanacağınızı bilmelisiniz:

Avantajları

  • Başlatma ve durdurma bitleri olmadığından, veriler kesintisiz olarak sürekli aktarılabilir.

  • I2C gibi karmaşık bir slave adresleme sistemi yoktur.

  • I2C'den daha yüksek veri aktarım hızı (neredeyse iki kat daha hızlı) vardır.

  • MISO ve MOSI hatları olduğundan veriler aynı anda gönderilebilir ve alınabilir.

Dezavantajları

  • Dört kablo kullanır. (I2C ve UART'lar iki kablo kullanır)

  • Verilerin başarıyla alındığına dair bir onay biti yoktur. (I2C'de bu var)

  • UART'daki parite biti gibi bir hata denetimi biçimi yoktur.

  • Sadece tek bir master cihaza izin verir. Çoklu master’ı desteklemez.


0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

Toplam Sayfa Görüntüleme Sayısı

Sensörlerin Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com