Şimdiye kadar, SPI iletişimi  ve UART iletişiminin temellerinden bahsettik  , şimdi bu serinin son protokolüne, Inter-Integrated Circuit veya I2C'ye geçelim.


OLED ekranlar , barometrik basınç sensörleri veya jiroskop / ivmeölçer  modülleri kullanan projeler inşa ederseniz, muhtemelen kendinizi I2C kullanırken bulacaksınız  .

I2C İLETİŞİMİNE GİRİŞ

I2C, SPI ve UART'ların en iyi özelliklerini birleştirir. I2C ile birden fazla slave'i tek bir master'a (SPI gibi) bağlayabilir ve tekli veya çoklu slave'leri kontrol eden birden fazla master'a sahip olabilirsiniz. Bu, verileri tek bir hafıza kartına kaydeden veya metni tek bir LCD'de görüntüleyen birden fazla mikrodenetleyiciye sahip olmak istediğinizde gerçekten kullanışlıdır.

UART iletişimi gibi, I2C de cihazlar arasında veri iletimi için yalnızca iki kablo kullanır:

I2C'ye Giriş - Single Master Single Slave

SDA (Seri Veri)  - Master ve slave için veri gönderip almak için hat.

SCL (Seri Saat)  - Saat sinyalini taşıyan hat.

I2C bir seri iletişim protokolüdür, bu nedenle veriler tek bir kablo (SDA hattı) boyunca birer birer aktarılır.

SPI gibi, I2C de eşzamanlıdır, bu nedenle bitlerin çıkışı, ana ve bağımlı arasında paylaşılan bir saat sinyali ile bitlerin örneklemesine senkronize edilir. Saat sinyali her zaman usta tarafından kontrol edilir.

I2C İletişim Protokolünün Temelleri - Özellikler Tablosu


I2C NASIL ÇALIŞIR?

I2C ile veriler mesajlarla aktarılır  Mesajlar,  veri çerçevelerine bölünür Her mesaj, ikincil birimin ikili adresini içeren bir adres çerçevesine ve iletilen verileri içeren bir veya daha fazla veri çerçevesine sahiptir. Mesaj ayrıca her veri çerçevesi arasında başlatma ve durdurma koşulları, okuma / yazma bitleri ve ACK / NACK bitlerini de içerir:

I2C'ye Giriş - Mesaj, Çerçeve ve Bit

Başlangıç ​​Koşulu:  SDA hattı  , SCL hattı yüksekten düşüğe geçmeden önce yüksek voltaj seviyesinden düşük voltaj seviyesine  geçer.

Durma Koşulu:  SDA hattı  , SCL hattı düşükten yükseğe geçtikten sonra düşük voltaj seviyesinden yüksek voltaj seviyesine  geçer.

Adres Çerçevesi:  Master onunla konuşmak istediğinde slave'i tanımlayan, her slave için benzersiz olan 7 veya 10 bitlik bir sekans.

Okuma / Yazma Biti:  Ana birimin bağımlı üniteye veri gönderip (düşük gerilim seviyesi) veya ondan veri talep edip etmediğini (yüksek gerilim seviyesi) belirten tek bit.

ACK / NACK Bit:  Bir mesajdaki her çerçevenin ardından bir alındı ​​/ onay yok biti gelir. Bir adres çerçevesi veya veri çerçevesi başarıyla alınmışsa, alıcı cihazdan gönderene bir ACK biti döndürülür.

ADRESLEME

I2C, SPI gibi köle seçim hatlarına sahip değildir, bu nedenle kölenin başka bir köle yerine verinin kendisine gönderildiğini bilmesini sağlamak için başka bir yola ihtiyaç duyar. Bunu  adresleyerek yapar . Adres çerçevesi her zaman yeni bir mesajda başlangıç ​​bitinden sonraki ilk çerçevedir.

Master, iletişim kurmak istediği slave'in adresini kendisine bağlı her slave'e gönderir. Her bir bağımlı birim daha sonra ana bilgisayardan gönderilen adresi kendi adresiyle karşılaştırır. Adres eşleşirse, ana bilgisayara düşük voltajlı bir ACK biti gönderir. Adres eşleşmezse, slave hiçbir şey yapmaz ve SDA hattı yüksek kalır.

OKUMA / YAZMA BİT

Adres çerçevesi, sonunda, ana birimin kendisine veri yazmak isteyip istemediğini veya ondan veri almak isteyip istemediğini köleye bildiren tek bir bit içerir. Master, slave'e veri göndermek isterse, okuma / yazma biti düşük voltaj seviyesidir. Master, slave'den veri talep ediyorsa, bit yüksek voltaj seviyesidir.

VERİ ÇERÇEVESİ

Master, ACK bitini slave'den algıladıktan sonra, ilk veri çerçevesi gönderilmeye hazırdır.

Veri çerçevesi her zaman 8 bit uzunluğundadır ve ilk önce en önemli bit ile gönderilir. Her veri çerçevesini, çerçevenin başarıyla alındığını doğrulamak için hemen bir ACK / NACK biti takip eder. ACK biti, bir sonraki veri çerçevesinin gönderilebilmesi için ana veya ikincil (veriyi kimin gönderdiğine bağlı olarak) tarafından alınmalıdır.

Tüm veri çerçeveleri gönderildikten sonra, master, aktarımı durdurmak için slave'e bir durdurma koşulu gönderebilir. Durdurma koşulu, SCL hattı yüksek kalırken, SCL hattında düşükten yükseğe geçişten sonra SDA hattında düşükten yükseğe voltaj geçişidir.

I2C VERİ İLETİMİNİN ADIMLARI

1. Master  , SCL hattını yüksekten alta geçirmeden önce SDA hattını yüksek voltaj seviyesinden düşük voltaj seviyesine değiştirerek her bağlı slave'e başlatma koşulunu gönderir  :

I2C'ye Giriş - Veri İletim Şeması BAŞLANGIÇ DURUMU

2. Master, her bir slave'e iletişim kurmak istediği slave'in 7 veya 10 bit adresini okuma / yazma biti ile birlikte gönderir:

I2C'ye Giriş - Veri İletim Şeması ADRES ÇERÇEVESİ

3. Her bağımlı birim, ana birimden gönderilen adresi kendi adresiyle karşılaştırır. Adres eşleşirse, slave, SDA hattını bir bit için aşağı çekerek bir ACK biti döndürür. Master'dan gelen adres, slave'in kendi adresiyle eşleşmezse, slave, SDA hattını yüksek bırakır.

I2C'ye Giriş - Veri İletim Şeması ACK Bit Slave'den Master'a

4. Master, veri çerçevesini gönderir veya alır:

I2C'ye Giriş - Veri İletim Şeması Veri Çerçevesi

5. Her bir veri çerçevesi aktarıldıktan sonra, alıcı cihaz çerçevenin başarılı bir şekilde alındığını onaylamak için gönderene başka bir ACK biti gönderir:

I2C'ye Giriş - Veri İletim Şeması ACK Bit Slave'den Master'a

6. Veri aktarımını durdurmak için, ana birim, SDA'yı yüksek duruma getirmeden önce SCL'yi yüksek konuma getirerek ikincil cihaza bir durdurma koşulu gönderir:

I2C'ye Giriş - Veri İletim Şeması Durma Koşulu

ÇOKLU BAĞIMLI TEK MASTER

I2C adresleme kullandığından, birden fazla slave tek bir ana bilgisayardan kontrol edilebilir. 7 bit adres ile 128 (2 7 ) benzersiz adres mevcuttur. 10 bit adreslerin kullanılması yaygın değildir, ancak 1.024 (2 10 ) benzersiz adres sağlar. Birden fazla slave'i tek bir ana bilgisayara bağlamak için, SDA ve SCL hatlarını Vcc'ye bağlayan 4,7K Ohm çekme dirençleri ile bunları şu şekilde bağlayın:

I2C'ye Giriş - Single Master Multiple Slave

BİRDEN FAZLA KÖLE İLE BİRDEN FAZLA USTA

Tek bir slave'e veya birden fazla slave'e birden fazla master bağlanabilir. Aynı sistemdeki birden fazla ana birimle ilgili sorun, iki ana birimin SDA hattı üzerinden aynı anda veri göndermeye veya almaya çalıştığı zaman ortaya çıkar. Bu sorunu çözmek için, her bir ana birimin bir mesaj iletmeden önce SDA hattının düşük mü yoksa yüksek mi olduğunu tespit etmesi gerekir. SDA hattı düşükse, bu, başka bir ana birimin veri yolunu kontrol ettiği ve ana birimin mesajı göndermek için beklemesi gerektiği anlamına gelir. SDA hattı yüksekse, mesajı iletmek güvenlidir. Birden fazla ana cihazı birden fazla slave'e bağlamak için, SDA ve SCL hatlarını Vcc'ye bağlayan 4.7K Ohm çekme dirençli aşağıdaki diyagramı kullanın:

I2C'ye Giriş - Çoklu Ana Aygıtlar Çoklu Bağımlılar 2

I2C'NİN AVANTAJLARI VE DEZAVANTAJLARI

I2C'yi diğer protokollere kıyasla karmaşık hale getirebilecek çok şey vardır, ancak belirli bir cihaza bağlanmak için I2C'yi kullanmak isteyip istemediğinizin bazı iyi nedenleri vardır:

AVANTAJLARI

  • Yalnızca iki kablo kullanır
  • Birden çok ana bilgisayarı ve birden çok köleyi destekler
  • ACK / NACK biti, her karenin başarıyla aktarıldığına dair onay verir
  • Donanım, UART'lardan daha az karmaşıktır
  • İyi bilinen ve yaygın olarak kullanılan protokol

DEZAVANTAJLARI

  • SPI'dan daha yavaş veri aktarım hızı
  • Veri çerçevesinin boyutu 8 bit ile sınırlıdır
  • SPI'dan daha karmaşık donanımların uygulanması gerekir

Okuduğunuz için teşekkürler! Umarım elektronik iletişim protokolleri hakkındaki bu makale ile bazı temel bilgileri öğrenebilmişsinizdir.

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.