I2C (Inter-Integrated Circuit)
protokolü, mikrodenetleyiciler ve diğer entegre devreler arasında veri iletimi için kullanılan yaygın bir iletişim
protokolüdür. Düşük hızlı veri iletimi gerektiren uygulamalarda, özellikle sensörler, bellek modülleri ve diğer
çevresel birimlerle iletişimde tercih edilmektedir.
Gemstone geliştirme kartında 40 pin header pinlerinde 1 adet I2C (I2C1) çıkışı bulunmaktadır. Harici olarak
kullanılmak istenen I2C cihazları bu pinler aracılığıyla bağlanılabilir. Ayrıca Gemstone üzerinde i2c ile haberleşen
ICM-20948 9 eksen MEMS sensörü ve HDC2010 sıcaklık ve nem sensörü bulunmaktadır.
Todo: i2C pinlerini belirten kart görseli
I2C Kullanımı
Gemstone işletim sistemine bağlandıktan sonra I2C adreslerine veri yazabilmek ve veri okuyabilmek
için i2c-tools paketinin kurulumunu yapınız.
sudo apt install i2c-tools
Bulunan I2C hatlarını görüntülemek için ls /dev/i2c-* komutunu çalıştırınız.
i2c-2 hattına bağlı olan cihazların bağlı olduğu adresleri görüntülemek için aşağıdaki komutu çalıştırınız.
gemstone@t3-gem-o1:~$ sudo i2cdetect -y -r 2
# 0 1 2 3 4 5 6 7 8 9 a b c d e f
# 00: -- -- -- -- -- -- -- --
# 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 30: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
# 70: -- -- -- -- -- -- -- --
Yukarıdaki komut çıktısında görünen UU o adreste bir I2C cihazının bulunduğunu ve bu cihazın sistem tarafından
kullanıldığını gösterir. 40 ise o adreste bir cihazın bulunduğunu ifade eder. Örneğin 0x30 adresi için okuma ve
yazma işlemi yapılamazken 0x40 adresi için bu işlemler yapılabilmektedir.
i2c-2 hattının 0x40 adresine bağlı olan cihazın 0x00 adresinden veri okuyabilmek için
aşağıdaki komutu çalıştırınız.
sudo i2cget -y 2 0x40 0x00
i2c-2 hattının 0x40 adresine bağlı olan cihazın 0x07 adresine 0x80 verisi yazabilmek için aşağıdaki
komutu çalıştırınız.
sudo i2cset -y 2 0x40 0x07 0x80
Verilen örnekteki I2C adresleri (0x40, 0x00 ve 0x07 gibi) örnekleme amacıyla kullanılmıştır. Yapacağınız uygulamalarda
I2C cihazlarının adresleri farklılık gösterebilir. Kullanılan cihazların dökümanlarına başvurarak doğru adreslerin
belirlenmesi önemlidir.