Mengenal I2C raspberry PI -->

Mengenal I2C raspberry PI

Sorayakit
30 December 2016

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




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



Hasil gambar untuk i2c port raspberry pi 


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