I2C nedir?
I2C kısaltmasının açılımı literatürde “Inter-Integrated Circuit” olarak geçmektedir. Bunun Türkçe karşılığını “entegre devreler arasında” olarak basitçe ifade edebiliriz. Tarihçesi 1980 lere dayanmaktadır ve Philips tarafından geliştirilmiştir. Şu anda günümüzde bir çok alanda çok yaygın kullanılmaktadır. I2C bir haberleşme protokolü olup adından da anlaşılacağı üzere entegre devreler arasındaki haberleşmeyi sağlar. Tek bir devre kartında entegreler arasında kullanılabileceği gibi farklı devre kartlarını, microchip ve işlemcileri de birbirine kablolarla bağlayarak bu protokol ile veri alışverişi mümkündür. En başlarda haberleşme hızı saniyede 100 kbit (kilobit) olarak tasarlanmıştır fakat daha sonraları hız artırılarak 400kb, 3.4 mbit ve ultra fast mode(UFM) olmak üzere geliştirilmiştir.
Bu protokolün elemanları Master ve Slave olarak adlandırılır. Master haberleşmeyi kontrol eden cihazdır. Sistemde ise en az 1 Slave ve en az 1 Master bulunmalıdır. İletişimin gerçekleşebilmesi için 2 adet bağlantıya ihtiyaç vardır. Bu kanallara SDA ve SCL adı verilmektedir. SDA(Serial Data) kısaca veri transferinin sağlandığı kanaldır. Bu kanalda haberleşme çift yönlü gerçekleşir. Bu haberleşme esnasındaki senkronizasyon ise SCL(Serial Clock) tarafından Master’ın ürettiği clock sinyali ile sağlanmaktadır. Bunların yanı sıra VCC ve GND bağlantıları da sistemin çalışabilmesi için gereklidir.
Bu protokolün bazı özellikleri aşağıdadır:
- UART(hakkında daha fazla bilgi için üzerine tıklayınız) gibi Baudrate kısıtlamalarına sahip değildir. Bunun yerine master cihaz bir bus clock üretir.
- Haberleşme için SDA ve SCL olmak üzere sadece 2 hat kullanılması yeterlidir.
- Sistemdeki her bir cihazın kendine has bir adresi vardır. Bu adresler üzerinden karşılıklı haberleşme teyit edilerek sağlanır.
- Veri aktarımı 8 bitlik diziler halinde aktarılır.
- i2c-tools linux terminal komutları için buraya tıklayabilirsiniz.