Cihazların haberleşmesini sağlamak için geliştirilen çok farklı protokoller vardır. Mesela USB için geliştirilen protokol seri haberleşmede kullanılan en yeni ve en evrensel protokoldür.  I²C protokolü, senkron seri haberleşmede geliştirilen ilk protokollerdendir. Protokol dediğimiz şey verilerin gönderilip alınırken kullanılan kurallar bütünüdür. I²C  protokolü data transferini en azami hat sayısı ile gerçekleştirebilmek için geliştirilmiştir.   Philips, bu protokolü kendi ürettiği cihazların haberleşmesinde kullandı.  Fakat protokol gayet kullanışlı olunca bir çok gömülü sitemin içerisindeki veri transferi için de bu protokol kullanılmaya başlandı.  Mesela MicroChip firmasının ürettiği Pic ailesi mikrodenetleyicilerin içindeki ram gibi birimlerin kendi arasında kullandığı protokolde I²C  protokolüdür.

common_protocol_conversions

  I²C protokolünü anlamak için senkron seri haberleşmeyi bilmek gerekiyor. Senkron seri haberleşmede iki hat vardır. Birincisi esas gönderilen data hattıdır. İkincisi ise senkron, yani belli bir sabit frekansa sahip kare dalga hattıdır.  I²C iletişim protokolünde de bu durum aynıdır. Fakat isimleri farklıdır.

Şu yazıya göz atmanız daha yararlı olacak;

USB ile Senkron Seri Haberleşme Protokolü(Uygulama)

Protokolde kullanılan iki hat vardır.

SDA-Seri Veri Giriş/Çıkış ucu

SCL-Senkron Sinyal Ucu

Protokolde Master Cihaz ve Slave Cihaz terimleri kullanılır.  Master Cihaz haberleşme ağına bağlanan ve haberleşmeyi kontrol eden cihazdır. Senkron sinyalini bu cihaz üretir.  Slave cihaz yada cihazlar ise sadece data alışverişi yaparlar.  Her bir slave cihazın bir adresi bulunur. Çünkü gönderilen datalar sadece belli bir cihaz tarafından kabul edilmesi istenebilir.

i2c-tutorial-block-diag

Bu yüzden iletişimde genelde 8 ve ya 10 bitlik adresler kullanılır. İletişime başlamadan önce start biti gönderilir.  Start biti gönderildikten sonra adres ve daha sonra ise transfer edilecek bilgi gönderilir.

 

i2c-tutorial-typical-signals i2c-tutorial-master-slave

Adres bilgisinin son biti R/W bitidir. Bu bit okuma/yazma bitidir. Logic-1 ise okuma yapılacağı logic-0 ise yazma işleminin yapılacağı anlama gelir.  Master cihazdan bu bilgiler gittikten sonra slave elemandan bilginin alındığına dair ACK biti gönderilir.   Aynı zamanda master cihaz da slave cihazdan aldığı her veri için slave cihaza bir ACK biti gönderir.

i2c-tutorial-slave-master

 

 

Master cihaz slave cihazdan veri okurken ise start şartından sonra master cihaz yine adre bilgisini ve okuma yapacağı bilgi bitini gönderir. Slave cihaz ise ACK bitinden sonra kaç bitlikse artık veri bitini gönderir. Master cihaz ise veriyi okuduktan sonra slave cihaza ACK biti gönderir.

I²C protokolünün en çok kullanıldığıuygulama alanı harici EEPROM uygulamalarıdır. Çünkü EEPROM dan veri alıp okumada en kullanışlı protokoldür. Bu yüzden PIC CCS C programlar I²C  protokolünü hem donanımsal olarak hem de yazılımsal olarak destekler.  Protokol için oluşturulmuş hazır kütüphaneler, ve fonksiyonlar mevcuttur.