Pengetahuan Dasar
Komunikasi SPI (Serial Peripheral Interface)
- Pendahuluan
Salam Otomatisasi, apa kabar
semuanya? Semoga baik-baik saja. Kali ini kita akan membahas tentang komunikasi
SPI (Serial Peripheral Interface), tapi
sebelumnya jangan lupa singgah ke blog saya à http://festyy.com/wNiBaj
untuk membaca materi-materi lainnya tentang mikrokontroler dan subscribe serta Like channel youtube saya
di (fungky king) https://www.youtube.com/channel/UCWbN7TqlN68FxeFY7uCNhkA
untuk melihat hasil dari percobaan-percobaan dengan mikrokontroler yang telah
dibuat.
Dalam pembahas tentang “Pengetahuan Dasar Komunikasi SPI (Serial Peripheral Interface)” terbagi
beberapa bagian yaitu pengertian Komunikasi SPI, mekanisme kerja komunikasi SPI
dan contoh sederhana implementasi komunikasi SPI pada Arduino meliputi gambar
rangkaian, program dan penjelasan singkat sistem yang dibuat.
SPI (Serial Peripheral Interface) merupakan komunikasi seri synchronous yang berarti harus
menggunakan clock yang sama untuk mengsinkronisasi deteksi bit pada receiver.
Biasanya hanya digunakan untuk komunikasi jarak pendek dengan mikrokontroler
lain yang terletak pada papan rangkaian yang sama. Bus SPI dikembangkan untuk
menyediakan komunikasi dengan kecepatan tinggi dengan menggunakan pin
mikrokontroler yang sedikit.
SPI
melibatkan master dan slave. Keduanya mengirimkan dan menerima data secara
terus menurus, namun master bertanggung jawab untuk menyediakan sinyal clock
untuk transfer data. Gambar 1 menunjukkan komunikasi antara master dan slave
pada komunikasi SPI. Master menyediakan clock dan data 8 bit pada pin master-out-slave-in
(MOSI) dimana data tersebut ditransfer satu bit per pulsa clock menuju pin MOSI
pada slave. Delapan bit data juga diberikan dari slave ke master melalui pin
master-in-slave-out menuju pin MISO pada master. Biasanya pin 𝑆𝑆 (slave
select) diberi ground (active low) untuk menjadikannya sebagai slave.
Gambar 1. Skema Komunikasi SPI (Serial Peripheral Interface) |
- Pembahasan
Setelah kita tahu apa itu SPI, mari kita lanjutkan ke pembahasan
berikutnya, yaitu tentang mekanisme kerja komunikasi SPI. SPI beroperasi berdasarkan shift register baik master
device maupun slave device, keduanya akan mempunyai 8 bit shift register. Namun
tergantung dari berbagai macam arsitektur mikrokontroler yang digunakan, ada
yang bisa memiliki 10 bit ataupun 12 bit shift register.
Untuk memulai komunikasi, bus master melakukan
konfigurasi clock, dengan catatan frekuensi atau kecepatan transfer data antara
SPI master device dan slave device harus sama, biasanya bisa mencapai beberapa
MHz. Master akan memilih perangkat slave dengan mengeluarkan logika 0, lalu
master akan menunggu proses yang telah dijadwalkan di master itu sendiri
seperti uratan intrupsi timer, konversi analog ke digital (ADC), dll.
Lalu setelah periode itu selesai master akan mengeluarkan clock yang pertanda
akan dimulainya proses komunikasi Serial.
Master
dan slave terhubung dalam 4 jalur seperti pada Gambar 1, namun terkadang SS
juga selain dihubungkan ke Ground tapi juga dihubungkan ke CS seperti pada
Gambar 2 dibawah ini.
Gambar 2. Single Master Diagram SPI |
Setiap
jalur yang terhubung ini mempunyai informasi dan membawa sinyal tertentu yang
didefinisikan oleh protocol dari bus SPI. Adapun fungsi kerja dari keempat
jalur tersebut adalah sebagai berikut:
- MOSI (Master
Output Slave Input), ini adalah sinyal output dari master device yang
merupakan shift register dari master menuju input dari slave.
- MISO (Master
Input Slave Output), ini adalah input dari master device untuk menerima
data shift register dari slave device menuju master.
- SCK atau SCLK
(Serial Clock), ini adalah clock yang dihasilkan master yang berguna
menAndakan komuniaksi SPI dan untuk melakukan shifting terhadap shift
register dari kedua device.
- SS’
(Slave Select), ini adalah pin yang digunakan untuk memilih slave mana
yang akan diajak berkomunikasi oleh master. (dengan asumsi lebih dari satu
slave device)
Sinyal
MOSI, SCK, dan SS berasal dari master untuk dikirim ke slave. Sedangkan MISO
digunakan untuk menerima sinyal dari slave. Dengan demikian, setiap clock SPI
yang melakukan tranmisi full duplex akan mengalami bebrapa proses yaitu:
- Master
mengirimkan satu bit ke slave, lalu Slave device akan membacanya dalam
line yang sama.
- Slave
mengirimkan satu bit ke master, lalu master juga membacanya dalam line
yang sama.
Jadi
setiap satu clock SPI dilakukan, maka akan terjadi komunikasi full duplex
antara master device dengan slave device. Master mengirimkan satu Bit pada line
MISO, lalu slave akan membacanya. Setelah itu, pada line MISO slave device akan
mengirimkan data kembali ke master device dan master akan membacanya. Urutan
atau sekuen ini akan bertahan seperti di atas meskipun kita tidak menggunakan
komunikasi Full Duplex atau hanya menggunakan satu line komunikasi saja
(seperti simplex ).
Gambar 3. Awal Sebelum Transfer Data |
Transmisi
data akan melibatkan dua shift register dari beberapa ukuran data yang
diberikan seperti 8 bit, 10 bit ataupun 12 bit. Namun pada umunya digunakan 8
bit shift register. Keduanya akan terkoneksi dalam topologi ring secara
virtual. Data yang dikirimkan biasanya
akan bergeser satu per satu dari bit pertama hingga bit kedelapan. Setelah
register bergeser keluar, berarti master dan slave sudah bertukar data. Lalu
selanjutnya akan bergantian slave dan master. Jika data yang dikirim banyak, maka
shift register akan diisi ulang dengan data yang baru. Lalu proses
pengirimannya pun diulang. Proses pengiriman akan dihentikan jika master
mengirim sinyal toggle untuk mengakhiri pemilihan slave.
Untuk
lebih jelasnya, mari kita lihat gambar berikut ini:
Gambar 4. Proses Transfer Data
Pada
gambar 4, bisa kita lihat saat clock dari master memberikan tAnda ke slave
device, shift register akan menggeser data di bit A0 dari master, menempati bit
ke 7 dari slave device. Lalu bit B0 dari slave device akan menempati bit ke 7
dari master device. Begitulah proses berulang dan terjadi setiap ada clock dari
master.
Data
dari tiap bit baik dari master maupun slave device akan bergeser 1 bit sesuai
dengan clock dari master. Selanjutnya kita akan melihat apa yang terjadi saat
clock mencapai hitungan ke 8. Bisa kita lihat pada gambar 5, semua data sudah
berpindah dari master ke slave dan dari slave ke master. Hal ini membuktikan
bahwa komunikasi SPI adalah komunikasi serial full duplex. Biasanya clock akan member tAnda bahwa
SPI akan berakhir dan master akan mengulangi untuk memilih slave device.
Gambar 5. Transfer Data Lengkap |
Jika
Anda masih bingung, saya akan menyimpulkan beberapa poin dari pembahasan di
atas:
- Kedua
device baik master maupun slave akan menempatkan data yang akan ditransfer
ke dalam shift register mereka sebelum komunikasi serial dimulai.
- Master
menghasilkan 8 pulsa untuk menggeser nilai setiap bit yang ada pada shift
register baik slave maupun master. Setelah 8 clock selesai, master akan
memberikan 1 bit informasi sebagai tAnda komunikasi dan sebaliknya dari
slave ke master.
- Setelah
8 clock selesai, master akan menerima data dari slave yang sudah ada di
shift register master dan slave akan menerima data dari master yang
tersimpan di shift register slave device.
- Penutup
Demikian penjabaran singkat tentang “Pengetahuan Dasar Komunikasi SPI (Serial Peripheral Interface)”. Dikarenakan pembahasan sudah terlalu panjang, untuk selanjutnya
akan kita bahas tentang contoh perancangan atau penggunaan modul menggunakan
komunikasi SPI. Jangan lupa buat yang ingin mempelajari tentang Arduino baik
Hardware maupun Software atau program silakan follow akun sosial media saya difacebook “fungkyking” juga diblog saya http://festyy.com/wNiBaj dan subscribe serta Like channel youtube saya (fungky king) https://www.youtube.com/channel/UCWbN7TqlN68FxeFY7uCNhkA untuk
melihat tulisan-tulisan serta hasil rancangan alat-alat berbasis mikrokontroler
yang kami buat. Kami juga menerima pembuatan alat-alat elektronika baik untuk
penelitian ataupun alat untuk syarat kelulusan.
Demikian pembahasan singkat yang dapat dibahas, mohon
maaf jika terdapat kesalahan dalam penulisan yang mana semua ini semata-mata
hanya opini pribadi berdasarkan pengalaman. Jika ada kekurangan dan tambahan
dari materi pembahasan yang dibahas silahkan dapat teman-teman sertakan pada
kolom komentar tambahan materi yang ingin disampaikan, sampaikan pertanyaan dan
isi kolom komentar dengan bijak.
Terima Kasih,
Salam Otomatisasi
Afriansyah, S.T.
(Fungky King)
fungkyking01@gmail.com
Kata
Kunci / Keywords: ATMEGA, Arduino, Arduino IDE, Arduino UNO, Bahasa C,
fungkynotes.blogspot.co.id, fungky corporation, fungky king, microcontroller,
otomatis, pemprograman, programming, Programmable Logic Controllers
(PLC), NodeMCU, ESP8266, Internet of Things (IoT), Wi-Fi, PROSESOR TERTANAM
(EMBEDED PROCESSOR), PWM, ADC, LED, Blink, I2C (Inter-Integrated Circuit), Two-wire (TWI), SPI (Serial Peripheral Interface)
Referensi / Reference:
- www.arduino.ac.id
- http://festyy.com/wNiBaj
- http://destyy.com/wMatJW
- http://arduino.cc/en/Main/Software
- www.google.com
- http://www.insinyoer.com
- https://tutorkeren.com/
- en.wikipedia.org
- maxembedded.com
- learn.sparkfun.com
- Barnett, Cull, Cox. 2007.
Embedded C Programming and the Atmel AVR 2nd ed. Nelson Education, Ltd.:
Canada
- 8-bit Atmel Microcontroller
with 128Kbytes In-System Programmable Flash: ATMEGA128
- Atmel, AVR318: Dallas 1-Wire Master on tinyAVR and megaAVR
- Afriansyah. 2012. Pengukur Kadar pH Air Berbasis Mikrokontroler ATMega 8, TE-UGM, Yogyakarta.
- https://fungkynotes.blogspot.com/2019/03/menghubungkan-aplikasi-arduino-ide.html
- https://fungkynotes.blogspot.com/2019/02/instruksi-instruksi-dasar-pada.html
- https://fungkynotes.blogspot.com/2019/02/apa-itu-sketch-arduino.html
- http://arduino.cc/en/Guide/Windows
No comments:
Post a Comment
Berfikirlah kreatif dengan komentar yang bijak. Salam Otomatisasi.!