i2c

24
INTER-INTEGRATED CIRCUIT ( I2C ) APLIKASI MIKROPROSESOR Oleh : Dwi Wahyu Wijaya NIM : 0815000003 Program Studi Sistem Komputer

Upload: dwiww

Post on 27-Jun-2015

669 views

Category:

Documents


55 download

TRANSCRIPT

Page 1: I2C

INTER-INTEGRATED CIRCUIT( I2C )

APLIKASI MIKROPROSESOR

Oleh :

Dwi Wahyu WijayaNIM : 0815000003

Program Studi Sistem Komputer

ASIAN BANKING FINANCE AND INFORMATICS INSTITUTEPERBANAS, JAKARTA

2011

Page 2: I2C

KATA PENGANTAR

Puji Syukur penulis panjatkan kepada Allah SWT yang telah memberikan nikmat sehat dan kesempatan, sehingga dapat menyelesaikan tugas dalam penyusunan makalah tentang Inter-Integrated Circuit ini. Makalah ini sebagai tugas mata kuliah Aplikasi Mikroprosesor pada ABFI Institute Perbanas.

Makalah ini ditujukan agar dapat memberikan pengetahuan dan gambaran tentang Inter-Integrated Circuit. Tak ada gading yang tak retak, penulis menyadari bahwa makalah ini masih jauh dari kesempurnaan, untuk itu mohon maaf kiranya atas kekurangan yang ada dalam makalah ini.

Makalah ini tidak akan terwujud tanpa bantuan pihak lain baik secara langsung maupun tidak langsung. Oleh karena itu melalui tulisan ini penulis ingin menyampaikan rasa terima kasih kepada semua pihak yang telah membantu dalam penulisan karya ilmiah ini.

Penulis juga mengucapkan terimakasih kepada ABFI Institute Perbanas yang telah memberikan kesempatan kepada penulis utuk menimba ilmu di Institute tersebut. Ibu Nani Krisnawaty T., S.Kom., M.T. selaku Ketua Program Studi Sistem Komputer ABFI Institute Perbanas, Bapak Dicky Susilo S.T sebagai dosen mata kuliah Aplikasi Mikroprosesor.

Akhirnya penulis berharap semoga kebaikan dan bantuan yang diberikan mendapat balasan yang setimpal dari Allah SWT dan semoga karya ilmiah ini dapat bermanfaat.

Jakarta, Januari 2011

Dwi Wahyu Wijaya

P a g e | 2

Page 3: I2C

DAFTAR ISI

KATA PENGANTAR.........................................................................2

DAFTAR ISI.......................................................................................3

INTER-INTEGRATED CIRCUIT.......................................................5

1.1. Pendahuluan..................................................................5

1.2. Latar Belakasng dan Konsep I2C...................................6

1.2.1. Kondisi Start dan Stop...................................................7

1.2.2. Pengalamatan 7-bit........................................................7

1.2.3. Acknowledge..................................................................8

1.3. Fitur Utama I2C...........................................................10

1.4. Keuntungan I2C...........................................................10

1.5. Cara Kerja I2C Bus......................................................10

1.5.1. Terminologi..................................................................11

1.5.2. Karakter perangkat keras............................................12

1.5.3. Karakter Transfer Data Bit..........................................13

1.5.4. Karakter Transfer Data Byte........................................14

1.5.5. Cara kerja I2C Bus (Format 7 bit address)..................15

1.6. Multi Master................................................................17

1.6.1. Clock Synchronization.................................................18

1.6.2. Arbitration...................................................................19

1.7. Kesimpulan............................................................................20

Page | 3

Page 4: I2C

ABSTRAK

Protokol bus I2C merupakan protokol yang pertama kali dikembangkan oleh Philips semiconductor. Bus I2C sendiri merupakan sistem bus serial yang didasarkan pada konsep master dan slave. Piranti master dalam suatu sistem bus I2C dapat merupakan mikrokontroler yang memang diperuntukkan untuk melakukan komunikasi dalam sistem bus I2C dengan antar muka yang telah terintegrasi didalamnya. Tetapi, tidak menutup kemungkinan dikarenakan kesederhanaan protokol bus I2C menjadikannya dapat secara mudah untuk diemulasikan pada suatu mikrokontroler biasa.

Dalam Tugas Akhir ini, dilakukan emulasi konsep komunikasi berdasarkan protokol bus I2C pada mikrokontroler AT89C51 dan juga dibuat suatu rangkaian yang digunakan untuk mendemonstrasikan komunikasi antara master dan slave pada suatu sistem bus I2C. Dilakukan pengujian perangkat lunak emulasi bus I2C pada mikrokontroler AT89C51, pengujian fungsi dari tiap slave yang terhubung pada sistem bus I2C.

P a g e | 4

Page 5: I2C

INTER-INTEGRATED CIRCUIT

1.1. Pendahuluan

Ada beberapa macam standar komunikasi serial yang telah dikembangkan oleh perusahaan-perusahaan semikonduktor di dunia. Salah satu standar yang popular adalah teknik komunikasi I2C (Inter Integrated Circuit) karena kesederhanaan arsitektur dan protokolnya. Untuk memahami konsep komunikasi berdasarkan standar komunikasi bus I2C maka harus dilakukan pemahaman pada konsep dan protokol dari bus I2C. Mikrokontroler Atmel AT89C51 merupakan mikrokontroler boolean yang tidak mendukung konsep komunikasi bus I2C. Tetapi karena kesederhanaan konsep arsitektur dan protokol dari standar komunikasi bus I2C, membuatnya dapat diemulasikan dan diwujudkan dalam suatu sistem bus I2C master tunggal dengan beberapa buah slave yang merupakan IC-IC yang mendukung standar komunikasi bus I2C.

1.2. Latar Belakasng dan Konsep I2C

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.

Bus I2C merupakan singkatan dari bus Inter Integrated Circuits yang secara langsung menjelaskan fungsi dasarnya yaitu

Page | 5

Page 6: I2C

menyediakan jalur komunikasidiantara Rangkaian Terintegrasi (Integrated Circuits – IC). Bus I2C bekerja berdasarkan prinsip master dan slave. Secara fisik sistem bus I2C terdiri dari 2 buah kawat aktif dan jalur catu daya serta ground. Dua buah kawat aktif yaitu SDA yang merupakan kepanjangan dari Serial Data dan SCL yang merupakan kepanjangan Serial Clock merupakan jalur kawat dua arah (bidirectional) Dalam konsep bus I2C ada beberapa istilah yang didefinisikan sebagai berikut :

Komponen yang mengirim sinyal ke bus I2C disebut sebagai transmitter

Komponen yang menerima sinyal disebut sebagai receiver Komponen yang mengontrol transfer sinyal pada bus I2C

dengan frekuensi detak tertentu disebut sebagai master Komponen yang dikontrol oleh master disebut sebagai slave

Dalam konsep komunikasi bus I2C hanya dibutuhkan enam operasi dasar sederhana untuk mentransmisikan dan menerima informasi. Keenam kode operasi itu adalah sebagai berikut :

1. Sebuah bit start2. Suatu alamat slave 7-bit3. Suatu bit read/write yang akan menentukan apakah slave

akan berfungsi sebagai transmitter atau receiver.4. Suatu bit pemberitahuan (acknowledge)5. Bit pesan yang dibagi ke dalam segmen 8-bit6. Suatu bit stop

1.2.1. Kondisi Start dan Stop

Kondisi START didefinisikan sebagai perubahan logika jalur data dari high ke low pada saat logika jalur detak berada pada logika high sedangkan kondisi STOP didefinisikan sebagai perubahan logika jalur data dari low ke high pada saat logika jalur detak berada pada logika high. Kedua kondisi ini diilustrasikan pada gambar dibawah.

P a g e | 6

Page 7: I2C

Gambar Kondisi Start Dan Stop

1.2.2. Pengalamatan 7-bit

Setelah dikirimkannya kondisi start, maka dilakukan pengiriman alamat dari slave yang akan diakses. Pengiriman ini dilakukan dalam byte pertama dengan susunan dari byte pertama ini diilustrasikan pada gambar dibawah.

Gambar Format Pengalamatan 7-bit

7-bit pertama dari byte pertama yang dikirim oleh master adalah alamat dari slave yang akan diakses. Bit terakhir akan menentukan arah data. Jika bit ini berlogika “0” maka berarti master akan mengirimkan data ke slave yang dialamati pada 7 bit pertama, sedangkan jika bit ini berlogika “1” maka master akan menerima data dari slave.

Setiap piranti yang terhubung pada sistem bus I2C memiliki alamat unik tersendiri. Umumnya susunan 7-bit dari alamat piranti terdiri dari bit alamat tetap dan bit alamat yang dapat diprogram. Susunan bit alamat tetap ditentukan oleh Philips Semiconductor sebagai pemegang hak paten dari bus ini. Sedangkan susunan bit yang dapat diprogram ditentukan oleh desainer dari

Page | 7

Page 8: I2C

sistem bus yang akan digunakan.

Setiap pengiriman data pada bus I2C dilakukan dalam paket satu byte. Satu bit data akan dikirim untuk setiap pulsa detak. Data harus stabil selama periode logika high dari detak. Jalur data hanya dapat berubah saat jalur detak berada pada logika low. Tranfer bit data ini diilustrasikan dengan gambar dibawah.

Gambar Tranfer Bit Data

1.2.3. Acknowledge

Dalam suatu sistem bus I2C, untuk setiap transfer data satu byte yang terjadi harus diikuti dengan suatu bit acknowledge atau bit not acknowledge. Master akan membangkitkan pulsa detak acknowledge. Transmitter akan melepaskan jalur data (SDA) selama pulsa detak acknowledge. Jika tidak terdapat kesalahan, receiver akan mem-pull down jalur SDA selama periode logika high dari pulsa detak acknowledge. Jika suatu slave receiver tidak dapat memberikan sinyal acknowledge maka slave akan membuat jalur SDA tetap berkondisi high dan master akan membangkitkan kondisi Stop untuk membatalkan pengiriman data. Jika suatu master receiver membuat jalur SDA tetap berlogika high saat pulsa detak acknowledge, master memberikan sinyal akhir dari transmisi dan slave transmitter akan “melepaskan” jalur data sehingga master dapat menggerakkan kondisi Stop.

P a g e | 8

Page 9: I2C

Kondisi acknowledge pada bus I2C ini diilustrasikan pada gambar dibawah.

Gambar Kondisi Acknowledge

Suatu contoh komunikasi lengkap yang terjadi pada bus I2C dapat dilihat pada gambar dibawah.

Gambar Contoh Komunikasi pada Bus I2C

1.3. Fitur Utama I2C

Fitur utama I2C bus adalah sebagai berikut :

Page | 9

Page 10: I2C

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.

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

1.5. Cara Kerja I2C Bus

Sebelum memahami cara kerjanya, ada beberapa terminologi, karakter dan kondisi penting dalam I2C yang harus dipahami terlebih dahulu, yaitu :

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

P a g e | 10

Page 11: I2C

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 Contoh Sistem dengan IIC Bus

1.5.2. Karakter perangkat keras

Kedua pin pada I2C yaitu SDA dan SCL harus memiliki kemampuan input dan output serta bersifat open drainatau open collector.

Page | 11

Page 12: I2C

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 Koneksi IIC Bus

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

P a g e | 12

Page 13: I2C

Gambar Transfer Data Bit Pada I2c Bus

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

Kondisi

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 Kondisi Start dan Stop

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.

Page | 13

Page 14: I2C

Gambar Kondisi Ack dan Nack

1.5.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 denganmengirimkan kondisi START diikuti dengan address byte (7 bit address + 1 bit pengarah/data direction bit) seperti pada ilustrasi dibawah ini

Gambar 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

P a g e | 14

Page 15: I2C

Gambar Transfer Data Lengkap I2c Bus

Gambar Master-Transmitter Menulis Data Ke Slave -ReceiverYang Teralamati

Gambar Master-Receiver Membaca Data Dari Slave -Transmitter

Yang Teralamati

Gambar 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 ,

Page | 15

Page 16: I2C

sedangkan yang dapat diprogram biasanya berupa pin address pada IC yang bersangkutan, sebagaicontoh 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 busDari Master Receiver ke slave : Setelah Master menerima data byte yang terakhir dari slave

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

P a g e | 16

Page 17: I2C

1.6.1. Clock Synchronization

Gambar 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 diatas) sebagai berikut : Jika Master1 (Clock 1) memulai periode low sinyal clocknya,

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)

Page | 17

Page 18: I2C

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

1.6.2. Arbitration

P a g e | 18

Page 19: I2C

Gambar 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 darisatu 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 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

Page | 19

Page 20: I2C

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.

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

P a g e | 20