Selamat pagi teman-teman sekalian. Pada kesempatan kali ini saya akan mendiskusikan tentang bus interface pada STM32F103C8T6. Sudah siap belum? Karena bisa dibilang, mulai artikel ini, materi sebenarnya sudah dimulai. Tapi santai dulu ya karena artikel ini masih saya masukkan dalam kategori warm up kok... Hehehe
Mungkin sebagian dari kalian bertanya-tanya, "Kenapa sih perlu mempelajari bus interface? Sebelumnya saya belajar mikrokontroler 8-bit gak perlu belajar bus interface juga sudah mahir kok!" Well, bagaimana ya cara menjelaskannya. Hmmm... Seperti yang kita diskusikan pada artikel sebelumnya, bahwa huruf 'A' dari ARM adalah Advanced. Jadi bisa dibilang ARM ini agak berbeda dengan mikrokontroler RISC 8-bit yang sudah umum, ATmega328 misalnya.
Jika pada ATmega328 kalian pasang crystall 16 MHz misalnya, maka frekuensi tersebut akan dipakai berjamaah, mulai dari CPU, Timer, USART, SPI, dan peripheral-peripheral lainnya. Berbeda dari ATmega328, STM32F103C8T6 memiliki konfigurasi clock yang agak rumit. Dengan memakai crystall 8 MHz, kalian bisa menghasilkan system clock maksimal 72 MHz! Meski begitu, frekuensi 72 MHz ini tidak bisa dipakai berjamaah. Beberapa peripheral hanya bisa memakai frekuensi maksimal 36 MHz. Perhatikan kata maksimal pada dua kalimat sebelumnya. Karena ini frekuensi maksimal, maka kalian juga bisa mengkonfigurasi clock dibawah angka maksimal. Konfigurasi clock pada ARM ini lebih bervariasi, bisa disesuaikan dengan kebutuhan atau juga selera programmer.
Sebelum kalian belajar mengkonfigurasi clock pada mikrokontroler ini (STM32F103C8T6), kalian harus paham dulu bagaimana bus interface pada mikrokontroler ini. Nah, sekarang sudah tahu kan, mengapa pada diskusi kali ini bertemakan bus interface? Ya, sebagai dasar untuk lebih mudah memahami konfigurasi clock yang akan kita bahas pada artikel selanjutnya. Oke, saatnya masuk ke materi. Coba kalian amati gambar di bawah ini:
Gambar di atas adalah blok diagram dari STM32F103C8T6. Di pojok kiri atas adalah CPU berarsitektur ARM Cortex M3 dengan maksimal frekuensi 72 MHz. Lalu di sebelah kanan ada memori flash 64 KB (pada gambar di atas tertulis 128 KB, itu untuk STM32F103 seri atas). Di bawah memori flash terdapat SRAM 20 KB. Kemudian di bagian bawah ada 2 bus yang menghubungkan peripheral. Yang pertama adalah APB1 yang memiliki frekuensi maksimal 36 MHz. Yang kedua adalah APB2 yang memiliki frekuensi maksimal 72 MHz. Untuk lebih jelasnya, simak gambar di bawah:
Agar mudah dipahami, kita sederhanakan blok diagram di atas menjadi gambar seperti di bawah ini:
Agar lebih mudah dipahami lagi, mari kita beri warna pada bus yang akan kita bahas.
Semua komponen dalam mikrokontroler sebenarnya saling bertukar informasi satu sama lain melalui bus interface. Pertama-tama perhatikan bus yang ada di sebelah kanan CPU yang berwarna merah, pink, dan hijau. Bus tersebut memiliki nama ICode, DCode, dan System. Ketiga bus itu kita bisa menyebutnya Advanced High-Performance Bus(AHB)-Lite Bus. Untuk penjelasannya adalah sebagai berikut:
Semua komponen dalam mikrokontroler sebenarnya saling bertukar informasi satu sama lain melalui bus interface. Pertama-tama perhatikan bus yang ada di sebelah kanan CPU yang berwarna merah, pink, dan hijau. Bus tersebut memiliki nama ICode, DCode, dan System. Ketiga bus itu kita bisa menyebutnya Advanced High-Performance Bus(AHB)-Lite Bus. Untuk penjelasannya adalah sebagai berikut:
- ICode, dikenal juga dengan nama I-bus. Huruf 'I' disini mempunyai arti Instruction. Bus ini menghubungan antara CPU dengan Flash Memory Instruction Interface (FLITF). Melalui I-bus, CPU mengambil instruksi yang tersimpan pada memori flash.
- DCode, dikenal juga dengan nama D-bus. Huruf 'D' disini mempunyai arti Data. D-bus juga menghubungkan CPU dengan FLITF namun melalui Bus Matrix terlebih dahulu. Melalui D-bus, CPU membaca constant data. Constant data yang dimaksud adalah variabel tipe konstan (Read Only) yang kita tulis pada program.
- System, dikenal juga dengan nama S-bus. Huruf 'S' disini mempunyai arti System. Melalui S-bus, CPU mengakses SRAM dan semua peripheral. Namun melalui Bus Matrix terlebih dahulu.
Baik, saya rasa istirahatnya sudah cukup. Selanjutnya kita akan mendiskusikan tentang S-bus yang pada gambar di atas saya warnai hijau. Seperti yang sudah dijelaskan di atas, S-bus menghubungkan CPU ARM Cortex M3 dengan SRAM dan peripheral.
Coba kalian perhatikan AHB System bus di atas yang menghubungkan CPU dengan peripheral. AHB system bus adalah bus dengan performa tinggi yang bisa beroperasi hingga frekuensi 72MHz (maksimal). Kemudian bus ini menuju sebuah jembatan (Bridge) sehingga terpecah menjadi 2, yaitu APB1 (biru) dan APB2 (kuning). APB sendiri memiliki kepanjangan Advanced Peripheral Bus.
Perlu diingat, APB1 dan APB2 berjalan dengan frekuensi yang berbeda. APB1 hanya dapat beroperasi hingga frekuensi 36MHz (maksimal). Sedangkan APB2 dapat beroperasi hingga frekuensi 72MHz (maksimal). Hal ini perlu kalian ingat agar nanti tidak bingung saat mengkonfigurasi suatu peripheral. Misalkan kita ingin membuat timer dengan frekuensi 10Hz, tentu peripheral timer yang terhubung dengan APB1 mungkin berbeda konfigurasinya dengan timer yang terhubung pada APB2 karena berjalan pada frekuensi yang berbeda. Begitu pula dengan peripheral-peripheral lainnya. Jadi, ingat-ingat ya!!!
Terakhir, coba kalian catat peripheral apa saja yang terhubung dengan APB1 dan APB2 masing-masing pada tabel yang berbeda, lalu amati. Apakah semua timer berada pada APB yang sama? Apakah semua SPI berada pada APB yang sama? Apakah semua USART berada pada APB yang sama?
Warm Up #3 Sekilas tentang Bus Interface STM32F103C8T6
Reviewed by Puthut Giri
on
12.49
Rating:
Tidak ada komentar: