Komunikasi Data SPI pada Mikrokontroler MCS51 · PDF file7 Komunikasi data SPI secara Hardware...
Transcript of Komunikasi Data SPI pada Mikrokontroler MCS51 · PDF file7 Komunikasi data SPI secara Hardware...
1
Komunikasi Data SPI pada Mikrokontroler
MCS51
Amin Mutohar
Embedded System Laboratory
Program Studi Fisika
Institut Teknologi Bandung
Copyleft © 2008, Si Cicil Cicil ([email protected])
SPI (serial peripheral interface bus) m erupakan salah satu metode
pengiriman data dari suatu devais ke devais lainnya. Metode ini
merupakan metode yang bekerja pada metode full duplex dan merupakan
standar sinkronasi serial data link yang dikembangkan oleh Motorola.
Pada SPI, devais dibagi menjadi dua bagian yaitu master dan slave
dengan master sebagai devais yang menginisiasi pengiriman data. Dalam
aplikasinya, sebuah master dapat digunakan untuk mengatur pengiriman
data dari atau ke beberapa slave sekaligus. Kadang-kadang, SPI disebut
juga dengan “four wire” serial bus untuk membedakannya dengan bus
serial tiga, dua, dan satu kebel.
Pin – Pin Penghubung pada SPI
Komunikasi serial data antara master dan slave pada SPI diatur melalui
4 buah pin yang terdiri dari SCLK, MOSI, MISO, dan SS. Berikut ini
adalah penjelasan singkat mengenai ke 4 pin tersebut:
2
SCLK (serial clock) merupakan data biner yang keluar dari master ke
slave yang berfungsi sebagai clock dengan frekuensi tertentu. Clock
merupakan salah satu komponen prosedur komunikasi data SPI. Dalam
beberapa devais, istilah yang digunakan untuk pin ini adalah SCK.
MOSI (master out slave input) merupakan pin yang berfungsi sebagai
jalur data pada saat data keluar dari master dan masuk ke dalam slave.
Istilah lain untuk pin ini antara lain SIMO, SDI, DI, dan SI.
MISO (master input slave output) merupakan pin yang berfungsi sebagai
jalur data yang keluar dari
slave
dan mesuk ke dalam
master
. Istilah lain
untuk pin ini adalah SOMI, SDO, DO, dan SO.
SS (slave select ) merupakan pin yang berfungsi untuk mengaktifkan slave
sehingga pengiriman data hanya dapat dilakukan jika slave dalam
keadaan aktif (active low). Istilah lain untuk SS antara lain CS (chip
select), nCS, nSS, dan STE (slave transmit enable) .
Pin SCLK, MOSI, dan SS merupakan pin dengan arah pengiriman data
dari master ke slave. Sebaliknya, MISO mempunyai arah komunikasi
data dari slave ke master. Pengaturan hubungan antara pin SDO dan SDI
harus sesuai dengan ketentuan. Pin SDO pada master harus
dihubungkan dengan pin SDI pada slave, begitu juga sebaliknya. Hal ini
penting untuk diperhatikan untuk menghindari terjadinya kesalahan
prosedur pada pengiriman data. Istilah pin -pin SPI untuk berbagai devais
mungkin saja mempunyai istilah yang berbeda dengan istilah di atas
tergantung produsen yang membuatnya.
Prosedur Operasi SPI
3
Komunikasi data SPI dimulai pada saat master mengirimkan clock
melalui SCK dengan frekuensi lebih kecil atau sama dengan frekuensi
maksimum pada slave. Kemudian, master memberi logika nol pada SS
untuk mengaktifkan slave sehingga pengiriman data (berupa siklus clock)
siap untuk dilakukan. Pada saat siklus clock terjadi transmisi data full
duplex terjadi dengan dua keadaan sebagai berikut:
Master mengirim sebuah bit pada jalur MOSI, slave membacanya pada
jalur yang sama.
Slave mengirim sebuah bit pada jalur MISO, master membacanya pada
jalur yang sama..
Transmisi dapat menghasilkan beberapa siklus clock. Jika tidak ada data
yang dikirim lagi maka master menghentikan clock tersebut dan
kemudian menon-aktifkan slave.
Diagram Pewaktuan
Diagram pewaktuan (timing diagram) SPI dimulai pada saat SS
diaktifkan (low). Pada saat tersebut siklus clock (cycle #) dimulai, pada
contoh diatas dalam satu siklus terdapat 8 bit pengir iman data. Saat SS
aktif, MISO/MOSI mulai mengirimkan data mulai dari MSB (
most
significant bit) data tersebut. Pada saat clock berubah maka proses
pengiriman data dilanjutkan pada bit yang lebih rendah. Proses tersebut
berlangsung sampai pengiriman data selesai dengan mengirimkan bit
LSB (least significant bit) dan siklus clock berakhir serta SS kembali
dinon-aktifkan (high). Pada saat ini biasanya slave mengirimkan
interrupt ke master yang mengindikasikan bahwa pengiriman data telah
selesai dan siap untuk melakukan pengiriman data selanjutnya. Dalam
4
diagram pewaktuan, clock mempunyai beberapa mode pengaturan pada
polaritas (CPOL) dan fasa (CPHA). Pengaturan kedua mode tersebut jelas
terlihat perbedaannya pada ilustrasi di atas.
Konfigurasi SPI Slave Independen
Pada konfigurasi ini, pemilihan slave independen untuk masing-masing
slave. Karena pin MISO dihubungkan secara bersamaan maka
pengiriman data dapat dipilih berdasarkan pin SS yang diaktifkan.
Konfigurasi SPI Daisy Chain
Pada konfigurasi ini pengiriman data dari atau ke master dilakukan
secara berantai pada beberapa slave.
5
SPI dapat digunakan untuk pengaturan beberapa peripheral oleh suatu
master (mikrokontroler atau PC). Berikut adalah beberapa peripheral
yang dapat menggunakan komunikasi data SPI:
Sensor: temperatur , tekanan, ADC, touchscreen
Control devices: audio codecs, digital potentiometers, DAC
Komunikasi: Ethernet, USB, USART, CAN, IEEE 802.15.4
Akses memori : flash and EEPROM
RTC (real-time clock)
LCD display
Beberapa MMC atau SD card
Pemrograman SPI pada Mikrokontroler MCS51
Mikrokontroler dapat digunaan sebagai master ataupun slave pada
komunikasi data SPI. Hal ini dikarenakan SPI merupakan sebuah
protokol yang sederhana sehingga dapat dengan mudah diterapkan pada
suatu sistem embedded. Hal ini juga berlaku pada mikrokontroler MCS51.
Bahkan, ada beberapa mikrokontroler dari keluarga ini yang mendukung
komunikasi data SPI secara hardware seperti pada AT89S8252/53. Oleh
karena itu, Komunikasi data SPI pada mikrokontroler MCS51 secara
umum dapat dibagi menjadi 2 macam, yaitu secara software dan
hardware . Keduannya dibedakan pada fitur dari mikrokontroler yang
digunakan. Jika sebuah mikrokontroler mempunyai fitur SPI serial
interface maka pemrograman SPI pada mikrokontroler tersebut hanya
mengatur register SPI yang ada pada SFR (
spesial function register
).
Komunikasi data ini disebut dengan komunikasi data SPI secara
hardware , seperti pada AT89S8252/53. Sebaliknya, jika sebuah
mikrokontroler tidak memiliki fitur SPI serial interface maka kominikasi
data SPI dilakukan dengan cara software dengan membangun protokol
SPI berdasarkan timing diagram-nya.
Komunikasi data SPI secara Software
Komunikasi ini dilakukan dengan cara menciptakan protokol SPI secara
software dengan menggunakan algoritma diagram pewaktuan SPI. Dalam
hal ini, pemrograman dilakukan untuk memenuhi prosedur pengiriman
data antara lain pengaturan SS, MOSI, MISO, dan SCK seperti pada
uraian sebelumnya.
6
Berikut ini adalah contoh-contoh pemrograman SPI secara hardware :
Prosedur pengiriman data
void SPI_Out (int b)
{
int i ;
for ( i = 7 ; i >= 0; i −−)
{
if (b & (1 << i ) ) SetMOSI( ) ;
else
ClearMOSI( ) ;
waitmicrosec(2) ;
SetSCK( ) ;
waitmicrosec(3) ;
ClearSCK( ) ;
waitmicrosec(2) ;
}
}
Prosedur Penerimaan data
int SPI_In ( )
{
int i , b = 0 ;
for ( i = 7 ; i >= 0; i −−)
{
SetSCK( ) ;
waitmicrosec(2);
if (GetMISO( )) b |= 1 << i ;
waitmicrosec(3);
ClearSCK( ) ;
waitmicrosec(2);
}
return b ;
}
7
Komunikasi data SPI secara Hardware
Komunikasi ini dilakukan dengan memanfaatkan fitur SPI yang ada
pada mikrokontroler. Seperti diagram blok di atas, Prosedur atau
protokol SPI sudah tersedia pada mikrokontroler. Pemrograman
dilakukan hanya untuk mengakses beberapa register yang ada pada
diagram blok tersebut. Register-register tersebut terdapat pada register
khusus SPI yang terdapat pada SFR yang terdiri dari SPCR (SPI control
register), SPSR (SPI status register ), dan SPDR (SPI data register).
Register-register tersebut terletak masing -masing terletak pada alamat
D5h, AAh, dan 86h seperti terlihat pada diagram SFR berikut.
9
SPCR terdiri dari 8 buah bit alamat yang digunakan untuk mengatur
proses komunikasi data SPI. Bit tersebut meliputi SPIE, SPE, DORD,
MSTR, SPOL, CPHA, SPR0 dan SPR1. SPIE digunakan untuk
mengaktifkan interupsi SPI dan terhubung dengan bit ES (IE.4) pada
register IE (interrupt enable). SPE digunaan untuk mengaktifkan
komuniksi data SPI sehingga digunakan sebagai penghubung register-
register SPI dengan pin-pin SPI pada mikrokontroler, yaitu SS (P1.4),
MOSI (P1.5), MISO (P1.6), dan SCK (P1.7). DORD digunakan untuk
memilih urutan pengiriman data, dari LSB atau MSB terlebih dahulu.
MSTR digunakan untuk mengatur mikrokontroler digunakan sebagai
master atau slave. CPOL dan CPHA digunakan untuk pengaturan
polaritas dan fasa dari clock seperti pada diagram pewaktuan di atas. Bit
terakhir, SPR0 dan SPR1 digunakan untuk mengatur frekuensi dari SCK
dengan 4 buah pilihan, yaitu 1/4, 1/16, 1/64, dan 1/128 dari frekuensi
osilator yang digunakan oleh mikrokontroler.
Register SPSR digunakan untuk melihat status pengiriman data pada
SPI. Bit yang digunakan dalam SPSR hanya 2 buah saja yaitu SPIF dan
WCOL. SPIF merupakan bit yang menandai bahwa suatu pengiriman
data telah selesai sedangkan WCOL merupakan bit yang menandai
bahwa pengiriman data sedang berlangsung.
Register SPDR merupakan regis ter yang menyimpan data yang terdapat
pada read data buffer SPI AT89S8252 seperti pada diagram blok SPI.
10
Kesimpulan
Komunikasi data SPI merupakan komunikasi data yang mengunakan
protokol pengiriman data SPI. Komunikasi ini dapat digunakan pada
mikrokontroler untuk berinteraksi dengan suatu perangkat. Prosedur SPI
merupakan prosedur yang digunakan untuk proses pengiriman data
antara master dan slave. Dalam pelaksaannya, prosedur tersebut harus
sesuai dengan diagram pewaktuan SPI sehingga pengiriman data dapat
dilakukan. Komunikasi data SPI dibedakan menjadi dua buah macam
berdasarkan fitur yang tersedia pada suatu mikrokontroler, yaitu
komunikasi data SPI secara software dan hardware .
Daftar Referensi
[1] Wikipedia: en.wikipedia.org.
[2] Jelmer Vernooij: Programming the AT89S8252 using SPI , 2003.
[3] Atmel: AT89S8252 Datasheet.
[4] Atmel: 8051 Microcontrollers Aplication Note, SPI Program Example.