Jumat, 18 Maret 2016

Serial Peripheral Interface (SPI) pada Microcontroller ATMega328

Blok diagram komunikasi dengan SPI pada UC Atmega328 diperlihtakan pada gambar 1. Dua device atau lebih jika dipergunakan untuk berkomunikasi dengan metode SPI maka salah satu dari device tersebut harus disetting sebagai master. Metode ini menrapkan sistem Master dan Slave dalam berkomunikasi. Master memegang kendali terhadap pembangkitan serial clock (SCK) dan Select Slave (SS). Selain pin SCK dan SS, pada metode SPI sangat diperlukan pin Mater In Serial Out (MISO) dan PIN Master out Serial in (MOSI). 


  Gambar 1. Blok diagram komunikasi SPI pada UC Atmega328
 
Interkoneksi metode SPI diperlihatkan pada gambar 2. Pada metode ini, diperlihatkan pada gambar 2, dipergunakan dua unit shift register, dan master clock generator, dikenal dengan nama serial clock (SCK). Master memulai (menginisialisasi) komunikasi dengan mengendalikan pin SS menjadi LOW terhadap Slave yang dituju oleh Master. Kemudian Master dan Slave mempersiapkan shift register masing masing. Setelah Master dan Slave telah siap untuk berkomunikasi, Master membangkitkan pulsa SCK agar pertukaran data dapat terlaksana. Setelah paket data terkirim, Master akan mengendalikan pin Slave Select (SS pin) menjadi high.



 Gambar 2. Interkoneksi antara Master dan Slave pada komunikasi SPI

 
Komunikasi SPI ini memiliki keistimewaan dibandingkan dengan komunikasi lainnya. Keistimewaan tersebut adalah pada saat yang bersamaan, Master dan Slave dapat sama sama mengirimkan data. Sebagai contoh Master ingin mengirimkan data 0b10001101 (0x8E) ke Slave dan Slave juga ingin mengirimkan data 0b00110010 (0x32) ke Master. Ketika SS pin dalam keaadaan LOW, pada clock pertama, shift register pada Master dan Slave akan secara bersamaan mengeser isi shift register mereka kekiri, Slave akan menerima bit pertama, data yang dikirimkan Master, pada LSB registernya. Pada saat yang bersaman, Master juga akan menerima bit pertama, data yang dikirimkan Slave, pada LSB registernya. Gambar 3 memperlihatkan komunikasi SPI.

  
    
Gambar 3. Pengiriman Data secara bersamaan pada Master dan Slave

Port SS, MOSI, MISO, dan SCK pada UC Atmega328 terletak masing masing pada pin PORTB2, PORTB3, PORTB4, dan PORTB5. Interkoneksi Master dan Slave, baik Master maupun Slave keduanya UC buatan Atmel, adalah terhubung seperti gambar 2. Hal ini berarti pin MOSI bertindak sebagai data output ketika UC tersebut sebagai Master dan sebagai data input apabila UC disetting sebagai input. Begitu juga dengan pin MISO, pin tersebut sebagai data input ketika UC sebagai Master tetapi sebagai data output jika diperlakukan sebagai Slave.
Interkoneksi, komunikasi SPI anatar UC buatan Atmel, pada gambar 2 tidak berlaku jika Master dan Slave bukan device buatan atmel. Gambar 4 memperlihatkan interkoneksi SPI antara UC Atmel dengan device buatan pabrik STMicroelectronics. Untuk melakukan komunikasi, pin Chip Select Not (CSN) harus diberikan pulsa Low. Jika pin CSN diberikan sinyal high, maka device tidak aktif dan Serial Data Output (SDO) merupakan high impedance. Satu lagi pin yang bersifat opsional, pada device produksi STMicroelectronics, adalah pin Failure Status (FSTAT). Pin FSTAT bersifat Open-Drain Output sehingga jika pin ini dipergunakan maka sebuah pull-up resistor harus dipergunakan.
            
Contoh device lain yang mempergunakan komunikasi SPI adalah EEPROM 25LC128 buatan Microchip. Kita akan membahas EEPROM tersebut secara khusus karena untuk mengaksesnya diperlukan perlakuan khusus. Sebagai contoh adalah chip ini mengandung 8 bit register instruksi. dan untuk mengaksesnya melalui pin Serial Input. Tabel 2 memperlihatkan seluruh intrusksi yang terdapat pada register EEPROM tersebut. Seluruh pengiriman, baik alamat maupun data, memiliki format MSB dikirim pertama kali dan bit LSB dikirim paling akhir.

EEPROM 25LC128
 
EEPROM 25LC128 atau 25AA128 adalah EEPROM yang memiliki kapasitas 128 Kb dengan kecepatan clock (SCK) dapat mencapai 10 MHz. Gambar 5 memperlihatkan EEPROM 25LC128 beserta pin out chip tersebut, fungsi nama nama pin tersebut diperlihatkan pada tabel 1. Ada dua nama pin yang baru dari chip buatan Microchip tersebut yaitu pin WP dan pin HOLD yang keduanya aktif LOW. Dilengkapinya HOLD pin pada chip tersebut memungkinkan komunikasi dapat dipause sehingga dapat dimamfaatkan untuk melayani interrupt jika UC mengalami interrupt. Untuk mengaksesnya CS pin harus LOW dan HOLD pin harus High, Kedua kondisi tersebut berlaku untuk semua mode operasi,
                                                             
                                                             Tabel 1. Pinout EEPROM 25LC128
Gambar 5. Pin out dan penjelasannya dari EEPROM 25LC128 
Tabel 2. Instruksi pada EEPROM 25LC128
Pada proses pembacaan yaitu UC meminta data dari EEPROM 25LC128, dimulai dengan Master atau UC mengirimkan READ Instruction (0000 0011) kemudian diikuti oleh 16 bit alamat memory tempat data disimpan pada EEPROM. Data tersebut kemudian digeser keluar (ditransmit) melalui Serial Out pin. Data yang terdapat pada alamat berikutnya dapat dibaca secara sequensial seiring dengan pulsa clock SCK yang dibangkitkan oleh Master. Hal ini dimungkinkan karena Address Pointer akan ditambahkan secara otomatis kealamat berikutnya. Untuk lengkapnya proses pembacaan disajikan secara diagram pada gambar 6 dan gambar 7 merupakan diagram proses penulisan. 
 
Gambar 6. Urutan Proses Pembacaan (Read Operation) pada EEPROM 25LC128



Gambar 7. Urutan proses Penulisan (Write Operation) pada EEPROM 25LC128


 
Gambar 8. Urutan proses Penulisan (Write Operation) untuk satu halaman dengan maksimum data
                  sebanyak 64 data byte.

Hal yang istimewa pada EEPROM 25LC128 adalah memiliki instruksi Read Status Register dan instruksi Write Status Register. Kedua status register tersebut dapat dibaca setiap saat meskipun masih dalam operasi penulisan atau EEPROM masih dalam proses penulisan. Tabel 3 menggambarkan isi dari Status Register.
Tabel 3. Status Register
 
 
Bit WIP (Write-In-Process) menunjukkan bahwa EEPROM sedang sibuk dengan sebuah operasi penulisan, Jika bit ini dalam keadaan set, logika 1, maka sebuah opearsi penulisan sedang berjalan, tetapi jika bit ini dalam keadaan clear, berlogika 0, maka operasi penulisan telah selesai.
Bit Write Enable Latch (WEL) menunjukkan status dari write enable latch. Jika bit ini dalam keadaan set “1” maka operasi penulisan ke array memory diperkenankan tetapi jika bit ini dalam keadaan clear “0” maka penulisan memory array dihalangi. Status dari bit ini dapat selalu diup-date melalui perintah WREN dan WRDI.
Bit BP0 dan Bit BP1 merupakan Block Protection yang mengindikasi bahwa block yang sedang aktif sedang write-protected. Kedua bit ini disetting oleh programmer melalui instruksi WRSR. Gambar 8 menunjukkan diagram waktu dari RDSR dan gambar 9 diagram waktu WRSR. User dapat memprotect seluruh array memory, ½ array memory, ¼ array memory atau sama sekali tidak ada array memory yang diprotect. Tabel 4 memperlihatkan array protection.
  Gambar 8. READ STATUS REGISTER TIMING SEQUENCE (RDSR)
 
Gambar 9. WRITE STATUS REGISTER TIMING SEQUENCE (WRSR)
Tabel 4. Array Protection
 
Sisa bab ini akan mendiskusikan protokol SPI pada UC ATMega328. Pada mode transmit, UC hanya dilengkapi dengan single buffer. Hal ini berakibat byte (data dalam 8 bit) yang akan ditransmit tidak dapat ditulis pada SPI Data Register sebelum seluruh data pada buffer terkirim atau sebelum siklus pergeseran complete. Hal yang sama hendaknya juga diperhatikan pada mode receive. Seluruh kerja mode SPI ditentukan oleh pulsa clock yang dibangkitkan oleh SCK. Sehingga lebar pulsa pada posisi high dan pada posisi low haruslah lebih besar dari 2 kali siklus clock CPU.
Gambar 5 memperlihatkan potongan program untuk menginisialisasi UC sebagai master dengan nama fungsi “void SPI_MasterInit(void)”. Pada gambar tersebut juga diperlihatkan fungsi untuk mengirimkan data dengan nama fungsi “void SPI_MasterTransmit(char cData)”. DDR_SPI dalam contoh tersebut harus diganti dengan DDR yang mengendalikan pin-pin SPI tersebut. DD_MOSI, DD_MISO dan DD_SCK harus diganti dengan data direction atas nama pin-pin tersebut. Sebagai contoh jika MOSI diletakkan pada pin PB5, maka gantikan DD_MOSI dengan DDB5 dan DDR_SPI dengan DDRB.

Bersambung ke : 
                  Menambah I/O Port (I/O Ekspander)


1 komentar:

  1. Poker - JammyCity Casino Resort, NV - KTNV
    Poker - Omaha. 순천 출장샵 Poker, Rules and 의정부 출장마사지 Regulations; Texas Hold'em; Rules and Regulations; Poker Room; 화성 출장마사지 Table 오산 출장안마 Games; Live Poker. 광명 출장샵

    BalasHapus