Interfacing
Materi 7: SPI Communication Disusun Oleh:
I Nyoman Kusuma Wardana
Outline • SPI Bus Protocol • SPI Programming
Kusuma Wardana - Interfacing 2013
2
SPI Bus Protocol
Kusuma Wardana - Interfacing 2013
3
SPI Bus Protocol • SPI : “Serial Peripheral Interface” • SPI bus interface yg menghubungkan berbagai divais, seperti ADC, DAC dan EEPROM • SPI dimulai oleh Motorola Corp (sekarang Freescale) namun skrg telah diadaptasi scr luas
Kusuma Wardana - Interfacing 2013
4
SPI Bus Protocol • SPI menggunakan 2 pin utk data transfer: 1. SDI (Din) 2. SDO (Dout) • Pengurangan jumlah jalur data akan mengurangi ukuran package dan power secara drastis • Skenario ini akan membuat SPI cocok diterapkan, terutama jika ukuran mnjd isu penting Kusuma Wardana - Interfacing 2013
5
SPI Bus Protocol • SPI bus memiliki SLCK (shift clock) utk mensinkronkan data transfer anata 2 chip • SPI jg memiliki CE (chip enable) digunakan utk menginisiasi dan mengakhiri transfer data SDI SDO Membentuk SPI 4-wire interface SCLK CE Kusuma Wardana - Interfacing 2013
6
SPI Bus Protocol • Pada banyak chip, SDI, SDO, SCLK dan CE diberi nama: MOSI, MISO, SCK dan SS • Terdapat jg standar lain yaitu 3-wire interface • Pd komunikasi 3-wire : pin yg digunakan SCLK, CE dan jalur data tunggal • 4-wire dpt diubah mnjd 3-wire ketika SDI dan SDO dijadikan satu jalur
Kusuma Wardana - Interfacing 2013
7
SPI Bus Protocol • Namun demikian, trdpt perbedaan mendasar antara 4-wire dgn 3-wire • Cek apakah suatu divais support utk kedua mode ini Contoh: • real time clock DS1306 RTC support utk kedua mode ini
Kusuma Wardana - Interfacing 2013
8
SPI Bus Protocol • Amati Gb berikut:
Kusuma Wardana - Interfacing 2013
9
SPI Bus Protocol How SPI Works • SPI terdiri dr 2 shift register master & slave • Trdapat clock generator pd sisi master utk mengaktifkan shift register • Clock input dr shift reg dpt berupa fallingatau rising-edge • SPI bersifat FULL DUPLEX dpt scr simultan mengirim dan menerima data Kusuma Wardana - Interfacing 2013
10
SPI Bus Protocol
Kusuma Wardana - Interfacing 2013
11
SPI Bus Protocol • Shift reg berukuran 8-bit • Ini berarti, setelah 8 clock isi dr kedua shift reg akan saling menggantikan • Ketika MASTER ingin mengirim 1 byte data MASTER akan menempatkan 1 byte data ke shift reg, kemudian men-generate 8 clock • Ketika MASTER ingin menerima 1 byte data SLAVE hrs menempatkan 1 byte pd shift regnya dan setelah 8 clock, data akan diterima oleh MASTER Kusuma Wardana - Interfacing 2013
12
SPI Bus Protocol SPI Read and Write • Pd koneksi SPI dgn uC kita gunakan uC sbg MASTER dan divais SPI sbg SLAVE • Ini berarti uC men-generate SCLK dan mensuplainya ke SCLK SPI divais • Protokol SPI menggunakan SCLK utk mensinkron-kan proses transfer 1 bit tiap waktu • MSB akan ditransfer terlebih dahulu Kusuma Wardana - Interfacing 2013
13
SPI Bus Protocol • Selama proses transfer CE harus dipertahankan tetap HIGH • Informasi (alamat dan data) ditransfer dlm grup 8-bit, dimana byte alamat diikuti secara langsung oleh byte data • Utk membedakan proses READ dan WRITE: • WRITE bit D7 pd byte address = 1 • READ bit D7 pd byte address = 0 Kusuma Wardana - Interfacing 2013
14
SPI Bus Protocol Clock Polarity and Phase • Sperti halnya pd USART transmiter dan receiver pd komunikasi SPI hrs memiliki clock yg SAMA • Pd komunikasi SPI clock polarity dan phase antara MASTER dan SLAVE harus SAMA • Freescale menamai CPOL (Clock Priority) dan CPHA (Clock Phase) Kusuma Wardana - Interfacing 2013
15
SPI Bus Protocol • Ketika CPOL = 0 maka nilai base dr clock adalah NOL • CPOL = 1 nilai base dr clock adlh SATU • CPHA = 0 sampel pd leading (first) clock edge • CPHA = 1 sampel pd trailing (second) clock edge
Kusuma Wardana - Interfacing 2013
16
SPI Bus Protocol Jika Base Clock = 0: • Leading(first) clock edge rising edge Jika Base Clock = 1: • Leading(first) clock edge falling edge
Kusuma Wardana - Interfacing 2013
17
Kusuma Wardana - Interfacing 2013
18
SPI Bus Protocol Single-byte Write • Langkah-langkah sbb: 1. Buat CE = 0 utk menulis 2. 8-bit alamat di shift reg, 1 bit tiap edge dr SCLK. Ingat A7 =1 utk operasi WRITE dan A7 akan ditransfer terlebih dahulu
Kusuma Wardana - Interfacing 2013
19
SPI Bus Protocol 3. Setelah 8-bit alamat terkirim, SPI divais akan menerima data dr alamat tsb scr langsung 4. 8-bit data di-shift, 1 bit tiap waktu di setiap edge dr SCLK 5. Buat CE = 1 utk mengindikasikan akhir dr siklus write
Kusuma Wardana - Interfacing 2013
20
SPI Bus Protocol Multibyte Burst Write • Burst mode writing cara yg efektif utk mengakses alamat yg berurutan • Pd mode ini Kita memberi address dr lokasi pertama diikuti oleh data pd alamat itu • Ketika CE = 0 byte yg berurutan akan alamat memori yg jg berurutan • Pd mode ini divais SPI scr internal menaikkan alamat lokasi dgn syarat CE = LOW Kusuma Wardana - Interfacing 2013
21
SPI Bus Protocol • Langkah2 sbb: 1. Buat CE = 0 utk menulis 2. 8-bit alamat di shift reg, 1 bit tiap edge dr SCLK. Ingat A7 =1 utk operasi WRITE dan A7 akan ditransfer terlebih dahulu
Kusuma Wardana - Interfacing 2013
22
SPI Bus Protocol 3. 8-bita data dr lokasi pertama disiapkan dan di shift (geser), 1 bit tiap waktu pd edge SCLK. Selanjutnya, cukup sediakan data byte berurutan, dan pastika CE = 0 4. Buat CE = 1 utk mengakhiri proses
Kusuma Wardana - Interfacing 2013
23
SPI Bus Protocol Single-byte Read • Langkah-langkah sbb: 1. Buat CE = 0 utk membaca 2. 8-bit alamat di shift reg, 1 bit tiap edge dr SCLK. Ingat A7 =0 utk operasi READ dan A7 akan ditransfer terlebih dahulu
Kusuma Wardana - Interfacing 2013
24
SPI Bus Protocol 3. Setelah 8-bit alamat terkirim, SPI divais akan mengirim data dr alamat tsb 4. 8-bit data di-shift, 1 bit tiap waktu di setiap edge dr SCLK 5. Buat CE = 1 utk mengindikasikan akhir dr siklus write
Kusuma Wardana - Interfacing 2013
25
SPI Bus Protocol Multibyte Burst Read • Burst mode reading cara yg efektif utk mengakses alamat yg berurutan • Pd mode ini Kita menyediakan address dr lokasi pertama diikuti oleh data pd alamat itu • Ketika CE = 0 byte yg berurutan akan alamat memori yg jg berurutan • Pd mode ini divais SPI scr internal menaikkan alamat lokasi dgn syarat CE = LOW Kusuma Wardana - Interfacing 2013
26
SPI Bus Protocol Langkah2 sbb: 1. Buat CE = 0 utk mulai menulis 2. 8-bit alamat di shift reg, 1 bit tiap edge dr SCLK. Ingat A7 =0 utk operasi READ dan A7 akan ditransfer terlebih dahulu
Kusuma Wardana - Interfacing 2013
27
SPI Bus Protocol 3. 8-bita data dr lokasi pertama disiapkan dan di shift (geser), 1 bit tiap waktu pd edge SCLK. Selanjutnya, cukup sediakan data byte berurutan, dan pastika CE = 0 4. Buat CE = 1 utk mengakhiri proses
Kusuma Wardana - Interfacing 2013
28
Daftar Pustaka • Daniel J.Pack and Steven F.Barrettt, 2008, Atmel AVR Microcontroller Primer: Programming and Interfacing, Morgan & Claypool Publisher • Mazidi, Naimi and Naimi, 2011, The AVR Microcontroller and Embedded System: Using Assembly and C, Prentice Hall • AVR ATmega16 Manual, Atmel Corporation Kusuma Wardana - Interfacing 2013
29