Serial Pheriferal Interface ( SPI)

11
Serial Pheriferal Interface ( SPI ) Kelompok : 1 Agus Setiawan A. Rifqy A. Shafwany Dera Fatu R. Diky Permadi

Transcript of Serial Pheriferal Interface ( SPI)

Page 1: Serial Pheriferal Interface ( SPI)

Serial Pheriferal Interface ( SPI )Kelompok : 1• Agus Setiawan• A. Rifqy• A. Shafwany• Dera Fatu R.• Diky Permadi

Page 2: Serial Pheriferal Interface ( SPI)

Serial Pheriferal Interface ( SPI )The Serial Peripheral Interface atau SPI bus adalah data serial sinkron link, standar de facto , dinamai oleh Motorola , yang beroperasi dalam modus full duplex . Hal ini digunakan untuk jarak pendek , komunikasi penguasa tunggal , misalnya dalam embedded system , sensor , dan kartu SD . Perangkat berkomunikasi dalam modus master / slave mana perangkat master memulai frame data . Beberapa perangkat budak diperbolehkan dengan budak individu pilih baris . Kadang-kadang SPI disebut empat-kawat bus serial, kontras dengan tiga , dua , dan satu -kawat bus serial. SPI sering disebut sebagai SSI ( Synchronous Serial Interface) .

Page 3: Serial Pheriferal Interface ( SPI)

Antarmuka SPI bus menetapkan empat sinyal logika : SCLK : Serial Clock ( output dari master) .Mosi : Master Output, Slave Input ( output dari master) . MISO : Guru Input, Slave Output ( output dari budak ) . SS : Slave Pilih ( aktif rendah , output dari master) .

Page 4: Serial Pheriferal Interface ( SPI)

Operasi [ sunting ] SPI bus dapat beroperasi dengan perangkat master tunggal dan dengan satu atau lebih perangkat budak . Jika perangkat budak tunggal digunakan , pin SS mungkin sudah ditetapkan dengan logika rendah jika budak mengijinkannya. Beberapa budak memerlukan tepi jatuh chip pilih sinyal untuk memulai suatu tindakan , contoh adalah Maxim MAX1242 ADC , yang dimulai konversi pada → transisi rendah tinggi . Dengan beberapa perangkat budak , sinyal SS independen diperlukan dari master untuk setiap perangkat budak . Kebanyakan perangkat budak memiliki output tri-state sehingga sinyal MISO mereka menjadi impedansi tinggi ( logis terputus ) bila perangkat tidak dipilih . Perangkat tanpa output tri-state tidak dapat berbagi segmen bus SPI dengan perangkat lain ; hanya satu budak tersebut bisa berbicara dengan master , dan hanya chip pilih dapat diaktifkan .

Page 5: Serial Pheriferal Interface ( SPI)

Transmisi dataTransmisi data Sebuah pengaturan perangkat keras khas menggunakan dua shift register untuk membentuk antar -chip melingkar penyangga Untuk memulai komunikasi , master bus pertama mengkonfigurasi jam , menggunakan frekuensi kurang dari atau sama dengan frekuensi maksimum perangkat budak mendukung . Frekuensi tersebut biasanya hingga beberapa MHz . Master kemudian mengirimkan logika 0 untuk chip yang diinginkan atas chip pilih baris . Sebuah logika 0 ditransmisikan karena chip pilih baris aktif rendah , yang berarti keadaan off adalah logika 1 ; pada ditegaskan dengan logika 0 Jika masa tunggu diperlukan ( seperti untuk analog - ke-digital konversi ) , maka master harus menunggu setidaknya periode waktu sebelum mulai mengeluarkan siklus jam .

Page 6: Serial Pheriferal Interface ( SPI)

Selama setiap siklus clock SPI , sebuah transmisi data full duplex terjadi : master mengirimkan sedikit pada garis mosi ; budak membacanya dari baris yang sama budak mengirimkan sedikit pada garis MISO ; master membacanya dari baris yang sama Tidak semua transmisi memerlukan keempat operasi ini menjadi berarti , tetapi mereka terjadi

.

Page 7: Serial Pheriferal Interface ( SPI)

Diagram waktu ditampilkan ke kanan . Waktunya lebih lanjut dijelaskan di bawah ini dan berlaku untuk kedua master dan perangkat slave . Pada CPOL = 0 nilai dasar jam adalah nol Untuk CPHA = 0 , data yang diambil pada jam itu meningkat tajam (rendah → transisi tinggi) dan data disebarkan pada tepi jatuh ( tinggi → clock rendah transisi ) . Untuk CPHA = 1 , data yang ditangkap pada jatuh tepi jam dan data disebarkan pada sisi kenaikan . Pada CPOL = 1 nilai dasar jam adalah salah satu ( inversi CPOL = 0 ) Untuk CPHA = 0 , data diambil pada jatuh tepi jam dan data disebarkan pada sisi kenaikan . Untuk CPHA = 1 , data yang diambil pada sisi kenaikan jam dan data disebarkan pada tepi jatuh . Artinya, CPHA = 0 berarti sampel pada ( pertama ) jam terdepan , sementara CPHA = 1 berarti sampel pada trailing ( kedua ) jam tepi , terlepas dari apakah itu jam tepi naik atau turun . Perhatikan bahwa dengan CPHA = 0 , data harus stabil untuk setengah siklus sebelum siklus jam pertama .

Page 8: Serial Pheriferal Interface ( SPI)
Page 9: Serial Pheriferal Interface ( SPI)

The Mosi dan MISO sinyal biasanya stabil ( pada titik-titik penerimaan mereka ) untuk setengah siklus sampai jam transisi berikutnya . SPI master dan slave perangkat mungkin juga data sampel pada titik-titik yang berbeda dalam setengah siklus . Hal ini menambah lebih banyak fleksibilitas untuk saluran komunikasi antara master dan slave . Beberapa produk menggunakan konvensi penamaan yang berbeda . Sebagai contoh, TI MSP430 menggunakan UCCKPL nama bukan CPOL , dan UCCKPH adalah kebalikan dari CPHA . Ketika menghubungkan dua chip bersama-sama , nilai-nilai inisialisasi fase jam harus diperiksa untuk memastikan menggunakan pengaturan yang tepat .

Page 10: Serial Pheriferal Interface ( SPI)

Nomor modus

Nomor modus Kombinasi polaritas dan fase sering disebut sebagai mode yang umumnya bernomor sesuai dengan konvensi berikut , dengan CPOL sebagai bit urutan tinggi dan CPHA sebagai urutan rendah bit : Untuk " Microchip PIC " / " ATMEL AVR " / " berbasis ARM " mikrokontroler :

Modus SPI

Jam Polaritas ( CPOL / CKP ) Jam Ujung ( CKE /

NCPHA )

0 0 1

1 0 0

2 1 0

3 1 1

Page 11: Serial Pheriferal Interface ( SPI)

Contoh bit -banging protokol utama SPI [ sunting/ *  * Bersamaan mengirim dan menerima byte pada SPI .  *  * Polaritas dan fase diasumsikan kedua 0 , yaitu :  * - Input data ditangkap pada meningkatnya tepi SCLK .  * - Output data disebarkan pada tepi jatuh dari SCLK .  *  * Mengembalikan byte yang diterima .  * / uint8_t SPI_transfer_byte ( uint8_t byte_out ) {     uint8_t byte_in = 0 ;     bit uint8_t ;       untuk ( bit = 0x80; bit; bit >> = 1 ) {         / * Shift- keluar sedikit ke garis mosi * /         write_MOSI ( ( byte_out & bit ) TINGGI : RENDAH ? ) ;           / * Keterlambatan untuk setidaknya waktu setup peer * /         delay ( SPI_SCLK_LOW_TIME ) ;           / * Tarik garis jam tinggi * /         write_SCLK ( TINGGI ) ;           / * Shift- in sedikit dari jalur MISO * /         if ( read_MISO ( ) == TINGGI )             byte_in | = bit ;           / * Keterlambatan untuk setidaknya peer waktu penahanan * /         delay ( SPI_SCLK_HIGH_TIME ) ;           / * Tarik garis clock rendah * /         write_SCLK ( LOW ) ;     }       kembali byte_in ; }