SPI (Seri çevresel arabirim), genel olarak MOSI (master out slave in), MISO (master in slave out), SCL (master tarafından üretilen bir seri saat) ve SS (slave select) olarak bilinen dört telli tam çift yönlü iletişim protokolüdür. SPI master ve slave mimarisini takip eder ve iletişim her zaman master tarafından başlatılır. Aynı zamanda asenkron iletişim protokolüdür, çünkü saat master ve slave tarafından paylaşılır. SPI sadece çoklu-slave desteklidir, çoklu-master’ı desteklemez ve slave “slave select signal” tarafından seçilir. SPI’da iletişim verileri master’dan çıkarılır ve shift register slave yardımcısına kaydırılır.
SPI, veri bitlerinin master cihazdan slave kaydırılmasına izin verir ve aynı zamanda, bitler slave’in içinden master’a kaydırılabilir. Aşağıdaki 1. Animasyonda, Microchip A’dan Microchip B’ye ve Microchip B’den Microchip A’ya kaydırılmış veriler simüle edilmiştir. 2. Animasyon, iki mikroçip arasında bir SPI işleminin sanal 4 kanallı bir osiloskop görüntüsünü gösterir. SPI standartlaştırılmadığından, En Önemli Bitin (MSb) veya En Düşük Önemsiz Bitin (LSb) önce transfer edildiği durumlarla karşılaşmak mümkündür.
Saat geçişleri verinin değişimini ve örneklemesini yönetir. SPI, dört olası saat ayarlarına karşılık gelen dört moda (0,1,2,3) sahiptir. Aşağıda paylaşıldığı gibi Saat döngüsünün yükselen kenarında örneklenen bitler, saat döngüsünün düşen kenarı üzerine kaydırılır ve bunun tersi de geçerlidir.
Her işlem, slave-select hattı lojik değere getirildiğinde başlar (slave select tipik olarak aktif-düşük bir sinyaldir). Slave select, veri ve saat çizgileri arasındaki tam ilişki, saat polaritesinin (CPOL) ve saat fazının (CPHA) nasıl yapılandırıldığına bağlıdır.
Ters çevrilmemiş saat polaritesiyle (yani, slave lojik düşük geçişleri seçtiğinde saat lojikte düşüktür):
- Mod 0: Saat fazı, verilerin saat atımının yükselen kenarında örnekleneceği ve saat atımının düşen kenarında kaydığı şekilde yapılandırılır. Bu, yukarıdaki şemadaki ilk mavi saat izine karşılık gelir. Verilerin, saatin ilk yükselen kenarından önce mevcut olması gerektiğini unutmamak gerekiyor.
- Mod 1: Saat fazı, verilerin saat atımının düşen kenarında örnekleneceği ve saat atımının yükselen kenarında kaydığı şekilde yapılandırılır. Bu, yukarıdaki diyagramda ikinci mavi saat izine karşılık gelir.
Ters saat polaritesiyle (yani, slave lojik düşük geçişleri seçtiğinde saat mantıksal olarak yüksektedir):
- Mod 2: Saat fazı, verilerin saat atımının düşen kenarında örnekleneceği ve saat atımının yükselen kenarında kaydığı şekilde yapılandırılır. Bu, yukarıdaki diyagramda ilk turuncu saat izine karşılık gelir. Verilerin, saatin ilk düşen kenarından önce mevcut olması gerektiğini unutmamak gerekiyor.
- Mod 3: Saat fazı, verilerin saat atımının yükselen kenarında örnekleneceği ve saat atımının düşen kenarında kaydığı şekilde yapılandırılır. Bu, yukarıdaki diyagramda ikinci turuncu saat izine karşılık gelir.
SPI çoklu Slave-select yapılandırmasına geçemeden önce SPI protokolündeki terimlerini öğrenmemiz gerekmektedir.
CLK: Seri Saat. Ana cihaz tarafından kontrol edilir. Her bir saat döngüsü ile yeni bir veri biti dışarı kaydırılır.
SSN: Slave Select (“N”, aktif-düşük sinyal olarak tanımlar). Master cihaz tarafından kontrol edilir. Aktif bir slave-select hat, master’ın ilgili slave cihazından veri gönderiyor ya da veri talep ettiğini gösterir.
MOSI: Master Out ⇒ Slave In. Veriler ana cihazı terk eder ve köle cihazına girer. Çip A’daki MOSI hatları çip B’deki MOSI hatlarına bağlanır.
MISO: Master In ⇐ Slave Out. Veri, Slave cihazı terk eder ve Master cihaza (veya daisy chain konfigürasyonunda başka bir slave cihaza; bir sonraki akordiyon menüde bu konuyu detaylı bir şekilde anlatıyorum.) girer. Çip A’daki MISO hatları çip B’deki MISO hatlarına bağlanır.
CPOL: Saat Polaritesi. Bu saat sinyalinin ilk mantık durumunu yönetir.
CPHA: Saat Fazı. Bu veri geçişleri ve saat geçişleri arasındaki ilişkiyi yönetir.
Standart SPI düzenlemesinde, master cihaz, cihazı etkinleştirerek, yani ilgili aygıtın bağımlı seçim hattını düşük mantığa ayarlayarak ortak veri hatlarını paylaşan bireysel cihazlardan veri yazabilir veya veri isteyebilir. MISO hatları arasındaki sürücü çekişmesi ile master’a döndürülen veriler bozulacağından, aynı anda birden fazla slave’i etkinleştirmemek için dikkatli olunması gerekmektedir. Bazı uygulamalar, master’a verileri geri gönderilmesi gerekmez; Bu gibi durumlarda, eğer master aynı veriyi birden çok slave’e göndermek istiyorsa, birden fazla slave ile aynı anda ele alınabilir.
Çoklu slave-select konfigürasyonunda, her slave master’dan farklı bir slave-select hattına bağlanması gerekmektedir.
Bu yapılandırmada, veriler bir cihazdan diğerine geçer. Son bağımlı cihaz verileri master üniteye geri gönderebilir.
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. Veriler, serideki son slave olana kadar satırdan aşağı iner ve daha sonra master aygıta veri göndermek için MISO hattını kullanabilir.Bu yapılandırma, tek adresli LED ışık dizilerine çok uygun olacaktır.