Komunikasi Data SPI pada Mikrokontroler MCS51 · PDF file7 Komunikasi data SPI secara Hardware...

10
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) merupakan 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:

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.

8

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.