I2C adalah protokol serial yang digunakan perangkat untuk saling berkomunikasi. Perangkat yang umunya menggunakan i2c adalah LCD 16x02, RTD clock atau sensor i2c. I2c (inter integrated circuit) menggunakan dua kabel yang diberi nama SDA (serial data) dan SCL (serial clock) yang dikoneksi menjadi kabel bus i2c. Dari bus i2c ini akan ada satu master device yang akan mengontrol salah satu dari banyak slave device yang terkoneksi di bus i2c. Master device akan mengenali slave dari address unik yang mereka miliki. Komunikasi master dan slave adalah mengirim dan menerima data dengan ukuran 8 bit.
I2c diciptakan oleh Philips dan sekarang digunakan oleh hampir semua produsen utama IC. Raspberry pi bisa dipakai sebagai master atau slave device, begitupun mikrokontroler. Bus I2C banyak dipakai karena mudah digunakan, hanya butuh dua kabel dan ditambah resistor pull-up
I2c diciptakan oleh Philips dan sekarang digunakan oleh hampir semua produsen utama IC. Raspberry pi bisa dipakai sebagai master atau slave device, begitupun mikrokontroler. Bus I2C banyak dipakai karena mudah digunakan, hanya butuh dua kabel dan ditambah resistor pull-up
Data transfer Protocol
Untuk bisa berkomunikasi antara master dan slave, i2c memiliki protokol
yang nantinya akan mengirim signal Start dan Stop, signal baca atau tulis.
Gambar dari situs electronics hub diatas adalah blok yang memetakan bagaimana master dan slave saling berkomunikasi. Blok berwarna hijau muda mewakili master device dan block berwarna putih sebagai slave device, dan gambar dibawah adalah bentuk contoh signal pengiriman data dari master ke slave. Signal SCL adalah serial clock yang memiliki frekuensi tetap misal 100 Hz, 400 Hz atau lebih tinggi lagi tergantung device yang digunakan.
Berikut kerja dari write transmission i2C
Menggunakan di raspberry pi
Berikut kerja dari write transmission i2C
- Dalam keadaan normal, kedua garis SCL dan SDA tinggi (logic 1), signal SCL hanya dikeluarkan oleh master device sedangkan slave device hanya menerima signal SCL. Komunikasi awal dikeluarkan oleh master device dengan memberi signal Start di SCL (logika 1 turun ke 0)
- Dilanjutkan Signal SDA dari master device akan mengirim serial signal 7 bit sebagai address (receiving address) dan mengirim status r/w (write) ke bus i2c secara broadcast artinya semua slave device akan terkena signal ini namun belum tentu mampu berkomunikasi sampai address slave device cocok dengan address yang dikeluarkan master device.
- Address slave yang cocok dengan address master device akan mengeluarkan signal Acknowladge (logik 0) secara otomatis ke SDA.(pada clock ke 9)
- Kemudian master device akan menulis (write) data 8 bit ke slave device (receiving data). Data 8 bit akan dikirim secara serial oleh signal SDA dari clock ke 1-2-3-4-5-6-7-8 dan bit ke 9 adalah status acknowladge (logik 0) yang harus keluar lagi dari slave device untuk bisa menerima data selanjutnya. Semua perintah atau step bit demi bit mengikuti hentakan signal clock, hingga SDA menerima signal Not acknowladge (logik 1) dari slave device yang berarti mengakhiri transfer data / stop.
Sebagian besar perangkat I2C mendukung kondisi start berulang. Ini berarti bahwa sebelum komunikasi berakhir/stop, master slave dapat mengulangi kondisi awal dengan alamat byte dan mengubah mode dari menulis ke membaca.
Menggunakan di raspberry pi
I2C adalah bus multi-perangkat yang digunakan untuk menghubungkan periferal kecepatan rendah ke komputer dan sistem embedded. Raspberry Pi mendukung antarmuka ini pada header GPIO-nya dan ini adalah cara yang bagus untuk menghubungkan sensor dan perangkat. Setelah dikonfigurasi Anda dapat menghubungkan lebih dari satu perangkat tanpa menggunakan pin tambahan pada header.
Sobat hanya membutuhkan 2 pin I / O yang bisa dari raspi dan mikrokontroler untuk dijadikan jalur bus i2c, dan script i2C sederhana untuk bisa melakukan setting frekuensi clock/SCL, dan resistor sebagai pull up.
Kesimpulan
Bus I2C digunakan oleh banyak sirkuit terpadu dan mudah diterapkan. Setiap mikrokontroler dapat berkomunikasi dengan perangkat I2C meskipun tidak memiliki antarmuka I2C khusus. Spesifikasi I2C
fleksibel - I2C bus dapat berkomunikasi dengan perangkat lambat dan
juga dapat menggunakan mode kecepatan tinggi untuk mentransfer data
dalam jumlah besar. Semoga artikel ini bermanfaat sampai jumpa.. :)
https://www.electronicshub.org
sumber : http://i2c.info/
https://learn.adafruit.com
https://www.electronicshub.org
sumber : http://i2c.info/
https://learn.adafruit.com