I2C
(Inter-Integrated Circuit) atau TWI (Two Wire Interface) bagian 1
I2C
dilapalkan dengan (I Squared C), umumnya ditulis dengan I2C, adalah
diciptakan pertama kali oleh Philips Semiconductors. Dengan metode
ini komunikasi device yang dilengkapi dengan I2C protokol dapat
dilakukan hanya dengan mempergunakan dua kabel. Pengiriman/penerimaan
informasi/data secara serial dengan mempergunakan data line (SDA =
Serial Data) dan sebuah sumber clock (SCL = Serial Clock). Kedua
kabel, kabel data (SDA) dan kabel clock (SCL), harus di-Pull-UP
dengan resistor eksternal. Gambar 1 memperlihatkan contoh arsitektur
I2C dengan satu master, yang bertindak sebagai mater adalah UC, dan
beberapa slave.
Gambar 1. Metode Komunikasi I2C
Gambar 1. Metode Komunikasi I2C
Master
adalah yang menguasai bus sehingga ia mengendalikan/menghasilkan
serial clock dan juga membangkitkan sinyal START dan sinyal STOP.
Jadi Master yang menentukan kapan komunikasi dimulai dan komunikasi
diakhiri. Sementara Slave menunggu/membaca perintah dari master
apakah harus menerima/menulis data atau mengirim data ke Master.
Slave tidak boleh membangkitkan pulsa clock (serial clock). Atau
dapat disimpulkan Master dapat mengirim atau menerima data dari Slave
dan sesama slave tidak boleh berkomunikasi.
Pada
komunikasi serial secara I2C, meskipun serial clock berasal dari
Master, namun Slave dapat menahan pulsa clock, pulsa clock berada
dalam keadaan low, jika slave belum siap untuk menerima data. Hal ini
biasanya terjadi pada peralatan yang lambat. Serial clock pada
komunikasi ini harus bersumber dari Clock yang dibangkitkan oleh
Master, tidak boleh berasal dari sumber yang lain.
Gambar
2 memperlihatkan format pembacaan/pengiriman data dari Master ke
Slave dengan mempergunakan komunikasi serial I2C. Komunikasi antara
Master dengan Slave dimulai dengan membangkitkan pulsa START oleh
Master. Pulsa START dibaca oleh Slave pada bus SDA dalam keadaan LOW
pada saat pulsa clock dalam keadaan HIGH. Setelah pulsa START
dikirimkan, maka pada clock berikutnya Master mengirimkan 8 bit
alamat, yang dikirimkan secara serial melalui bus SDA, ke Slave
dengan format B6, B5, B4, B3, B2, B1, B0, dan R/W. Bit alamat
tersebut mengandung informasi R/W pada LSB. Jika LSB pada byte alamat
“1” maka master ingin membaca data dari Slave tetapi jika LSB
byte alamat “0” maka master akan menulis pada slave. Karena hanya
7 bit yang dipergunakan dalam byte alamat maka banyaknya device yang
dapat dijadikan slave hanya 127. Alamat 0 dipergunakan untuk General
Call. Bila alamat dan perintah, Read atau Write, yang dikirimkan
oleh master dapat diterima oleh slave maka slave akan membangkitkan
pulsa LOW (ACK), pada bus SDA, jika perintah tersebut dapat
dijalankan dan pulsa HIGH (NACK) jika perintah tersebut gagal.
Gambar 2. Format pengiriman/pembacaan data dengan I2C
Setelah
Master menerima pulsa LOW (ACK), Data dikirimkan/dibaca dari alamat
Slave tersebut. Bila data telah berhasil dikirim/dibaca maka slave
memberikan pulsa LOW (ACK) pada bus SDA tetapi jika terjadi kegagalan
maka slave akan memberikan pulsa HIGH (NACK). Pulsa Stop, pulsa yang
naik dari LOW ke HIGH pada saat pulsa clock dalam keadaan HIGH, akan
dikrimkan oleh Master untuk menghentikan komunikasi. Hal yang
patut dicatat pada komunikasi ini adalah, bit alamat dan bit data
tidak boleh berubah keadaan pada saat pulsa clock berada pada keadaan
HIGH. Bit bit tersebut (bit alamat dan bit data) hanya boleh berubah
pada saat pulsa clock berada pada posisi LOW.
Kecepatan
Clock pada I2C pada high speed mencapai 400 Khz, tetapai pada umumnya
kecepatan clock 100 Khz. Kecepatan clock ini tidak dapat dijadikan
standart karena setiap pabrik pembuat chip akan berbeda begitu juga
device terkadang lambat dalam bekerja sehingga kecepatan clocknya
terkadang samapai 10 Khz. Jika Slow device dihubungkan dengan high
speed bus maka peralatan tersebut (slow device) akan merespon dengan
menahan bus clock agar tetap LOW sampai peralatan tersebut siap
menerima perintah berikutnya. Pada kasus ini Master harus menunggu
sampai Slave melepaskan bus CLOCK.
TWI
(Two Wire Serial Interface)
Komunikasi Serial I2C dipatenkan oleh Philips Semiconductor sehingga
beberapa perusahaan terpaksa menggantikan istilah I2C dan protokolnya
dengan nama TWI. Atmel mengantikan I2C dengan TWI begitu juga
protokol komunikasi yang dipergunakan. Protokol komunikasi TWI dari
Atmel sama seperti protokol komunikasi I2C hanya saja atmel
menambahkan adanya interrupt. Kesimpulannya adalah komunikasi serial
TWI compatible dengan komunikasi serial I2C, jadi peralatan Atmel,
yang diperlengkapi dengan komunikasi serial TWI, dapat berkomunikasi
dengan peralatan yang mendukung secara serial I2C.
Sisa bab ini akan membahas komunikasi serial secara TWI, tepatnya
penggunaan protokol TWI pada UC ATMega328. Pada bab ini akan
mempergunakan terminology sbb :
Master : Device yang mengawali dan mengakhiri transmisi data. Master
juga membangkitkan pulsa serial clock (SCL).
Slave : Device yang dialamati/dituju oleh master
Transmitter : Device yang meletakkan data pada bus SDA
Receiver : Device yang membaca data dari bus SDA
START, STOP pada TWI sama seperti I2C tetapi ada tambahan REPEATED
START seperti ditunjukkan pada gambar 3. Kaedah yang patut dijaga
adalah Alamat dan Data tidak boleh berubah keadaan ketika pulsa clock
dalam HIGH.
Seluruh paket alamat (Address Packets Format) terdiri dari 9 bit.
Bit bit tersebut adalah : 7 address bit, 1 control bit (Read/Write)
dan 1 bit Acknowledge (ACK) yang dibangkitkan oleh Slave. Bit control
set menunjukkan operasi pembacaan (read) dan jika bit control clear
menunjukkan operasi penulisan (write). Jika Slave mengenali alamat
yang diberikan oleh master maka ia harus pulsa LOW pada bus SDA pada
pulsa clock ke sembilan. Jika slave sedang sibuk atau sedang tidak
dapat melayani permintaan master maka SDA line harus tetap HIGH pada
pulsa clock ke sembilan. Jadi sebuah address packet terdiri dari
alamat slave diikuti oleh READ atau WRITE yang masing masing disebut
sebagai SLA+R dan SLA+W.
Gambar 3. Kaedah pengiriman data pada TWI
Alamat Slave dapat dengan bebas dirancang oleh designer, tetapi
dengan ketentuan adalah MSB dari address byte dikirim pertama kali,
ditunjukkan oleh gambar 4. Selain itu alamat 0000-000 dipergunakan
untuk general call. General Call dipergunakan oleh Master untuk
menrimkan pesan yang sama kesemua Slave. Seluruh Slave harus
mengirimkan sinyal NACK ketika general call oleh master diikuti oleh
pulsa write. Satu hal lagi yang perlu diingat pada komunikasi TWI
pada UC kelurga Atmel adalah seluruh alamat dengan format 1111-xxx
masih dicadangkan untuk pemakaian yang akan datang.
Gambar 4. Address Packet Format
Data Packet format sama seperti halnya dengan Address packet format
yaitu MSB dikirim lebih dahulu dan LSB adalah yang paling akhir
dirim. Jika receiver telah menerima data terakhir, karena alasan
tertentu tidak dapat mnerima data berikutnya maka receiver harus
memberitahukan transmitter dengan mengirimkan sinyal NACK. Gambar 5
memberikan gambaran tentang pengiriman data pada komunikasi TWI.
Gambar 5. Pengiriman Data pada komunikasi TWI
Ketika suatu event menghendaki perhatian terhadap kejadian di bus
TWI, maka TWI Interrupt Flag (TWINT) dapat dipergunakan sebagai
indikatornya. Pada siklus clock berikutnya, TWI Status Register
(TWSR) akan di Update dengan suatu kode yang menunjukkan event yang
bersangkutan. Contoh kode pada TWSR ditunjukkan pada gambar 8, yaitu
bilangan didalam lingkaran. Selama TWINT Flag dalam keadaan set, maka
kabel serial Clock (SCL) akan dipertahankan dalam keadaan LOW. Hal
ini memungkinkan suatu program (vector interrupt) untuk menyelesaikan
tugasnya sebelum TWI Transmission dilanjutkan.
TWINT Flag akan set disebabkan oleh event event berikut :
-
Setelah TWI mengirimkan sinyal START/REPEATED START
-
Setelah TWI mengirimkan sinyal SLA+R/W
-
Setelah TWI mengirimkan sebuah address byte
-
Setelah TWI menerima sebuah data byte.
-
Untuk lengkapnya lihat datasheet ATMega328Untuk memudahkan, maka gambar 6 menunjukan cara kerja dari bus TWI. Hal yang patut dicatat adalah jika TWI Interrupt Enable (TWIE) bit, yang terdapat pada register TWCR, dan Global Interrupt, yang terdapat pada register SREG, keduanya atau satu diclearkan maka TWINT Flag set tidak akan menghasilkan interrupt vektor. Dalam hal ini TWINT Flag hanya dipergunakan sebagai indikator suatu action pada bus TWI.
Gambar 6. Typical Transmission pada Bus TWI
Prinsip prinsip yang dipergunakan pada TWI Transmission adalah sbb :
-
Ketika TWI telah selesai melaksanakan suatu tugas dan mengharapkan suatu response, TWINT Flag diset. Jalur SCL dipaksa LOW sampai TWINT diclearkan.
-
Ketika TWINT Flag set, maka user harus meng-update seluruh TWI register dengan harga yang relevan pada siklus clock berikutnya. Sebagai sebuah contoh, TWDR harus diisi dengan bit yang akan dikirim pada siklus clock berikutnya.
-
Setelah semua register TWI di-update dan seluruh penundaan prgram telah dilaksanakan, maka TWCR dapat ditulis. Pada saat menulisi TWCR, bit TWINT harus diset karena hal ini akan menclearkan TWINT flag.
Untuk memudahkan penggunaan TWI maka pada gambar 7 diberikan program
dalam bahasa C sebagai implementasinya.
Gambar 7. Implementasi dalam bahasa C pada setiap event
Semua UC Atmel yang mendukung komunikas TWI dapat dioperasikan dalam
4 (empat) mode yaitu : Master Transmitter (MT), Master Receiver (MR),
Slave Transmitter (ST) dan Slave Receiver (SR). Dalam bab ini kita
hanya membahas mode master transmitter dan mode master receiver atau
pada bus TWI hanya ada satu Master. Pembahasan tentang multiple
Master akan dibahas pada kesempatan yang lain. Gambar 8 meringkaskan
UC yang bekerja dalam mode Master Transmitter. Lingkaran pada gambar
8 mengindikasikan bahwa TWINT Flag dalam keadaan set. Angka pada
lingkaran tersebut adalah kode status yang terdapat pada register
TWSR, dengan bit bit prescaler di mask ke zero. Saat TWINT Flag
menjadi set maka TWI Transfer akan ditunda sampai TWINT Flag di
clearkan oleh software (user). Dalam bentuk tabel Mode Master
Transmitter disajikan pada tabel 1.
Tabel 1. Mode Master Transmitter.
Bersambung kebagian 2
Bersambung kebagian 2
kalo untuk format pengiriman data dengan tx rx bagaimana ya?
BalasHapusmakasih sudah share
BalasHapusLampu servis hp