Komunikasi MCS51
Data
SPI
pada
Mikrokontroler
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 me tode 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:
1
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
2
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
3
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.
4
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.
5
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 ; }
6
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.
7
8
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.
9
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 sec ara 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.
10