SPI Haberleşme Protokolü Nedir ve Nasıl Gerçekleşir?
SPI Haberleşme, I2C ve UART, USB, ethernet, Bluetooth ve WiFi gibi protokollerden biraz daha yavaştır, ancak çok daha basittirler ve daha az donanım ve sistem kaynağı kullanırlar. SPI, I2C ve UART, mikrodenetleyiciler arasında ve mikrodenetleyiciler ve büyük miktarlarda yüksek hızlı verinin aktarılmasının gerekmediği sensörler arasında iletişim için idealdir.
Seri vs. Parelel Haberleşme
Elektronik cihazlar, cihazlar arasında fiziksel olarak bağlı kablolar aracılığıyla veri bitleri göndererek birbirleriyle konuşurlar. Bir bit, 26 harf (İngiliz alfabesinde) yerine bir kelimedeki bir harf gibidir, bir bit ikilidir ve sadece 1 veya 0 olabilir. Bitler, voltajdaki hızlı değişikliklerle bir cihazdan diğerine aktarılır. 5 V ile çalışan bir sistemde, 0 bit 0 V kısa darbe olarak iletilir ve 1 bit 5 V kısa darbe ile iletilir.
Veri bitleri paralel veya seri biçimde iletilebilir. Paralel iletişimde, veri bitlerinin tümü, her biri ayrı bir kablo aracılığıyla aynı anda gönderilir. Aşağıdaki şema ikili (01000011) olarak “C” harfinin paralel iletimini göstermektedir:
Seri iletişimde bitler tek bir kablo üzerinden tek tek gönderilir. Aşağıdaki şema ikili (01000011) “C” harfinin seri iletimini göstermektedir:
SPI Haberleşmeye Giriş
SPI, birçok farklı cihaz tarafından kullanılan ortak 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ın tümü, mikro denetleyicilerle iletişim kurmak için SPI kullanır.
SPI’nin benzersiz bir avantajı, verilerin kesintisiz olarak aktarılabilmesidir. Sürekli bir akışta herhangi bir sayıda bit gönderilebilir veya alınabilir. I2C ve UART ile 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 veri iletim sırasında kesintiye uğrar.
SPI aracılığıyla iletişim kuran cihazlar, master-slave ilişkisi içindedir. Master, kontrol cihazıdır (genellikle bir mikrodenetleyici), bağımlı cihaz (genellikle bir sensör, ekran veya bellek yongası) master’dan talimat alır. SPI’nin en basit konfigürasyonu tek ana, tek bağımlı sistemdir, ancak bir ana birden fazla bağımlıyı kontrol edebilir (aşağıda daha fazlası anlatılmaktadır).
SPI Haberleşme Pinleri
- MOSI (Master Output/Slave Input): Master’ın slave’e veri gönderdiği hat.
- MISO (Master Input/Slave Output): Slave’in master’a veri gönderdiği hat.
- SCLK (Saat): Saat sinyali için gerekli hat.
- SS/CS (Slave Select/Chip Select): Master’ın hangi slave’e veri göndereceğini seçtiği hat.
SPI Haberleşme Özellikleri
Kullanılan Kablo Sayısı | 4 |
Maksimum Hız | 10 Mbps kadar |
Senkron veya Asenkron? | Senkron |
Seri veya Parelel? | Seri |
Master Cihaz Sayısı? | 1 |
Slave Cihaz Sayısı? | Teorik olarak sınırsız |
Not: Uygulamada, köle sayısı sistemin yük kapasitansı ile sınırlıdır, bu da master’ın voltaj seviyeleri arasında doğru şekilde geçiş yapma yeteneğini azaltır.
SPI Haberleşme Nasıl Gerçekleşir?
Saat(The Clock)
Saat sinyali, master’dan veri bitlerinin çıkışını, slave tarafından bitlerin örneklenmesine 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. Master, saat sinyalini yapılandırdığı ve ürettiği için SPI iletişimi her zaman master tarafından başlatılır.
Cihazların bir saat sinyali paylaştığı herhangi bir iletişim protokolü, senkron olarak bilinir. SPI senkron bir iletişim protokolüdür. Saat sinyali kullanmayan asenkron yöntemler de vardır. Örneğin, UART iletişiminde, her iki taraf da veri iletiminin hızını ve zamanlamasını belirleyen önceden yapılandırılmış bir baud hızına ayarlanmıştır.
SPI’deki saat sinyali, saat polaritesi ve saat fazı özellikleri kullanılarak değiştirilebilir. Bu iki özellik, bitlerin ne zaman çıkarılacağını ve ne zaman örnekleneceğini belirlemek için birlikte çalışır. Saat polaritesi, bitlerin saat döngüsünün yükselen veya düşen kenarında çıkış ve örneklenmesine izin vermek için master tarafından ayarlanabilir. Saat fazı, çıkış ve örneklemenin saat döngüsünün ya birinci kenarında ya da ikinci kenarında meydana gelmesi için, yükselen ya da düşen olmasına bakılmaksızın ayarlanabilir.
Köle Seçimi(Slave Select)
Master, slave’in CS/SS hattını düşük voltaj seviyesine ayarlayarak hangi slave ile konuşmak istediğini seçebilir. Boşta, iletim yapmayan durumda, bağımlı seçim hattı yüksek voltaj seviyesinde tutulur. Master üzerinde birden fazla CS/SS pini mevcut olabilir, bu da birden fazla slave’in paralel olarak bağlanmasına izin verir. Yalnızca bir CS/SS pini mevcutsa, birden fazla bağımlı birim, zincirleme bağlantı yoluyla master’a bağlanabilir.
Çoklu Köleler(Multiple Slaves)
SPI, tek bir ana ve tek bir bağımlı ile çalışacak şekilde ayarlanabilir ve tek bir ana tarafından kontrol edilen birden fazla bağımlı ile kurulabilir. Master’a birden fazla slave bağlamanın iki yolu vardır. Master birden fazla bağımlı seçme pimine sahipse, bağımlı birimler şu şekilde paralel olarak bağlanabilir:
Yalnızca bir bağımlı seçim pimi mevcutsa, bağımlı birimler şu şekilde zincirleme bağlanabilir:
MOSI ve MISO
Master, MOSI hattı üzerinden seri olarak veriyi bit bit köleye gönderir. Slave, master’dan gönderilen verileri MOSI pininden alır. Master’dan slave’e gönderilen veriler genellikle en önemli bit önce gönderilir.
Köle ayrıca seri olarak MISO hattı üzerinden master’a veri gönderebilir. Slave’den master’a gönderilen veriler genellikle en az anlamlı bit ilk önce gönderilir.
SPI Veri İletişim Adımları
- Master saat sinyalini verir:
- Master, SS/CS pinini, köleyi etkinleştiren bir düşük voltaj durumuna geçirir:
- Master, verileri MOSI hattı boyunca her seferinde bir bit olarak slave’e gönderir. Köle, bitleri aldıkça okur:
- Bir yanıt gerekiyorsa, bağımlı, MISO hattı boyunca her seferinde bir bit veriyi master’a döndürür. Master, bitleri aldıkça okur:
SPI Haberleşmenin Avantajları ve Dezavantajları
SPI kullanmanın bazı avantajları ve dezavantajları vardır ve farklı iletişim protokolleri arasında seçim yapma şansı verilmişse, projenizin gereksinimlerine göre SPI’yi ne zaman kullanacağınızı bilmelisiniz:
Avantajlar
- Başlatma ve durdurma biti yok, böylece veriler kesintisiz olarak aktarılabilir.
- I2C gibi karmaşık bağımlı adresleme sistemi yok.
- I2C’den daha yüksek veri aktarım hızı (neredeyse iki kat daha hızlı).
- Ayrı MISO ve MOSI hatları, böylece veri 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 yok (I2C de vardır).
- UART’taki eşlik biti gibi hata denetimi biçimi yok.
- Yalnızca tek bir master’a izin verir.
UART haberleşme protokolünü öğrenmek isterseniz aşağıdaki linkten yazımıza ulaşabilirsiniz.