> ## Documentation Index
> Fetch the complete documentation index at: https://docs.t3gemstone.org/llms.txt
> Use this file to discover all available pages before exploring further.

# I2C

> Inter-Integrated Circuit

[I2C (Inter-Integrated Circuit)](https://kureansiklopedi.com/tr/detay/i2c-inter-integrated-circuit-8c241)
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.

<Frame caption="I2C Pinleri">
  <img className="rounded-lg" src="https://mintcdn.com/t3gemstone-754bcb96/xXa-dgH9QsK0Txx6/images/o1-board/37-i2c.png?fit=max&auto=format&n=xXa-dgH9QsK0Txx6&q=85&s=89f6c8824f2f73cb71e7ea3a383ff5c4" width="1221" height="750" data-path="images/o1-board/37-i2c.png" />
</Frame>

### 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.

```bash theme={"system"}
sudo apt install i2c-tools
```

Bulunan I2C hatlarını görüntülemek için `ls /dev/i2c-*` komutunu çalıştırınız.

<SnippetI2CDevices />

`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.

```bash theme={"system"}
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: -- -- -- -- -- -- -- -- 
```

<Note>
  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.
</Note>

`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.

```bash theme={"system"}
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.

```bash theme={"system"}
sudo i2cset -y 2 0x40 0x07 0x80
```

<Warning>
  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.
</Warning>
