| |
|
Komunikasi
Antar IC dengan IIC
|
|
1.
Latar Belakang dan Konsep IIC
Pada saat ini desain elektronik dituntut untuk semakin ringkas
dan fleksibel, dimana ukuran fisik IC semakin diperkecil dan jumlah
pin diminimalkan dengan tetap menjaga fleksibilitas dan kompabilitas
IC sehingga mudah untuk digunakan dalam berbagai keperluan desain
yang berbeda, oleh karenanya banyak perusahaan semikonduktor yang
berusaha mengembangkan cara baru komunikasi antar IC yang lebih
akomodatif terhadap tuntutan diatas sebagai alternatif dari hubungan
antar IC secara paralel (parallel bus) yang sudah kita kenal luas.
Salah satu metode yang telah matang dan dipakai secara luas adalah
IIC (sering ditulis juga I2C) singkatan dari Inter Integrated Circuit
bus yang dikembangkan oleh Philips Semiconductor sejak tahun 1992,
dengan konsep dasar komunikasi 2 arah antar IC dan/atau antar sistem
secara serial menggunakan 2 kabel.
2. Fitur Utama IIC
Fitur utama I2C bus adalah sebagai berikut :
- Hanya melibatkan dua kabel yaitu serial data line (selanjutnya
disebut SDA) dan serial clock line (selanjutnya disebut SCL).
- Setiap IC yang terhubung dalam I2C memiliki alamat yang
unik yang dapat diakses secara software dengan master/slave protocol
yang sederhana, dan mampu mengakomodasikan multi master (akan dijelaskan
lebih detil pada bagian lain).
- I2C merupakan serial bus dengan orientasi data 8 bit (byte),
komunikasi 2 arah, dengan kecepatan transfer data sampai 100Kbit/s
pada mode standart dan 3,4 Mbit/s pada mode kecepatan tinggi.
- Jumlah IC yang dapat dihubungkan pada I2C bus hanya dibatasi
oleh beban kapasitansi pada bus yaitu maksimum 400pF.
3. Keuntungan I2C
Keuntungan yang didapat dengan menggunakan I2C antara lain :
- Meminimalkan jalur hubungan antar IC (bandingkan dengan
parallel bus !).
- Menghemat luasan PCB yang dibutuhkan.
- Membuat sistem yang didesain berorientasi software (mudah
diekspan dan diupgrade).
- Membuat sistem yang didesain menjadi standart, sehingga
dapat dihubungkan dengan sistem lain yang juga menggunakan I2C bus.
4. Cara kerja I2C Bus
Sebelum memahami cara kerjanya, ada beberapa terminologi, karakter
dan kondisi penting dalam I2C yang harus dipahami terlebih dahulu,
yaitu :
4.1 Terminologi
- Transmitter yaitu device yang mengirim data
ke bus.
- Receiver yaitu device yang menerima data
dari bus.
- Master yaitu device yang memiliki inisiatif
(memulai dan mengakhiri) transfer data dan yang membangkitkan sinyal
clock.
|
-
Slave yaitu device yang dialamati (diakses berdasarkan
alamatnya) oleh Master.
- Multi-master yaitu sistem yang memungkinkan lebih
dari satu Master melakukan initiatif transfer data dalam waktu yang
bersamaan tanpa terjadi korupsi data.
- Arbitration yaitu prosedur yang memastikan bahwa
jika ada lebih dari satu Master melakukan inisiatif transfer data
secara bersamaan, hanya akan ada satu Master yang diperbolehkan dengan
tanpa merusak data yang sedang ditransfer.
- Synchronization yaitu prosedur untuk menyelaraskan
sinyal clock dari dua atau lebih device.

Gambar
1
Contoh Sistem dengan IIC Bus
4.2
Karakter perangkat keras
- Kedua pin pada I2C yaitu SDA dan SCL harus memiliki kemampuan
input dan output serta bersifat open drain atau open collector .
- Kedua pin tersebut terhubung pada I2C bus yang telah di pull-up
dengan resistor ke suplai positif dari sistem
- Semua device yang terhubung pada bus harus terhubung pada
ground yang sama sebagai referensi.

GAMBAR 2
KONEKSI IIC BUS
|
|
Komunikasi
Antar IC dengan IIC
- Halaman 1
|
|
4.3
Karakter Transfer Data Bit
Data bit dikirim/diterima melalui SDA, sedangkan sinyal clock
dikirim/diterima melalui SCL, dimana dalam setiap transfer data
bit satu sinyal clock dihasilkan, transfer data bit dianggap valid
jika data bit pada SDA tetap stabil selama sinyal clock high,
data bit hanya boleh berubah jika sinyal clock dalam konsisi low,
lihat gambar 3.
GAMBAR 3
TRANSFER DATA BIT PADA I2C BUS
4.4 Karakter Transfer Data Byte
I2C Bus berorientasi pada 8 bit data (byte), dengan most significant
bit / MSB ditransfer terlebih dulu, serta 2 macam data byte yaitu
Address Byte dan Data Byte.
4.5 Kondisi
4.5.1 START dan STOP
Apabila pada SDA terjadi transisi dari kondisi high ke kondisi
low pada saat SCL berkondisi high, maka terjadilah kondisi START.
Apabila pada SDA terjadi transisi dari kondisi low ke kondisi
high pada saat SCL berkondisi high, maka terjadilah kondisi STOP.
Kondisi START dan STOP selalu dibangkitkan oleh Master, dan bus
dikatakan sibuk setelah START dan dikatakan bebas setelah STOP.

GAMBAR 4
KONDISI START DAN STOP
4.5.2 ACK dan NACK
Kondisi ACK terjadi apabila receiver "menarik" SDA pada kondisi
low selama 1 sinyal clock.
Kondisi NACK terjadi apabila receiver "membebaskan" SDA pada kondisi
high selama 1 sinyal clock.

GAMBAR 5
KONDISI ACK DAN NACK
|
4.5
Cara kerja I2C Bus (Format 7 bit address)
Cara kerja I2C bus dapat dibedakan menjadi format 7 bit addressing
dan format 10 bit addressing, dalam artikel ini hanya akan dibahas
format 7 bit addressing, untuk format 10 bit addressing dapat
anda baca keterangan lengkapnya dalam "The I2C-BUS Specification
Version 2.1 January 2000" yang dirilis oleh Philips Semiconductor.
Inisiatif komunikasi/transfer data selalu oleh Master dengan mengirimkan
kondisi START diikuti dengan address byte (7 bit address + 1 bit
pengarah/data direction bit) seperti pada ilustrasi dibawah ini

GAMBAR 6
FORMAT ADDRESS BYTE
Ada dua jenis komunikasi dasar dalam I2C bus yaitu :
- Master-transmitter menulis data ke slave-receiver yang
teralamati
- Master-receiver membaca data dari slave-transmitter yang
teralamati

GAMBAR 7
TRANSFER DATA LENGKAP I2C BUS

GAMBAR 8
Master-transmitter menulis data ke slave-receiver yang teralamati

GAMBAR 9
Master-receiver membaca data dari slave-transmitter yang teralamati
|
|
Komunikasi
Antar IC dengan IIC
- Halaman 2
|
|

GAMBAR 10
KOMBINASI MASTER-TRANSMITTER DAN MASTER RECEIVER
Address
byte terdiri dari bagian yang tetap dan bagian yang dapat diprogram,
bagian yang tetap merupakan bawaan dari IC , sedangkan yang dapat
diprogram biasanya berupa pin address pada IC yang bersangkutan,
sebagai contoh IC PCF8591, memiliki address byte sbb : 1 0 0 1
A2 A1 A0 , dimana 1001 adalah bagian yang tetap dan A2,A1,A0 adalah
bagian yang dapat diprogram sesuai dengan kondisi logika pada
pin IC PCF8591.
Sinyal Acknowledge (ACK) terjadi :
Dari Slave ke Master Transmitter :
- Sesudah address byte diterima dengan baik oleh slave
- Setiap kali slave selesai menerima data byte dengan baik
Dari Master Receiver ke Slave :
- Setiap kali Master selesai menerima data byte dengan
baik
Sinyal Negative Acknowledge (NACK) terjadi :
Dari Slave ke Master Transmitter :
- Setelah slave gagal menerima address byte dengan baik
- Setiap kali slave gagal menerima data byte dengan baik
- Slave tidak terhubung pada bus
Dari Master Receiver ke slave :
- Setelah Master menerima data byte yang terakhir dari
slave
5. Multi Master
Pada I2C bus bisa terjadi situasi dimana lebih dari 1 device mengambil
initiatif transfer data sebagai Master, dengan protocol Master/slave
dan karakter hardware open drain/open collector yang bersifat
wired AND, hal ini tidak menyebabkan terjadinya korupsi data,
inilah yang disebut dengan Multi Master.
Untuk dapat melakukan Multi Master ada 2 hal yang penting yaitu
Clock Synchronization dan Arbitration.
|
5.1
Clock Synchronization

GAMBAR 11
CLOCK SYNCHRONIZATION
Karena sifat wired AND dari I2C bus, dimana jika salah satu
device menarik bus dalam kondisi low maka device lain tidak dapat
membuat bus tersebut menjadi high (sifat dari logika AND), sehingga
jika ada lebih dari satu device yang melakukan initiatif transfer
data sebagai Master dengan membangkitkan sinyal clock pada SCL
pada saat yang bersamaan harus ada sinkronisasi clock yang dapat
dijelaskan (seperti terlihat pada gambar 10 diatas) sebagai berikut
:
- Jika Master1 (Clock 1) memulai periode low sinyal clock-nya,
maka SCL menjadi low, Master2 mendeteksi kondisi tersebut dan
harus juga memulai menghitung periode low sinyal clock-nya.
- Saat Master1 (Clock 1) akan memulai periode high sinyal
clock-nya dan mendeteksi bahwa SCL masih dalam kondisi low (disebabkan
periode low sinyal clock dari Master 2 (Clock 2) masih belum selesai)
maka dia harus menunggu dan tidak menghitung periode high sinyal
clock-nya terlebih dahulu.
- Saat Master2 (Clock 2) memulai periode high sinyal clock-nya,
maka kondisi SCL mehjadi high, Master1 (Clock1) yang mendeteksi
kondisi tersebut juga harus memulai menghitung periode high sinyal
clock-nya.
- Karena Master 1 (Clock1) terlebih dahulu menyelesaikan periode
high sinyal clock-nya dan memulai periode low maka kondisi SCL
menjadi low, maka Master 2 (Clock 2) yang mendeteksi kondisi tersebut
juga harus memulai menghitung periode low sinyal clock-nya, demikian
seterusnya sehingga terjadilah sinkronisasi sinyal clock antara
Master1 dan Master2.
Secara singkat sinkronisasi clock dapat disimpulkan sbb:
1. Jika kondisi SCL tetap low pada saat Master mencoba membuatnya
high, maka Master tersebut harus memulai mengitung periode low
sinyal clock-nya
2. Jika Master akan memulai periode high sinyal clock-nya, maka
Master tersebut harus menunggu kondisi SCL menjadi high sebelum
memulai menghitung periode high sinyal clock-nya.
Sehingga sinkronisasi clock yang terbentuk sbb:
|
|
Komunikasi
Antar IC dengan IIC
- Halaman 3
|
|
-
Periode low akan mengikuti periode low dari device yang membangkitkan
sinyal clock dengan periode low yang terpanjang.
- Periode high akan mengikuti periode high dari device yang membangkitkan
sinyal clock dengan periode high yang terpendek.
5.2 Arbitration

GAMBAR 12
ARBITRATION
Dalam Multi Master, bisa terjadi kemungkinan lebih dari satu device
melakukan initiatif transfer data menjadi Master, walaupun transfer
data hanya bisa dilakukan jika kondisi bus bebas, tetapi sangat
memungkinkan lebih dari satu device mendeteksi kondisi bus sebagai
bebas dan membangkitkan kondisi START sedikit berselisih waktu
tetapi masih dalam batas-batas kondisi START yang valid. Untuk
kondisi seperti dijelaskan diatas, maka arbitration diberlakukan
bit demi bit hingga selesai, dimana sekali lagi sifat/karakter
bus yang wired AND memungkinkan hal tersebut terjadi.
Untuk jelasnya perhatikan gambar 11 diatas yang dapat dijelaskan
sebagai berikut :
-
Ambil contoh Master 1 (Data 1) akan mentrasfer data 101xxxxxB
sedangkan Master 2 (Data 2) akan mentransfer data 100101xxB.
- Kedua Master mendeteksi bus dalam keadaan bebas, dan membangkitkan
sinyal START yang hampir bersamaan, Master 1 lebih dahulu membangkitkan
START sehingga kondisi SDA mengikuti Master 1, baru kemudian Master
2 membangkitkan START, tetapi kondisi START pada SDA masih valid
untuk Master2.
|
- Kedua Master mentransfer MSbit (sama-sama "1"), kemudian data
bit berikutnya (sama-sama "0"), pada bit yang berikutnya Master1
berusaha untuk membuat SDA high sesuai dengan data bit-nya, sedangkan
Master 2 berusaha untuk membuat SDA low (sesuai dengan data bit-nya),
karena sifat wired AND dari SDA, maka kondisi SDA menjadi low,
karena itu Master 1 dikatakan kehilangan arbitrasi (dengan kata
lain bisa disebut sebagai kehilangan kontrol) atas SDA.
- Bagi Master 1 yang kehilangan arbitrasi bisa terus membangkitkan
sinyal clock sampai transfer data selesai dan bus dalam kondisi
bebas lagi, bagi Master 2 yang memenangkan arbitrasi (mendapat
kontrol) atas SDA dapat menyelesaikan transfer data-nya tanpa
ada data yang terkorupsi sama sekali.
6. Kesimpulan
Komunikasi
I2C dapat memenuhi target desain elektronika saat ini, dengan
karakter hardware dan master/slave protocol yang sederhana tetapi
tangguh.
Jika digunakan device yang telah dilengkapi dengan kemampuan I2C
secara built-in, akan sangat mudah untuk melaksanakan komunikasi
baik single Master maupun multi Master, tetapi bagi device yang
tidak, masih dapat mengemulasikan I2C protocol pada pin-pin I/O-nya
asalkan memenuhi syarat karakter hardware dengan cukup mudah untuk
single Master tetapi sedikit rumit untuk multi Master.
Artikel ini tidak membahas secara lengkap seluruh kemampuan I2C
seperti misalnya I2C mode kecepatan tinggi, tetapi cukup detil
memberikan gambaran tentang I2C, untuk mengetahui secara lengkap
bisa didapatkan dari referensi untuk artikel ini yang dicantumkan
dibawah.
7. Referensi
1. THE I2C-BUS SPECIFICATION VERSION 2.1 JANUARY 2000, PHILIPS
SEMICONDUCTOR
2. APPLICATION NOTE AN435A, PHILIPS SEMICONDUCTOR.
3. APPLICATION NOTES I2C SPECIFIC INFORMATION, PHILIPS SEMICONDUCTOR
4. DATA SHEET PCF8591 8-BIT A/D AND D/A CONVERTER, PHILIPS SEMICONDUCTOR
|
|
Komunikasi
Antar IC dengan IIC
- Halaman 4
|
|