I²C (Karta Entegre Devre), 1982’de Philips Semiconductors (şimdiki adıyla NXP) tarafından geliştirilen seri, çok ana birimli (multi-master), çok bağımlı birimli (multi-slave), paket anahtarlamalı (packet-switched), tek taraflı (single-ended) ve iki telli bir haberleşme protokolüdür. Ayrıca IIC olarak da bilinir. I²C, OSI modelinin hem veri bağlantı katmanında hem de fiziksel katmanında çalışır ve entegre devreler arasında kart içi haberleşme için standart bir yöntem sunar. I²C haberleşme protokolü, aşağıdaki fiziksel katman özelliklerine sahiptir:
Çalışma Gerilimi Aralıkları: 1.8V ila 5.5V
Adresleme Alanı: 7 bit veya 10 bit
Maksimum Veri Yolu Uzunluğu: Genellikle özel kurulumlarla 2-3 metre
I²C’yi, bir öğretmen ve öğrencileri arasındaki iletişim gibi düşünebilirsiniz:
Öğretmen (Ana Birim – Master): İletişimi başlatan kişidir. Kimin konuşacağına, ne zaman konuşacağına o karar verir. Soru sorar veya bilgi verir.
Öğrenciler (Bağımlı Birim – Slave): Öğretmenin sözünü dinlerler. Öğretmen onlara seslenmedikçe (adreslerini çağırmadıkça) konuşmazlar. Sadece kendilerine sorulan soruya cevap verirler.
Haberleşme Nasıl İşler?
Herkesin Bir Adı Var (Adres): Sınıftaki her öğrencinin (cihazın) benzersiz bir adı (adresi) vardır. Öğretmen “Ayşe!” dediğinde, sadece Ayşe dinlemeye başlar, diğerleri bekler. (Örneğin, hava durumu sensörü, ekran vb.)
İletişim Adımları:
I2C Haberleşme Protokolünün Çalışması
Bu bölüm, I2C cihazlarının birbirleriyle paylaşılan iki hat (SDA ve SCL) üzerinden nasıl düzenli bir şekilde anlaştığını anlatır. İletişim, adım adım ve belirli kurallara göre ilerler.
1. Efendi-Köle (Master-Slave) İlişkisi
Bu, I2C’nin temel yönetim yapısıdır. Tıpkı bir sınıfın öğretmeni (Master) ve öğrencileri (Slave) gibi düşün:
Master (Efendi): Haberleşmeyi başlatan taraftır. Saat sinyalini (SCL) üretir ve “kimin, ne zaman konuşacağına” o karar verir. Veriyi gönderen veya alan kişi olabilir ama iletişimi o yönetir. Tek efendili (single-master) sistemlerde sadece bir tane bulunur; çok efendili (multi-master) sistemlerde ise efendiler arasında çakışma olmaması için sıkı kurallar uygulanır.
Slave (Köle): Pasif taraftır. Kendi kendine konuşamaz, sadece Master’ın komutlarını dinler ve onlara yanıt verir. Master’ın çağırdığı adrese sahip Slave konuşur.
2. Başlangıç Koşulu (Start Condition)
Haberleşmenin “ilk kelimesi” gibidir. Master, tüm Slave’lere “dikkat edin, yeni bir haberleşme başlatıyorum!” der.
Saat hattı (SCL) yüksek voltajda (mantıksal 1) dururken, veri hattı (SDA) aniden yüksekten düşüğe (mantıksal 0) geçer. Bu benzersiz sinyal deseni, tüm Slave cihazları haberleşmeye hazırlar.
3. Adresleme Mekanizması
Master konuşmaya başlayınca, veri yolu üzerindeki tüm cihazlar dinlemeye geçer. Ama Master sadece biriyle konuşmak ister. Bunu, adres kullanarak yapar.
Önemli: Veri yolu üzerindeki her Slave cihazın benzersiz bir adresi vardır (bir öğrencinin ismi gibi).
Master, “Başlangıç Koşulu”nun hemen ardından konuşmak istediği Slave’in adresini gönderir.
Bu adres genellikle 7-bit uzunluğundadır (nadiren 10-bit). 7-bit’lik bir adresle Master, teorik olarak 127 farklı cihaza seslenebilir.
Tüm cihazlar adresi duyar, ancak sadece kendi adresiyle eşleşen Slave cihaz Master’a yanıt verir. Diğerleri beklemeye geçer.
4. Oku/Yaz (Read/Write) Biti
Master adresi gönderdikten hemen sonra, “ne yapmak istediğini” belirtmek için bir bit daha ekler.
0 (Write/Yaz): Master, “Sana veri göndermek istiyorum, dinle” der.
1 (Read/Oku): Master, “Senden veri almak istiyorum, bana gönder” der.
Bu bit sayesinde Slave, haberleşmedeki rolünün veri alıcısı mı yoksa veri göndericisi mi olduğunu anlar.
5. ACK/NACK (Onay/Onay Yok) Bitleri
“Sözlü onay” gibidir. Her 8-bitlik (1 byte) verinin ardından, alıcı taraf (Master veya Slave) veriyi başarıyla aldığını teyit etmek için bir onay biti gönderir.
ACK (Acknowledge – Onay): Alıcı, SDA hattını düşük seviyeye (0) çekerek “Veriyi başarıyla aldım, devam et” mesajı verir.
NACK (Not Acknowledge – Onay Yok): Alıcı, SDA hattını yüksek seviyede (1) bırakır. Bu şunları ifade edebilir:
Söz konusu adrese sahip bir cihaz yok.
Cihaz meşgul.
Cihaz veriyi anlamadı.
Okuma işleminin sonunda Master, Slave’e “tamam, daha fazla veri istemiyorum” demek için NACK gönderir.
Bu bitler, haberleşme sırasında sağlam bir hata kontrolü sağlar.
6. Veri Aktarımı (Data Transfer)
Adres, rol (Oku/Yaz) ve onay süreci bittikten sonra asıl bilgi aktarımı başlar.
I²C, elektronik dünyasındaki sensörleri ana işlemciye bağlamak için tercih edilen en popüler iletişim protokollerinden biridir. Bu sensörler dijital veri çıkışı verir ve I²C veri yolu üzerinden işlemci ile doğrudan konuşabilirler.
Kullanım Örnekleri:
Hava Kalitesi ve Gaz Sensörleri: Ev otomasyonu ve akıllı bina sistemlerinde kullanılan karbondioksit (CO2), partikül madde (PM2.5) ve uçucu organik bileşik (VOC) sensörleri.
Biyometrik Takip Cihazları: Akıllı saatler ve tıbbi giyilebilir cihazlarda bulunan optik nabız, kandaki oksijen seviyesi (SpO2) ve deri sıcaklığı sensörleri.
Optik ve Yakınlık Sensörleri: Akıllı telefonlarda ekranın kulağa yaklaştığında kapanmasını sağlayan yakınlık sensörleri ve ortam ışığına göre ekran parlaklığını ayarlayan ışık sensörleri.
Dijital Ses İşleme ve Amplifikatörler
Ses sistemlerinde dijital kontrol ve veri aktarımı için I²C yaygın olarak kullanılır. Bu, donanım ayarlarının yazılımsal olarak değiştirilmesine olanak tanır.
Kullanım Örnekleri:
Ses Kodekleri (Codecs): Akıllı telefonlar ve kulaklıklarda dijital ses sinyallerini analog sinyallere dönüştüren veya tam tersini yapan entegre devrelerin (DAC/ADC) örnekleme hızını ve giriş kaynaklarını kontrol etmek.
Dijital Amplifikatör Kontrolü: Hoparlör sistemlerindeki ses seviyesini (volume), ekolayzır (EQ) ayarlarını ve sessiz (mute) modunu yazılım üzerinden değiştirmek.
Akıllı Batarya ve Güç Yönetim Sistemleri
Batarya ile çalışan cihazlarda, pil durumunun hassas bir şekilde takibi kritik önem taşır. I²C, pil kontrol entegrelerinin ana işlemciye bilgi aktarmasını sağlar.
Kullanım Örnekleri:
Batarya Durumu İzleme (Fuel Gauges): Dizüstü bilgisayarlar, elektrikli araçlar ve drone’lardaki pil paketi sıcaklığını, kalan kapasite yüzdesini (SoC), voltajını ve anlık akım çekişini ölçüp bildirmek.
Güç Yönetimi Entegreleri (PMIC): Sistem işlemcisinin farklı bölümlerine giden besleme voltajlarını dinamik olarak ayarlamak ve cihazın uyku/uyandırma modlarını yönetmek.
Küçük ve Düşük Güçlü Ekran Arabirimleri
Küçük boyutlu ekranlar, karmaşık veri bağlantıları yerine I²C gibi basit protokolleri tercih ederek devre tasarımını basitleştirir ve enerji tasarrufu sağlar.
Kullanım Örnekleri:
OLED Ekran Modülleri: 0.96 inç gibi küçük boyutlu OLED ekranların piksel verilerini aktarmak ve ekranın parlaklık, kontrast gibi ayarlarını kontrol etmek.
Dijital Alfanümerik Göstergeler: Ev aletlerinde (fırın, mikrodalga) veya laboratuvar cihazlarında zaman veya sıcaklık gösteren basit LCD veya segmentli ekranları sürmek.
Genişletilebilir Giriş/Çıkış Bağlantı Noktaları (I/O Expanders)
Bir işlemcinin sahip olduğu dijital giriş/çıkış pini sayısı yetersiz kaldığında, I²C kullanılarak yeni pinler eklenebilir.
Kullanım Örnekleri:
Endüstriyel Kontrol Panelleri: Çok sayıda buton, anahtar ve LED göstergesi bulunan bir kontrol panelini, işlemcinin sadece iki pinini kullanarak yönetmek.
Karmaşık Robotik Sistemler: Çok sayıda servo motorun veya step motor sürücüsünün etkinleştirme (enable) sinyallerini kontrol etmek.