Haberler

UART vs I2C vs SPI – İletişim Protokolleri ve Kullanımları

İletişim protokollerinden bahsederken, UART, SPI ve I2C, mikrodenetleyici geliştirmede yaygın olarak kullanılan donanım arayüzleridir.

Bu makalede, çeşitli arayüzleri: UART, SPI ve I2C’yi ve aralarındaki farkları karşılaştıracağız. Protokollerini, her bir arayüzün avantajlarını ve dezavantajlarını vb. çeşitli faktörlerle karşılaştıracağız ve bu arayüzlerin mikrodenetleyicilerde nasıl kullanıldığına dair bazı örnekler sunacağız.


UART Arayüzü

UART Nedir?

  • Universal Asynchronous Reception and Transmission (UART) kısaltmasıdır.
  • Ana cihazın yardımcı cihazla iletişim kurmasını sağlayan basit bir seri iletişim protokolüdür.
  • UART, iki yönlü, asenkron ve seri veri iletimini destekler.
  • İletim (TX) ve alım (RX) için iki veri hattına sahiptir; bu hatlar dijital pin 0 ve dijital pin 1 üzerinden iletişim kurmak için kullanılır.
  • TX ve RX, iki cihaz arasında bağlantılıdır. (ör. USB ve bilgisayar)
  • UART, bilgisayarlar ve harici seri cihazlar arasındaki senkronizasyon yönetimi sorunlarını da ele alabilir.

Nasıl çalışır?

  • Cihazlar arasında 3 şekilde çalışabilir:
    • Simplex = verinin bir yönde iletimi
    • Yarım-dupleks = verinin her iki yönde iletimi ancak aynı anda değil
    • Tam-dupleks = verinin her iki yönde aynı anda iletimi
  • Bağlandığında, veri, ileten UART’ın TX’inden alıcı UART’ın RX’ine akar.
  • UART, asenkron bir seri iletim protokolü olduğu için = Saat yoktur.
  • İletim yapan UART, ana cihazdan (ör. CPU) gelen paralel veriyi seri forma dönüştürür ve alıcı UART’a seri olarak iletir. Daha sonra alıcı cihaz için seri veriyi tekrar paralel veriye dönüştürür.
Ref: UART iletişiminin temelleri.
  • UART saat olmadığı için, UART, bir mesajın başlangıcını ve sonunu temsil etmek için iletilen başlangıç ve dur bitleri ekler.
  • Bu, alıcı UART’ın bitleri okumaya ne zaman başlayıp ne zaman duracağını bilmesine yardımcı olur. Alıcı UART, bir başlangıç bitini algıladığında, belirlenen BAUD hızında bitleri okumaya başlar.
  • UART veri iletim hızı BAUD Hızı olarak adlandırılır ve varsayılan olarak 115,200 olarak ayarlanmıştır (BAUD hızı, sembol iletim hızına dayanır, ancak bit hızına benzer).
  • Her iki UART da yaklaşık aynı baud hızında çalışmalıdır. BAUD hızı farkı %10’dan fazla olursa, bitlerin zamanlaması bozulabilir ve veriler kullanılamaz hale gelebilir. Kullanıcı, UART’ların aynı veri paketinden iletim ve alım yapacak şekilde yapılandırıldığından emin olmalıdır.

UART Çalışma Protokolü

  • Veri ileten bir UART, önce başka bir bileşen (ör. CPU) tarafından gönderilen bir veri yolundan veri alır.
  • Veri yolundan veriyi aldıktan sonra, veri paketini oluşturmak için bir başlangıç biti, bir parite biti ve bir dur biti ekler.
  • Veri paketi daha sonra TX pininde iletilir; alıcı UART, RX pininde veri paketini okur. Veri, ileten UART’ta veri kalmayana kadar gönderilir.

Veri İletimi ve Alımı

  • Veri, iletim FIFO’su tarafından iletilmeye başlandığında, FIFO ‘BUSY’ bayrağı etkinleşir ve işlem süresince aktif kalır.
    • FIFO = İlk giren, ilk çıkar. Her bir baytın sırayla alıcı UART’a iletilmesini zorlayan bir UART tamponudur.
  • ‘BUSY’ biti, veri iletimi tamamlandığında, FIFO boşaldığında ve dur biti dahil her bit iletildiğinde yalnızca inaktif olacaktır.
  • UART alıcısı boş olduğunda ve başlangıç bitinden sonra veri girişi düşükse, alım sayacı çalışmaya başlayacak ve BAUD16’nın 8. döngüsünde veri almayı bekleyecektir.
  • Eğer RX, başlangıç biti geçerli olduğu sürece BAUD16’nın 8. döngüsünde hala düşükse, yanlış başlangıç biti olarak işlenecek ve dolayısıyla göz ardı edilecektir.
  • Eğer başlangıç biti geçerliyse, veri bitleri, veri karakterinin uzunluğuna göre BAUD16’nın her 16. döngüsünde örneklenir. Eğer parite modu etkinse, parite biti de algılanır.
  • Eğer RX yüksekse, geçerli bir dur biti kabul edilecektir. Aksi takdirde, bir çerçeve hatası meydana gelecektir.
  • Tam bir veri paketi alındığında, veri alıcı FIFO’sunda saklanır.

Kesme Kontrolü

  • Kesmelerin amacı, bir tamponun içeriğini otomatik olarak göndermektir.
  • Kullanıcı, aşağıdaki durumlarda kesmeleri kullanabilir:
    • FIFO Taşma Hatası
    • Hat kesilme hatası (RX sinyali 0’da kalır, kontrol ve dur biti dahil.)
    • Parite hatası
    • Çerçeve hatası (Dur biti 1 değil)
    • Alım zaman aşımı (alım FIFO’sunda veri var ama dolu değil ve sonraki veri iletilmiyor)
    • İletim
    • Alım

FIFO İşlemi

  • Stellaris ARM CPU ailesinin UART modülü, biri iletim ve diğeri alım için iki 16 baytlık FIFO içerir.
  • Farklı derinliklerde kesmeleri tetiklemek için yapılandırılabilirler. Örneğin, 1/8, 1/4, 1/2, 3/4 ve 7/8 derinlikleri.
  • Eğer alım FIFO’su 1/4 derinlikte bir kesme tetiklerse, UART 4 veri aldığında bir alım kesmesi tetiklenir.

İletim FIFO’sunun çalışma süreci:

  1. Veri girildiği anda işlem başlatılır. İletim zaman alıcıdır, bu nedenle gönderilmesi gereken diğer veriler iletim FIFO’suna girmeye devam edebilir.
  2. İletim FIFO’su dolduğunda, kullanıcı beklemek zorunda kalacak veya verilerini kaybedecektir.
  3. İletim FIFO’su, iletim FIFO’su tamamen boşalana kadar verileri bit bit iletecektir. İletilen veriler temizlendikten sonra, iletim FIFO’suna ek bir yer eklenir.

Alım FIFO’sunun çalışma süreci:

  1. Donanım veriyi aldığında, bu veri alıcı FIFO’ya kaydedilecektir. Program, veriyi otomatik olarak alıcı FIFO’dan alacak ve silecektir, böylece alıcı FIFO’da yer açılacaktır. Eğer alıcı FIFO’daki veri silinmezse ve alıcı FIFO dolu olursa, veri kaybolacaktır.
  2. Verici alıcı FIFO’su, CPU’nun verimsiz olması ve UART vericisinin çok sık kesilmesi ile ilgili sorunu çözmek içindir. UART iletişimi kullanarak, kesme modu, anket yönteminden daha basit ve daha verimlidir. Verici alıcı FIFO’su olmadan, her veri bir kez kesilecek ve verimsiz hale gelecektir. Verici alıcı FIFO’su ile bir kesme üretebilir ve sürekli olarak veri iletebilir ve alabilir (14’e kadar), bu da iletim ve alım verimliliğini artırır.
  3. FIFO nedeniyle veri kaybı meydana gelmeyecektir çünkü gönderim ve alım sürecindeki herhangi bir sorunu önceden öngörmüştür. UART başlatıldığı sürece, kesme rutini her şeyi otomatik olarak yapacaktır.

Döngüsel Geri Bildirim

  • UART, TX’den gönderilen verilerin RX girişinden alınacağı bir iç döngüsel geri bildirim işlevine sahiptir.

Seri Kızılötesi Protokol

  • UART, bir IrDA Seri Kızılötesi (SIR) kodlayıcı/çözücü modülüne sahiptir. IrDA SIR modülü, asenkron bir UART veri akışı ile yarı çift yönlü bir seri SIR arayüzü arasında çeviri yapar.
  • UART’a dijital kodlu bir çıkış ve çözümlenmiş bir giriş sağlamak için kullanılır. UART sinyal pini, IrDA SIR fiziksel katman bağlantısı için bir kızılötesi verici alıcıya bağlanabilir.

UART Kullanmanın Avantajları

  • Çalıştırması basit, çevrimiçi birçok kaynağa sahip yaygın bir yöntem olduğu için iyi belgelenmiştir.
  • Saat sinyali gerekmez.
  • Hata kontrolü için parite biti bulunur.

UART Kullanmanın Dezavantajları

  • Veri çerçevesinin boyutu yalnızca 9 bit ile sınırlıdır.
  • Birden fazla ana sistem ve köle kullanılamaz.
  • Her UART’ın baud hızları, veri kaybını önlemek için birbirinin %10’u içinde olmalıdır.
  • Düşük veri iletim hızları.

UART hakkında daha fazla bilgi edinmenizi sağlayacak bir blogumuz var. İşte göz atmanız için bağlantı: UART İletişim Protokolü ve Nasıl Çalıştığı


Mikrodenetleyicilerde UART Örnekleri:

USB CP2102 Seri Dönüştürücü

  • Minimum bileşen ve PCB alanı kullanarak RS-232 tasarımlarını USB’ye güncellemek için basit bir çözüm sunan yüksek entegreli USB’den UART köprü denetleyicisi. UART arayüzüne sahip cihazlara USB bağlantısı sağlar.
    • Standart USB tip A erkek ve TTL 6 pinli konektör kullanır.
  • Bu USB CP2102 Seri Dönüştürücü, bir bilgisayardan yazılım güncellemelerini kabul etmek için Arduino/Seeeduino kartı için küçük bir adaptördür.

FT232r USB UART / USB’den UART 5V

  • Seeed, benzer bir ürün sunmaktadır: USB’den UART 5V.
  • Bu, USB’den seri tasarımları basitleştiren bir USB’den seri UART arayüzüdür.
  • Dış bileşen sayısını azaltırken, toplam USB bant genişliğinin mümkün olduğunca azını kullanarak USB ana denetleyici ile verimli bir şekilde çalışır.
  • USB’den UART 5V, USB otobüs dönüştürücü çipi olan CH340’a dayanmaktadır ve USB’yi seri arayüze dönüştürebilir.
    • Bu USB, IrDA kızılötesine veya USB’yi yazıcı arayüzüne dönüştürebilir ve ayrıca kod yüklemek veya MCU’larla iletişim kurmak için de kullanılabilir.

UART Seeeduino V4.2

  • Tüm Arduino kartları, USB üzerinden bilgisayarla iletişim kuran dijital pinler 0 (RX) ve 1 (TX) üzerinde iletişim kuran en az bir seri porta (UART) sahiptir.
  • Bu, ATmga328P MCU’ya dayanan Arduino uyumlu bir karttır. UART’tan USB’ye dönüştürücü olarak ATMEGA16U2 ile, kart temelde bir FTDI çipi gibi çalışabilir ve bir mikro-USB kablosu ile programlanabilir.

Base Shield V2

  • Arduino Uno, şimdiye kadar en popüler Arduino kartıdır, ancak projeniz birçok sensör veya LED gerektiriyorsa ve jumper kablolarınız dağınık olduğunda bazen sinir bozucu olabilir.
  • Bu ürünün amacı, breadboard ve jumper kablolarından kurtulmanıza yardımcı olmaktır. Ana kart üzerindeki zengin grove konektörleri ile, tüm grove modüllerini Arduino Uno’ya çok rahat bir şekilde ekleyebilirsiniz!
  • Bu cihazlar UART ve I2C üzerinden bağlanabilir (bir sonraki iletişim çevresel birimi üzerinde duracağım!).

I2C Arayüzü

I2C Nedir?

  • Entegre devreler arası (I2C) anlamına gelir.
  • UART’a benzer bir seri iletişim protokolüdür. Ancak, PC-cihaz iletişimi için değil, modüller ve sensörlerle kullanılır.
  • Basit, çift yönlü iki telli senkron seri bir veri yoludur ve otobüse bağlı cihazlar arasında bilgi iletmek için yalnızca iki tel gerektirir.
  • Birçok farklı parçanın (örneğin, sensörler, pinler, genişletmeler ve sürücüler) birlikte çalışmasını gerektiren projeler için faydalıdır, çünkü ana kart ile birlikte 128 cihaza kadar bağlanabilirken net bir iletişim yolu sağlar!
  • Bu, I2C’nin bir adres sistemi ve paylaşılan bir otobüs kullanmasından kaynaklanmaktadır = birçok farklı cihaz aynı telleri kullanarak bağlanabilir ve tüm veriler tek bir tel üzerinden iletilir ve düşük pin sayısına sahiptir. Ancak, bu basitleştirilmiş kablolama için bir takas, SPI’den daha yavaş olmasıdır.
  • I2C’nin hızı ayrıca veri hızı, tel kalitesi ve dış gürültüye bağlıdır.
  • I2C protokolü, gömülü sistemlerde düşük hızlı cihazları (mikrodenetleyiciler, EEPROM’lar, A/D ve D/A dönüştürücüler, I/O arayüzleri ve diğer benzer çevresel birimleri) bağlamak için iki telli bir arayüz olarak da kullanılır.

Nasıl çalışır?

  • İki hattı vardır: SCL (seri saat hattı) ve SDA (seri veri hattı kabul portu)
  • SCL, iletimi senkronize etmek için saat hattıdır. SDA, veri bitlerinin gönderildiği veya alındığı veri hattıdır.
  • Master cihaz, veri otobüs transferini başlatır ve iletilen cihazı açmak için bir saat üretir ve herhangi bir adreslenmiş cihaz köle cihaz olarak kabul edilir.
  • Master ve köle cihazlar arasındaki ilişki, otobüste iletim ve alım sürekli değildir. Bu, veri transferinin yönüne bağlıdır.
  • Eğer master, köleye veri göndermek istiyorsa, master önce köleyi adreslemelidir.
  • Master daha sonra veri transferini sonlandırır. Eğer master, köleden veri almak istiyorsa, master yine önce köleyi adreslemelidir.
  • Host, köle tarafından gönderilen veriyi alır ve sonunda alıcı alma işlemini sonlandırır. Host ayrıca zamanlama saatini üretmekten ve veri transferini sonlandırmaktan sorumludur.
  • Ayrıca, bir pull-up direnç aracılığıyla güç kaynağını bağlamak gereklidir. Otobüs boşta olduğunda, her iki hat da yüksek güç seviyesinde çalışır.
  • Hat üzerindeki kapasitans, otobüs iletim hızını etkiler. Otobüsteki akım gücü düşük olduğundan, kapasitans çok büyük olduğunda iletim hataları oluşabilir. Bu nedenle, yük kapasitesi 400pF olmalıdır, böylece otobüsün izin verilen uzunluğu ve bağlı cihaz sayısı tahmin edilebilir.

I2C Çalışma Protokolü

Veri İletim Yöntemi

  • Master, SDA hattını yüksek voltaj seviyesinden düşük voltaj seviyesine geçerek ve SCL hattını yüksekten düşüğe geçirerek her bağlı köleye iletim sinyalini gönderir.
  • Master, her köleye 7 veya 10 bitlik köle adresini ve iletişim kurmak istediği köleye bir okuma/yazma bitini gönderir.
  • Köle, adresi kendi adresiyle karşılaştırır. Eğer adres eşleşirse, köle SDA hattını bir bit için düşük konuma geçiren bir ACK biti döndürür. Eğer adres kendi adresiyle eşleşmezse, köle SDA hattını yüksek bırakır.
  • Master daha sonra veri çerçevesini gönderir veya alır. Her veri çerçevesi transfer edildikten sonra, alıcı cihaz başarılı iletimi onaylamak için gönderene başka bir ACK biti döndürür.
  • Veri iletimini durdurmak için, master SDA’yı yüksek konuma geçirmeden önce SCL’yi yüksek konuma geçirerek köleye bir durdurma sinyali gönderir.

Saat Senkronizasyonu

  • Tüm masterlar, I2C otobüsünde mesaj iletmek için SCL hattında kendi saatlerini üretir.
  • Veri, yalnızca saatin yüksek döneminde geçerlidir.
  • Saat senkronizasyonu, I2C arayüzünü SCL hattına bağlayarak gerçekleştirilir; burada anahtar yüksekten düşüğe geçer. Cihazın saati düşük konuma geçtiğinde, SCL hattını bu durumda tutar ve saatin yüksek seviyesine ulaşana kadar bu durumda kalır.
  • Eğer başka bir saat hala düşük dönemdeyse, düşükten yükseğe geçiş SCL hattının durumunu değiştirmez. SCL hattı, en uzun düşük döneme sahip cihaz tarafından her zaman düşük tutulur. Bu durumda, kısa ve düşük döneme sahip cihaz yüksek ve bekleme durumuna geçer.
  • Tüm ilgili cihazlar düşük dönemlerini tamamladığında, saat hattı yüksek konuma geçer.
  • Bundan sonra, cihaz saatinin durumu ile SCL hattının durumu arasında hiçbir fark yoktur ve tüm cihazlar yüksek dönemlerini saymaya başlar. İlk yüksek dönemini tamamlayan cihaz, SCL hattını tekrar düşük konuma çeker.
  • Senkronize SCL saatinin düşük dönemi, en uzun düşük saat dönemine sahip cihaz tarafından belirlenirken, yüksek dönem en kısa yüksek saat dönemine sahip cihaz tarafından belirlenir.

İletim Modları

Hızlı Mod:

  • Hızlı mod cihazları 400kbit/s hızında veri alabilir ve iletebilir. 400kbit/s iletimi senkronize olabilmeli ve SCL sinyalinin düşük dönemini uzatarak iletimi yavaşlatmalıdır.
  • Hızlı mod cihazları geriye dönük uyumludur ve 0’dan 100 kbit/s I2C otobüs sistemleriyle standart mod cihazlarıyla iletişim kurabilir. Ancak, standart mod cihazları yukarı uyumlu olmadığından, hızlı I2C otobüs sisteminde çalışamazlar. Hızlı mod I2C otobüs spesifikasyonu, standart mod ile karşılaştırıldığında aşağıdaki özelliklere sahiptir:
    • Maksimum bit hızı 400 kbit/s’ye çıkarılmıştır;
    • Seri veri (SDA) ve seri saat (SCL) sinyallerinin zamanlaması ayarlanmıştır.
    • Glitch’leri bastırma işlevine sahiptir ve SDA ile SCL girişleri Schmitt tetikleyicilere sahiptir.
    • Çıkış tamponu, SDA ve SCL sinyallerinin düşen kenarları için bir eğim kontrol işlevine sahiptir.
    • Hızlı mod cihazının güç kaynağı kapatıldığında, SDA ve SCL’nin I/O pinleri boşta bırakılmalı ve otobüsü engelleyemez.
    • Otobüse bağlı dış pull-up cihazı, hızlı mod I2C otobüsünün en kısa maksimum izin verilen yükselme süresine uyacak şekilde ayarlanmalıdır. 200pF maksimum yükü olan otobüsler için, her otobüsün pull-up cihazı bir direnç olabilir. 200pF ile 400pF arasında bir yükü olan bir otobüs için, pull-up cihazı bir akım kaynağı (maksimum 3mA) veya anahtarlamalı bir direnç devresi olabilir.

Yüksek Hız Modu:

  • Hs mod cihazları, bit hızlarını 3.4 Mbit/s’ye kadar iletebilir ve hızlı mod veya standart mod (F/S modu) cihazlarıyla tamamen geriye dönük uyumlu kalabilirler; bu cihazlar, hız karışık otobüs sisteminde çift yönlü iletişim kurabilirler.
  • Hs mod iletimi, F/S mod sisteminin aynı seri otobüs ilkesine ve veri formatına sahiptir; ancak, tahkimat ve saat senkronizasyonu gerçekleştirilmez.
  • Yüksek hızlı modda I2C otobüs spesifikasyonu aşağıdaki gibidir:
    • Yüksek hız (Hs) modunda, master cihazın yüksek hızlı (SDAH) sinyali için açık drenaj çıkış tamponu ve yüksek hızlı seri saat (SCLH) çıkışında açık drenaj pull-down ve akım kaynağı pull-up devresi vardır. Bu, SCLH sinyalinin yükselme süresini kısaltır ve her zaman yalnızca bir ana akım kaynağı aktiftir;
    • Birden fazla master sisteminin Hs modunda, tahkimat ve saat senkronizasyonu gerçekleştirilmez; bu, bit işleme yeteneğini hızlandırmak içindir. Tahkimat süreci genellikle F/S modunda ana kod iletildikten sonra sona erer.
    • Hs mod master cihazı, 1:2 oranında yüksek ve düşük seri saat sinyali üretir; bu, kurulum ve tutma süresi için zamanlama gereksinimlerini ortadan kaldırır.
    • Hs mod cihazı, yerleşik bir köprüye sahip olabilir. Hs mod iletimi sırasında, Hs mod cihazının SDAH ve SCLH hatları, SDA ve SCL hatlarından ayrılır; bu, SDAH ve SCLH hatlarının kapasitif yükünü azaltır ve yükselme ve düşmeyi hızlandırır.
    • Hs mod köle cihazları ile F/S köle cihazları arasındaki fark, çalışma hızlarıdır.
    • Hs mod cihazı, glitch’leri bastırabilir ve SDAH ile SCLH çıkışları da bir Schmitt tetikleyici içerir;
    • Hs mod cihazının çıkış tamponu, SDAH ve SCLH sinyallerinin düşen kenarları için bir eğim kontrol işlevine sahiptir.

I2C Kullanmanın Avantajları

  • Otobüste birçok cihaz olmasına rağmen düşük pin/sinyal sayısına sahiptir.
  • Esnektir, çünkü çoklu master ve çoklu köle iletişimini destekler.
  • Basittir, çünkü birden fazla cihaz arasında iletişim kurmak için yalnızca 2 çift yönlü tel kullanır.
  • Uyarlanabilir, çünkü çeşitli köle cihazlarının ihtiyaçlarına uyum sağlayabilir.
  • Birden fazla master’ı destekler.

I2C Kullanmanın Dezavantajları

  • SPI tarafından kullanılan push-pull dirençler yerine pull-up dirençleri gerektirdiğinden daha yavaş bir hız sunar. Ayrıca açık drenaj tasarımı vardır = sınırlı hız.
  • Dirençler değerli PCB alanını tükettiğinden daha fazla alan gerektirir.
  • Cihaz sayısı arttıkça karmaşık hale gelebilir.

İşte I2C iletişim protokolü hakkında daha fazla bilgi edinmek için göz atabileceğiniz blog ve I2C iletişim protokolünü kullanabilen bazı ürünler.

I2C Blog Bağlantısı: I2C İletişim Protokolü ve Nasıl Çalışır


Mikrodenetleyiclerde I2C Örnekleri

Grove – I2C Hub (6 Port)

  • I2C, çok popüler bir iletişim protokolüdür. Grove sisteminde, 80’den fazla sensör iletişim için I2C kullanmaktadır, bunlardan 19’u çevresel izleme ile ilgilidir.
  • Günümüzde daha fazla mikrodenetleyici 3.3V iletişim seviyelerini kullanmaktadır, ancak geleneksel Arduino Uno hala 5V kullanmaktadır, bu da birçok modülün, özellikle sensör modüllerinin, kullanıldığında seviye ayarlaması gerektirmesine neden olmaktadır.
  • Aslında bu alanda çalıştık ve şimdi çoğu Grove sensör modülü seviye kaydırma işlevine sahiptir, bu nedenle kullanıcıların 3.3V veya 5V mikrodenetleyici kullanma konusunda düşünmelerine gerek yoktur. Bu, Grove’un mottosuyla uyumludur; takın ve kullanın, bu kadar basit. Daha ayrıntılı bir sensör uyumluluğu incelemesi için Grove Seçim Kılavuzu‘nu görüntüleyebilirsiniz.

Raspberry Pi için 4 Kanal 16 Bit ADC (ADS1115)

  • Bu ürün Seeed tarafından Raspberry Pi ile tamamen uyumludur.
  • Analogdan dijitale çevirici olmayan bir Raspberry Pi için veya daha doğru bir ADC’ye ihtiyaç duyulduğunda kullanılır.
  • Raspberry Pi için I2C üzerinden 4-kanal 16-bit ADC (ADS1115) sağlıyoruz, bu Texas Instrument ADS1115’e dayanan 4-kanal ADC’dir ve yüksek hassasiyetli, düşük güç tüketimli, 16-bit ADC çipidir.

I2C Arduino

  • I2C iletişimi iki Arduino kartı arasında da kullanılabilir.
  • Sadece kısa mesafe iletişimi için kullanılır ve senkronize bir saat darbesi kullanır.
  • Temelde, sensörler veya bilgi göndermesi gereken diğer cihazlarla iletişim kurmak için kullanılır.

I2C Sürücü/Adaptör – I2C Cihazlarını Kolayca Sürücü

  • I²C Sürücü, I²C cihazlarını kontrol etmek için kullanımı kolay, açık kaynaklı bir araçtır. Windows, Mac ve Linux ile çalışır ve tüm I²C etkinliğini gösteren yerleşik bir renkli ekranı vardır.
  • Yerleşik ekran, tüm aktif ağ düğümlerinin bir ısı haritasını gösterir, böylece birden fazla cihazın bulunduğu bir I²C ağında hangilerinin en aktif olduğunu gözlemleyebilirsiniz.
  • Bir I²C Sürücü mevcut bir I²C hattına bağlandığında, trafiği “dinler” ve ekranda görüntüler.
  • Bu, I²C sorunlarını hata ayıklamak için mükemmel bir araçtır çünkü konuşmayı olduğu gibi dinleyebilirsiniz.

MCP 23017

Ref: Electronicwings, MCP23017 16-bit GPIO Genişletici.
  • 16-bit, genel amaçlı paralel I/O genişletici I2C hattı için. MCP23S17 ile benzer, ancak seri arayüz (I2C vs SPI) farklıdır.
  • Kullanıcıya standart mikrodenetleyicilere kıyasla neredeyse aynı portları veren bir port genişletici.

PCF 8574

Ref: PCF8574 Seri Arayüz Modül Kartı LCD Dönüştürücü.
  • İki telli iki yönlü I2C hattı (seri saat (SCL), Seri Veri (SDA)) üzerinden genel amaçlı uzaktan I/O genişletme sağlar.
  • Seeed, bunu gelecekteki ürünlerinde kullanacak, dikkat edin!

Raspberry Pi için Grove Base Hat

  • Grove nedir?
    • Modüler, standartlaştırılmış bir konnektör prototipleme sistemidir. Grove, elektroniği bir yapı bloğu yaklaşımıyla bir araya getirir, bu da bağlantıyı, denemeyi ve inşa etmeyi kolaylaştırır ve öğrenme sistemini basitleştirir.
  • Bugün, grove serisi sensörler, aktüatörler ve ekranlar büyük bir aile haline gelmiştir ve bugün Raspberry Pi’yi tüm Grove Sistemine tanıtıyoruz.
  • Raspberry Pi için Grove Base Hat, tüm ihtiyaçlarınızı karşılamak için Dijital/Analog/I2C/PWM/UART portu sağlar.
  • Yerleşik MCU yardımıyla, Raspberry Pi için 12-bit 8 kanal ADC de mevcuttur. Şu anda 60’tan fazla grove, Raspberry Pi için Grove Base Hat’ı desteklemektedir.

SPI Arayüzü

SPI Nedir?

  • Seri Peripheral Interface (SPI) anlamına gelir.
  • I2C’ye benzer ve mikrodenetleyicilerin bağlanması için özel olarak tasarlanmış farklı bir seri iletişim protokolüdür.
  • Verilerin aynı anda gönderilip alınabildiği tam çift yönlü çalışır.
  • Daha hızlı veri iletim hızlarında çalışır = 8Mbit veya daha fazla.
  • Basit protokol nedeniyle genellikle I2C’den daha hızlıdır. Cihazlar arasında veri/saat hatları paylaşılsa bile, her cihazın benzersiz bir adres teline ihtiyacı olacaktır.
  • Hızın önemli olduğu yerlerde kullanılır. (örneğin, SD kartlar, ekran modülleri veya bilgi güncellemelerinin ve değişikliklerinin hızlı olduğu yerlerde, örneğin termometreler)

Nasıl çalışır?

  • İki şekilde iletişim kurar:
    1. Her cihazı bir Çip Seçim hattı ile seçerek. Her cihaz için ayrı bir Çip Seçim hattı gereklidir. Bu, RPi’lerin şu anda SPI kullanma şeklidir.
    2. Daisy chaining, her cihazın bir sonraki cihazın veri çıkışına veri girişine bağlandığı yerdir.
  • Bağlanabilecek SPI cihazlarının sayısında bir sınırlama yoktur. Ancak, çip seçme yöntemiyle ana cihazda mevcut olan donanım seçim hatlarının sayısı veya daisy-chaining yönteminde cihazlar arasında veri geçişinin karmaşıklığı nedeniyle pratik sınırlamalar vardır.
  • Nokta-nokta iletişimde, SPI arayüzü adresleme işlemleri gerektirmez ve tam çift yönlü iletişimdir, bu da basit ve verimlidir.

SPI Çalışma Protokolü

  • SPI, aşağıdaki 4 port üzerinden iletişim kurar:
    • MOSI – Ana Veri Çıkışı, Köle Veri Girişi
    • MISO – ana veri girişi, köle veri çıkışı
    • SCLK – ana cihaz tarafından üretilen saat sinyali, fPCLK/2’ye kadar, köle mod frekansı fCPU/2’ye kadar
    • NSS – Köle etkinleştirme sinyali, ana cihaz tarafından kontrol edilir, bazı entegre devreler CS (Çip seçimi) olarak etiketlenir.
  • Çoklu köle sisteminde, her kölenin ayrı bir etkinleştirme sinyaline ihtiyacı vardır, bu da I2C sistemine göre donanımda biraz daha karmaşıktır.
  • SPI arayüzü aslında iç donanımda iki basit kaydırma kaydedicisidir. İletilen veri 8 bittir. Ana cihaz tarafından üretilen köle etkinleştirme sinyali ve kaydırma darbesi altında bit bit iletilir. Yüksek bit önde, düşük bit arkadadır.
  • SPI arayüzü, CPU ile düşük hızlı çevresel cihazlar arasında senkronize seri veri iletimidir. Ana cihazın kaydırma darbesi altında, veri bit bit iletilir. Yüksek bit önde, düşük bit arkadadır. Bu, tam çift yönlü iletişimdir ve veri iletim hızı genel olarak I2C hattından daha hızlıdır ve birkaç Mbps hızlarına ulaşabilir.

SPI Kullanmanın Avantajları

  • Protokol basittir çünkü I2C gibi karmaşık bir köle adresleme sistemi yoktur.
  • UART ve I2C’ye kıyasla en hızlı protokoldür.
  • UART’tan farklı olarak başlangıç ve durdurma bitleri yoktur, bu da verilerin kesintisiz olarak iletilebileceği anlamına gelir.
  • Ayrı MISO ve MOSI hatları, verilerin aynı anda iletilebileceği ve alınabileceği anlamına gelir.

SPI Kullanmanın Dezavantajları

  • Daha fazla pin portu kaplanır, cihaz sayısında pratik bir sınır vardır.
  • Akış kontrolü belirtilmemiştir ve verilerin alınıp alınmadığını doğrulayan bir onay mekanizması yoktur, bu da I2C’den farklıdır.
  • Dört hat kullanır – MOSI, MISO, NCLK, NSS.
  • UART’taki hata kontrolü gibi bir hata kontrolü yoktur (parite biti kullanarak).
  • Sadece 1 ana cihaz vardır.

Elbette, SPI iletişim protokolü üzerine bir blog atlanamaz, çünkü I2C ve UART’a adanmış bloglar vardır. Bu blogu SPI – Seri Peripheral Arayüzüne Giriş üzerinden öğrenebilirsiniz.


Mikrodenetleyicilerde SPI Örnekleri:

SPI Seeeduino V4.2

  • SPI seri iletişim, bir Arduino’nun master, diğerinin ise slave olarak görev yaptığı iki Arduino arasında iletişim için kullanılabilir.
  • Kısa mesafelerde yüksek hızda iletişim sağlamak için kullanılır.
  • Bu, yukarıdaki UART örneğindeki Arduino v4.2 ile aynı üründür.

MCP 3008 / Grove I2C ADC

  • Seeed, aynı işlevlere sahip benzer bir ürün sunmaktadır: Grove I2C ADC ancak iletişim arayüzü I2C’dir.
  • 10 bit 8 kanallı analogdan dijitale çevirici (ADC)dir.
  • MCP 3008 için, Raspberry Pi’ye SPI seri bağlantısı kullanarak bağlanır. MCP 3008’e bağlanmak için donanım SPI veri yolunu veya herhangi dört GPIO pinini ve yazılım SPI’yi kullanarak yapılır.

MCP2551 ve MCP2515 Tabanlı Seri CAN-BUS Modülü

  • Bu Seeed ürünü: Seri CAN Bus modülü, Arduino’nuzun CAN bus yeteneklerine sahip olmasını sağlar ve aracınızı hacklemenize olanak tanır. CAN bus’a mesaj okumak ve yazmak için izin verir.
  • CAN bus, bir araç içindeki çeşitli mikrodenetleyicilerin ve sensörlerin birbirleriyle iletişim kurmasını sağlayan bir mesajlaşma protokol sistemidir. CAN, uzun mesafe, orta iletişim hızı ve yüksek güvenilirlik sağlar.
  • Bu Seri CAN Bus modülü, ayrıca, yerleşik Grove konektörü aracılığıyla Arduino’nuzla da bağlanabilir.
  • Mikrodenetleyicilerle SPI aracılığıyla arayüz sağlar.

ENC28J60 OVERLAYS HAT for Raspberry pi

  • Pi zero ENC28J60, Pi zero için çok kolay bir şekilde monte edilebilen ve yapılandırılabilen basit bir Ağ Adaptörü modülüdür.
  • Raspberry Pi zero’nuzun ağa sorunsuz bir şekilde erişmesini sağlar ve sistem güncellemeleri ve yazılım kurulum işlemlerini kolayca yapmanıza olanak tanır.
  • Microchip’in ENC28J60, SPI arayüzüne sahip 28 pinli, 10BASE-T bağımsız Ethernet denetleyicisidir.
  • SPI arayüzü, ana denetleyici ile ENC28J60 arasında bir iletişim kanalı olarak hizmet eder.

SPI Sürücü/Adaptör – SPI Cihazlarını Kolayca Sürücü

  • Bu, I2C Sürücü/Adaptör – I2C Cihazlarını Kolayca Sürücü ile benzer bir üründür ancak SPI için. SPI cihazlarını kontrol etmek için kullanımı kolay bir araçtır. Windows, Mac ve Linux ile çalışır ve tüm SPI trafiğinin canlı mantık analizörü görüntüsünü gösteren yerleşik bir renkli ekrana sahiptir.
  • Benzer şekilde, PC ile iletişim kurmak için standart FTDI USB seri çipini kullanır, bu nedenle özel sürücülerin yüklenmesi gerekmez. Kart, voltaj ve akım izleme ile 3.3 ve 5 V beslemeleri içerir.
  • SPI flash oldukça yaygındır ve bir test klibi kullanarak, SPIDriver, devre içinde SPI flash okumayı ve yazmayı kolaylaştırır. Bir Atmel’in flash’ını okumak veya yazmak için kısa bir betik yeterlidir ve SPI LED şeritleri de SPI Sürücüye kolayca bağlanabilir, ayrıca doğrudan kontrol edilebilir, bu da onları çok daha eğlenceli hale getirir!
  • Bu senaryoda SPI kullanmak, uzun şeritleri sorunsuz bir şekilde animasyon yapmak ve POV efektleri elde etmek için yeterince hızlıdır. Kısa şeritler de SPIDriver’ın güçlü 470 mA yerleşik beslemesi ile doğrudan beslenebilir.

Peki, bu iletişim arayüzlerinden hangisi “en iyi”? UART, SPI veya I2C?

Ne yazık ki, “en iyi” iletişim arayüzü yoktur. Her iletişim arayüzünün kendi avantajları ve dezavantajları vardır.

Bu nedenle, bir kullanıcı projesine en uygun iletişim arayüzünü seçmelidir. Örneğin, en hızlı iletişim arayüzüne ihtiyacınız varsa, SPI ideal seçim olacaktır. Diğer yandan, bir kullanıcı birçok cihazı bağlamak istiyorsa ve bunun çok karmaşık olmasını istemiyorsa, I2C ideal seçimdir çünkü 127 cihaza kadar bağlanabilir ve yönetimi basittir.


Özet

Özetle, çeşitli iletişim protokollerinin avantajlarını/dezavantajlarını ve işlevlerini derledim ve karşılaştırdım, böylece projeniz için en iyi olanı kolayca seçebilirsiniz. Kullandığınız cihazın, aksesuarın, modülün veya sensörün de iletişim protokolünü desteklemesi gerektiğini unutmayın.

Protokol UART I2C SPI
Karmaşıklık Basit Birden fazla cihazı zincirleme kolay Cihaz arttıkça karmaşık
Hız En yavaş UART’tan daha hızlı En hızlı
Cihaz sayısı En fazla 2 cihaz En fazla 127, ama karmaşık hale gelir Birçok, ama karmaşık hale gelir
Kablo sayısı 1 2 4
Duplex Tam Duplex Yarım Duplex Tam Duplex
Master ve slave sayısı Tekil ile Tekil Birden fazla slave ve master 1 master, birden fazla slave


Özel teklif!

Seeed, her müşteri için bir ücretsiz breadboard sunuyor, bir adet ücretsiz breadboard almak için BREADBOARD kodunu kullanın (U.P. $4.90) Seeed’de!

Leave a Reply

Your email address will not be published. Required fields are marked *