Home » Posts tagged 'Inter IC'

Tag Archives: Inter IC

Komunikasi serial I2C

Pada dasarnya komunikasi serial I2C telah kita aplikasikan penggunaannya pada blog ini yaitu komunikasi antara Arduino Microcontroller dengan modul clock DS1307. Artikelnya bisa anda baca disini. Selain itu, pada artikel lain yang akan datang, akan kita buat aplikasi yang lebih kompleks dengan memanfaatkan pengetahuan pada artikeI2C ini. Sekarang akan kita perdalam pemahaman kita mengenai I2C pada artikel ini.

I2C

Contoh model komunikasi dibentuk

Seperti yang kita tahu, bahwa komunikasi yang paling banyak digunakan dalam system elektronika adalah jenis komunikasi serial. Alasan utamanya adalah komunikasi serial lebih sedikit memerlukan hardware daripada serial sehingga menjadi lebih efisien. Artikel kali ini kita akan membahas mengenai komunikasi serial dengan metode I2C.

Awalanya, Komunikasi I2C dikembangkan oleh Philips sekitar tahun 1980-an dengan kecepatan transfer data yang masih kecil. Namun saat ini, kecepatan transfer data dari I2C sudah mencapai angkan 4Mbps. Komunikasi serial I2C hanya memerlukan 2 kabel/saluran, sehingga sering juga disebut sebagai TWI/Two Wire Interface. Jika anda menggunakan metode komunikasi dengan I2C, anda tidak perlu repot untuk mengatur baudrate baik pada bagian Pengirim data maupun pada bagian penerima data.

Kelebihan Utama dari komunikasi I2C antara lain :

  1. Hanya memerlukan 2 saluran/bus
  2. Tidak diperlukan setting baudrate
  3. Komunikasi bisa dilakukan dengan lebih dari 2 perangkat elektronika dalam 2 bus dan untuk membedakan setiap slave digunakan pengalamatan yang berbeda-beda.
  4. Terdapat hubungan master dan slave dalam setiap komunikasi. Proses pertukaran data sepenuhnya diatur oleh master.

2 saluran/bus pada komunikasi serial ini dikenal dengan nama SCL dan SDA. SCL/Serial clock berfungsi untuk menyelaraskan data yang ada antara master dan slave. Sedangkan SDA/Serial Data berfungsi sebagai saluran data.

Protokol Komunikasi

Saat master ingin melakukan proses transfer data, maka master akan mengirim signal stop ke slave kemudian proses trasnsfer 8 bit terjadi, jika sudah selesai maka master harus mengirimkan signal stop sebagai tanda bahwa komunikasi data selesai.

Untuk signal start dan signal stop hanya bisa dilakukan saat pin SCL dalam kondisi High. Yaitu Start ditandai dengan pin SDA berubah menjadi High ke Low, sedangkan stop ditandai dengan perubahan dari High ke Low seperti yang dijelaskan pada gambar dibawah ini.

-1

Gambar sginal start dan stop bit

 

 

 

Signal lain yang perlu diperhatikan adalah Acknowledge. Signal ini dikirim oleh slave sebagai tanda bahwa 8bit data sudah complete diterima dari master, signal ACK ini adalah bit ke-9 yang muncul sebelum signal stop. Signal ACK harus bernilai Low yang menunjukkan bawah slave siap untuk menerima 8bit data selanjutnya, sedangkan jika bernilai High maka slave harus mengirim Signal Stop yang menandkan proses transfer data selesai dilakukan.

 

Mode Pengalamatan.

Hal yang penting lagi dalam proses komunikasi I2C adalah mode pengalamatan dari master dan slave, terlebih jika ada beberapa master/beberapa slave dalam 1 bus tersesbut. Mode pengalamatan memungkinkan kita untuk mendapatkan data yang benar sesuai dengan data yang tersimpan didalam komponen tersebut.

Mode pengalamatan terdiri 7 bit + 1 bit R/W + 1bit ACK. Jika 1 device terdiri alamat terdiri 7bit data, maka logikanya dalam 1 bus bisa dipasang sampai dengan 127 device. Pegiriman data pertama dalam I2C adalah MSB (Most Significant Bit) dan terakhir adalah LSB(Least Significant Bit) kemudian dilanjutkan dengan 1 bit ACK.

scl-sda

Gambar model pengalamatan I2C

A6 adalah MSB, R/W adalah LSB. Bit R/W bernilai 1 jika master akan membaca data, dan bernilai 0 jika ingin menulis data.

 

 

Komunikasi I2C antara Microcontroller

Ada kalanya dalam suatu system kita memerlukan lebih dari 1 Microcontroller yang saling bertukar data/berkomunikasi. Prinsip master dan slave tetap berlaku meski proses komunikasi dilakukan oleh microcontroller. Yakni clock berasal dari master sebagai sinkronisasi data. Kendala utamanya adalah, slave tidak bisa langsung mengirim data, karena slave juga memerlukan waktu untuk kedalam interrupt service routine, menyimpan data kedalam variable, dan menyesuikan alamat data yang diminta oleh master. Bebrapa hal diatas memerlukan waktu, sehingga jika master tetap saja mengirim clock maka data yang diterima dari slave akan error/respon yang diberikan salah.

Untuk mengatasi hal ini, diperlukan saling pengertian antara microcontroller master dengan microcontroller slave. Caranya, slave bisa menahan SCL pada posisi low saat pertama menerima perintah read dari master, kemudian slave menyiapkan data yang diminta, setelah siap maka slave melepas SCL untuk kembali menjadi High. Sedangkan pada posisi master, perintah clock pada SCL untuk membaca slave juga diikuti dengan recheck SCL apakah pada tetap pada posisi Low ataukah sudah kembali ke High, jika sudah High artinya data pada slave siap dikirim dan master bisa melanjutkan pengambilan datanya dengan mengirim clock selanjutnya.

 

 

 

 

 

http://www.i2c-bus.org/

http://www.robot-electronics.co.uk/acatalog/I2C_Tutorial.html