Materi 5: Protokol I2C I Nyoman Kusuma Wardana Sistem Komputer STMIK STIKOM Bali
IIC Inter-Integrated Circuit Terkadang disebut I2C
Awalnya dikembangkan oleh Philips Semiconductor (saat ini mjd NXP Semiconductor) di awal tahun 1980-an
Saat ini, IIC telah menjadi standar komunikasi. Banyak diterapkan di dunia embedded, mulai dr menghubungkan berbagai sensor, RTC (Real-time Clock), EEPROM, dsb.
I2C ideal digunakan utk komunikasi antar peripheral berkecepatan rendah dlm jarak yg pendek.
Peralatan I2C hanya menggunakan menggunakan dua pin, yg dikenal sbg SCL (Serial Clock), dan SDA (Serial Data). Pada beberapa aplikasi, I2C juga disebut sebagai Two-Wire Serial Interface (TWI).
Jalur komunikasi ini adlh SCL sebagai clock/detak, dan SDA untuk pengiriman secara dua arah antara master dan slave.
Pada AVR, sebanyak 119 alat dapat berkomunikasi menggunakan jalur yg sama.
Bus I2C
terdapat resistor yang bertindak sebagai resistor pull-up di kedua jalur. Keberadaan pull-up resistor ini akan membentuk logika AND. Jika satu atau lebih alat yang terlibat dalam jalur tersebut berlogika 0, maka keseluruhan jalur tersebut akan memiliki logika 0. Jalur baru akan berlogika 1 jika tidak ada perangkat yang berlogika 0.
Setiap perangkat dalam jalur komunikasi dikenal sebagai node. Node dapat bertidak sebagai master ataupun slave. Master perangkat yang menghasilkan detak untuk sistem. Master jg menentukan kapan memulai dan mengakhiri komunikasi.
Slave adlh perangkat yang menerima detak. Setiap slave akan memiliki alamat unik. Baik master maupun slave, keduanya dapat mengirim (transmitter) dan menerima (receiver) data.
Komunikasi secara I2C menerapkan skema synchronous serial. synchronous mengindikasikan bahwa setiap bit yg ditransfer oleh jalur SDA akan disinkronkan dgn pulsa pada SCL. Transisi data hanya terjadi ketika SCL bernilai 0 (LOW)
SDA hanya dapat menggantikan posisinya, dari 1 (HIGH) ke 0 (LOW) atau sebaliknya dari 0 ke 1, HANYA ketika SCL bernilai 0 (LOW).
Suatu komunikasi pd I2C diawali oleh kondisi START, dan diakhiri dgn kondisi STOP. Kondisi START dan STOP ini tidak memenuhi kriteria seperti pada perubahan data. Kondisi START terjadi ketika SCL pd posisi HIGH & terdapat transisi dari HIGH ke LOW pada SDA. Posisi STOP terjadi ketika SCL pd posisi HIGH, & terjadi transisi dari LOW ke HIGH pd SDA
Kondisi START dan STOP
Adakalanya master melakukan REPEATED START, yaitu melakukan START lagi sebelum STOP dilakukan.
Kondisi REPEATED START
Trdapat 2 jenis paket data dan alamat. Setiap data/alamat yg dikirim melalui serial I2C hrs dikirim dlm suatu bentuk paket tertentu yg terdiri dari 9-bit. MSB akan dikirim terlebih dahulu Bit ke-9 menentukan apakah data diterima (ACK) atau tidak diterima (NACK) oleh receiver
Paket Alamat Terdiri dari: 7-bit alamat, 1-bit READ/WRITE, dan 1-bit ACK. 7-bit alamat scr teori mampu mengalamati 27 = 128 slave Alamat ke 0 utk general call Alamat mulai 120 ke atas, atau 1111 XXX, tidak diperkenankan utk dipakai (reserved).
Format paket alamat
Bit ke-8 merupakan bit untuk READ/WRITE Jika bit ini diberi 1, maka pada frame berikutnya master akan membaca data dari slave Sebaliknya, jika diberi nilai 0, maka pada paket berikutnya, master akan mengirimkan data ke slave
Contoh: Asumsi jika saat ini kita ingin mengirim paket alamat 1101001 (alamat desimal 105). Kita ingin agar master menulis ke slave setelah pada paket berikutnya. Bagaimana cara kita menggambarkan timing diagram untuk proses ini?
Jawab:
Master mengirimkan 11010010. Tujuh bit pertama, yaitu 1101001 adalah alamat tujuan slave, Bit ke-8 yaitu 0 menyatakan operasi WRITE. Bit ke-9, master akan membebaskan jalur (membuatnya menjadi HIGH), dan membiarkan slave untuk membawanya menjadi LOW untuk menyatakan ACK.
Paket Data Paket data juga sebanyak 9-bit. Delapan bit pertama adalah data yg ingin dikirim, Bit terakhir adalah ACK. Seperti halnya paket alamat, paket data yg akan dikirim terlebih dahulu adlh MSB
Contoh: Misalnya master ingin mengirimkan data 11110000 (data desimal 240) ke slave dengan alamat 1101001 (alamat desimal 105). Bagaimana cara kita memperlihatkan timing diagram utk proses ini?
Wardana, Kusuma .(2015). Teknik Antarmuka MATLAB dan Arduino : Membangun Interaksi antara Bahasa Komputasi Teknis dengan Platform Berbasis Mikrokontroler. MiaranaDIY