Dalam dunia elektronika dan sistem tertanam, komunikasi antar perangkat adalah aspek yang sangat penting. Perangkat seperti mikrokontroler, sensor, memori, dan layar sering kali perlu berinteraksi satu sama lain untuk menjalankan fungsi tertentu. Untuk menghubungkan perangkat-perangkat ini, digunakan protokol komunikasi. Salah satu protokol yang paling populer dan banyak digunakan adalah I2C (Inter-Integrated Circuit).

I2C (Inter-Integrated Circuit) adalah salah satu protokol komunikasi serial yang banyak digunakan dalam dunia elektronik dan mikrokontroler. Protokol ini dirancang untuk memungkinkan perangkat elektronik berkomunikasi satu sama lain dengan menggunakan dua jalur utama, yaitu SCL (Serial Clock Line) dan SDA (Serial Data Line). I2C pertama kali dikembangkan oleh Philips Semiconductor (sekarang NXP Semiconductors) dan kini menjadi standar yang diadopsi secara luas.

Bagaimana I2C Bekerja?

I2C menggunakan pendekatan master-slave di mana satu perangkat berfungsi sebagai master (pengendali utama) yang mengatur komunikasi, sementara perangkat lainnya bertindak sebagai slave (pengikut). Dalam satu bus I2C, dapat terdapat lebih dari satu master, tetapi ini jarang digunakan karena menambah kompleksitas.

Komunikasi pada I2C dilakukan melalui dua kabel utama:

  1. SCL (Serial Clock Line): Mengirim sinyal clock untuk sinkronisasi data.
  2. SDA (Serial Data Line): Mengirimkan data antara perangkat master dan slave.

Data dikirim dalam bentuk bit, dan setiap perangkat pada bus memiliki alamat unik sehingga master dapat memilih perangkat tertentu untuk berkomunikasi.

Proses Komunikasi I2C

  1. Start Condition: Master menginisiasi komunikasi dengan menarik jalur SDA ke logika rendah (low) sementara SCL tetap tinggi.
  2. Alamat Slave: Master mengirimkan alamat 7-bit atau 10-bit dari slave yang ingin diakses, diikuti oleh bit baca/tulis.
  3. Acknowledgment (ACK): Slave yang sesuai dengan alamat tersebut merespons dengan menarik SDA ke logika rendah.
  4. Transfer Data: Data dikirimkan dari master ke slave atau sebaliknya.
  5. Stop Condition: Master menghentikan komunikasi dengan mengembalikan jalur SDA ke logika tinggi (high) saat SCL juga tinggi.

Keunggulan I2C

  • Efisiensi Kabel: Hanya memerlukan dua jalur untuk menghubungkan banyak perangkat.
  • Dukungan Multi-Perangkat: Memungkinkan hingga 128 perangkat (dengan alamat 7-bit) dihubungkan pada satu bus.
  • Kecepatan yang Cukup Cepat: Mendukung kecepatan hingga 3.4 Mbps (mode High-Speed).
  • Kesederhanaan Protokol: Mudah diimplementasikan menggunakan mikrokontroler.

Kelemahan I2C

  • Jarak Pendek: Karena keterbatasan resistansi pull-up, bus I2C hanya ideal untuk jarak pendek.
  • Kompleksitas untuk Banyak Master: Jika terdapat lebih dari satu master, diperlukan pengaturan tambahan.
  • Kecepatan Terbatas: Dibandingkan SPI, kecepatan I2C lebih rendah.

Contoh Penggunaan I2C

I2C banyak digunakan dalam perangkat elektronik modern, seperti:

  • Sensor: Menghubungkan sensor suhu (seperti DS3231), sensor jarak (seperti VL6180X), atau sensor tekanan.
  • Display: Mengontrol layar OLED atau LCD.
  • EEPROM: Menyimpan data pada memori eksternal.