SPI (Serial Peripheral Interface) adalah salah satu bentuk komunikasi serial yang disediakan dalam
AVR sehingga memang direkomendasikan menggunakan SPI karena dari datasheet. SPI merupakan
sebuah bus komunikasi serial sinkron, artinya transmitter dan receiver yang terlibat dalam komunikasi
SPI harus menggunakan clock yang sama untuk mensinkronkan pendeteksian bit pada receiver.
Normalnya bus SPI digunakan untuk komunikasi dengan jarak yang sangat pendek dengan perangkat
atau mikrokontroler lain yang terletak pada papan rangkaian yang sama atau setidaknya dalam hardware
yang sama. Ini berbeda dari UART, yang digunakan untuk komunikasi pada jarak yang lebih jauh, seperti
antara sebuah mikrokontroler dan PC. Bus SPI dikembangkan untuk menyediakan bentuk komunikasi
yang memiliki kecepatan yang relatif tinggi pada jarak dekat dengan menggunakan jumlah pin kontroler
yang minimum. Komunikasi SPI terdiri dari sebuah master dan slave. Keduanya mengirim dan menerima
data secara simultan, tapi master adalah yang bertanggung jawab untuk menyediakan sinyal clock untuk
proses transfer data. Dengan cara ini masterlah yang mengatur kecepatan transfer data, dan karenanya,
adalah yang mengendalikan transfer data. Gambar di bawah menunjukkan koneksi antara unit master dan
slave dalam komunikasi SPI. Master menyediakan clock dan data 8 bit, yang dikirimkan ke pin MOSI
(master out slave in) pada master. Data 8 bit yang sama dikirim ke unit slave, satu bit per pulsa clock ke
pin MOSI pada slave. Ketika 8 bit data dikirim keluar dari master ke slave, 8 bit data juga dikirim dari
slave ke masternya melalu pin MISO (master in slave out) ke pin MISO pada master. Karena itu
komunikasi SPI pada dasarnya adalah berbentuk melingkar di mana 8 bit data mengalir dari master ke
slave dan himpunan 8 bit yang berbeda mengalir dari slave ke master. Dengan cara ini master dan slave
dapat saling bertukar data dalam satu komunikasi tunggal.
Sangat memungkinkan untuk menghubungkan beberapa perangkat sekaligus menggunakan bus
SPI, karena semua pin MOSI dan pin MISO dapat disambungkan sekaligus. Perangkat manapun dalam
jaringan ini dapat menjadi master hanya dengan memutuskan untuk mengirimkan data. Sebuah perangkat
dalam jaringan ini dapat menjadi slave ketika pin SS(slave select) digroundkan. Biasanya pin SS dari para
slave ini dihubungkan entah dengan port parallel pada master atau dengan sebuah decoder yang akan
menentukan perangkat mana yang akan menjadi slave. SPCR (SPI control register) mengendalikan
operasi pada interface SPI. Definisi bit pada SPCR ditunjukkan pada gambar di bawah. Dalam cara yang
sama dengan control register yang telah dibahas di atas, ada bit yang digunakan untuk mengenable
interface SPI dan interup yang berhubungan dengan SPI, dan ada bit yang digunakan untuk
mengendalikan kecepatan komunikasi. Juga ada bit yang digunakan untuk menentukan perangkat mana
yang bertindak sebagai master, MSTR.
Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arah
menggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Sistem I2C
terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C
dengan pengontrolnya. Piranti yang dihubungkan dengan sistem I2C Bus dapat dioperasikan
sebagai Master dan Slave. Master adalah piranti yang memulai transfer data pada I2C Bus dengan
membentuk sinyal Start, mengakhiri transfer data dengan membentuk sinyalStop, dan membangkitkan
sinyal clock. Slave adalah piranti yang dialamati master.
Sinyal Start merupakan sinyal untuk memulai semua perintah, didefinisikan sebagai perubahan
tegangan SDA dari “1” menjadi “0” pada saat SCL “1”. Sinyal Stop merupakan sinyal untuk mengakhiri
semua perintah, didefinisikan sebagai perubahan tegangan SDA dari “0” menjadi “1” pada saat SCL “1”.
Kondisi sinyal Start dan sinyal Stop seperti tampak pada Gambar 1.
Dalam melakukan transfer data pada I2C Bus, kita harus mengikuti tata cara yang telah
ditetapkan yaitu:
Transfer data hanya dapat dilakukan ketikan Bus tidak dalam keadaan sibuk.
Selama proses transfer data, keadaan data pada SDA harus stabil selama SCL dalam keadan tinggi.
Keadaan perubahan “1” atau “0” pada SDA hanya dapat dilakukan selama SCL dalam keadaan rendah.
Jika terjadi perubahan keadaan SDA pada saat SCL dalam keadaan tinggi, maka perubahan itu dianggap
sebagai sinyal Start atau sinyal Stop.