Tutorial STM32 – 1 : Pertemuan Pertama
Beberapa tahun lalu saya pernah berbagi pengetahuan tentang bagaimana memulai belajar mikrokontroler terutama dengan arsistektur AVR buatan Atmel. Meskipun, akhir -akhir ini mengeksplorasi mikrokontroler AVR semakin dimanjakan saja dengan kemunculan berbagai varian development board dari Arduino.
Tapi kali ini saya tidak sedang ingin membahas Arduino, saya ingin memperkenalkan satu lagi mainan bagi mereka yang selalu haus akan hal baru. Perkenalkanlah, STM32. Mikrokontroler berbasis inti prosesor 32 bit RISC ARM Cortex-M7, Cortex-M4F, Cortex-M3, Cortex-M0+, dan Cortex-M0 dari STMicrelectronics. Mikrokontroler ini mempunyai frekuensi clock tinggi, umumnya berada pada kisaran 72MHz atau lebih. Bandingkan dengan arduino uno misalnya yang berjantung mikrokontroler 8 bit dengan frekuensi clock hanya 16MHz. Maka jangan bandingkan lagi bagaimana kecepatan pemrosesannya.
Sebentar… apa ? ARM? Sepertinya sering denger?
Yups, tentu ARM sudah tidak asing lagi bagi yang hobinya gonta ganti gadget dan selalu membaca bolak balik serta membandingkan spesifikasi smartphone satu dengan yang lain. Salah satu patokannnya adalah mikroprosesor yang digunakan.
Benar, ARM memang begitu luas digunakan salah satunya untuk smartphone, tablet dan lain sebagainya. Jadi dengan mempelajari arsitektur mikrokontroler STM32 yang juga berjantung ARM anda sudah selangkah lebih baik dalam mempelajari bagaimana smartphone anda bekerja.
Namun performa yang luar biasa dari STM32 harus menghadapi tantangan yang ekstra berat dalam hal dokumentasinya yang begitu sulit dipelajari. Untuk famili STM32F1 misalnya, pada situs resminya memiliki 1137 halaman reference manual, meskipun itu belum membahas tentang inti prosesor Cortex-M3.
Untung saja, kita tidak harus membaca semuanya untuk memulai pemrograman dengan STM32. Meskipun pada saatnya, untuk pemrograman lebih lanjut kita tetap perlu membaca reference manual tersebut. Tantangan yang begitu besar tersebut, memang tidak saya anjurkan untuk pemula yang baru mengenal mikrokontroler. AVR dan lini Arduino board adalah pilihan tepat bagi pemula. Baru kemudian, untuk tingkat menengah, anda bisa mengeksplorasi STM32. Meskipun dengan beberapa trik, STM32 juga bisa diprogram menggunakan Arduino IDE.
Berlawanan dengan Arduino yang menawarkan library dan toolchain yang sederhana ( tool-chain adalah sebuah sistem yang didalamnya terdapat compiler, assembler, linker, debugger, dan bermacam alat untuk memproses file biner) yang relatif mudah dipelajari oleh pemula. Pada STM32 kita akan dihadapkan pada banyak pilihan tool-chain, saya sendiri, menggunakan GNU ARM, karena sifatnya yang open source.
Namun kesederhanaan Arduino memiliki harga yang harus dibayar. Platform arduino tidak bisa untuk menangani proses yang terjadi secara paralel (concurrent tasking atau multi tasking). Misalkan program sebuah robot wall follower yang mengukur jaraknya terhadap dinding menggunakan sensor ultrasonik, tidak bisa sekaligus melakukan aktivitas lain, seperti memproses intensitas inframerah misalnya. Dalam platform Arduino, program itu harus dibuat dalam satu proses secara berurutan. Ketika kompleksitas sebuah program kian meningkat, tentu program tersebut akan berjalan lebih lamban ketimbang ketika mikrokontroler yang digunakan mampu mengakomodir multi tasking.
Belum lagi Arduino tidak menyediakan kapabilitas untuk debugging secara real time. Seorang programmer harus menampilkan sebuah variabel di programnya pada console serial atau LCD untuk melakukan debug. Jika programnya bersifat sederhana memang cukup menyeleseikan masalah. Namun ketika program semakin rumit, cara ini menjadi tidak efisien.
Dan pada akhirnya, keunggulan yang dimiliki STM32 dibandingkan platform Arduino adalah bahwa Arduino tidak mendukung real-time operating system (RTOS) yang sangat diperlukan dalam membangun sebuah sistem embedded yang kompleks.
Lalu apa yang kita perlukan untuk memulai memprogram STM32? Pertama, tentu adalah mikrokontroler STM32. Ada banyak jenis famili STM32 di luar sana, lalu mana yang kita pelajari lebih dulu?
Dalam beberapa tulisan saya selanjutnya, saya akan menggunakan keluarga seri STM32F1 yang merupakan seri mikrokontroler mainstream yang digunakan pada banyak aplikasi industri, kesehatan hingga consumer. Seri ini terdiri dari beberapa jajaran produk.
- STM32F100 Value line – CPU 24 MHz dengan kendali motor and fungsi CEC
- STM32F101 – CPU 36 MHz ,dengan Flash s/d 1 Mbyte.
- STM32F102 – CPU 48 MHz dengan USB FS
- STM32F103 – CPU 72 MHz, dengan Flash 1 Mbyte, kendali motor, USB dan CAN
- STM32F105/107 – CPU 72 MHz dengan MAC Ethernet MAC, CAN dan USB 2.0 OTG
Saya menggunakan STM32F103C8T6. Silahkan dicari fitur – fitur yang dimilikinya di situs resminya di link berikut .
Lalu bagaimana mendapatkan Evaluation Boardnya untuk bisa dieksplorasi?
Anda bisa membeli evaluation board STM32 berbagai seri yang beredar di pasaran, mulai dari Nucleo, Nuvoton hingga Discovery. Namun harganya relatif mahal berkisar 200 ribuan. Lalu bagaimana jika ingin membuat minimum system sendiri? apakah memungkinkan?
Tentu saja mungkin, namun berbeda dengan mikrokontroler AVR yang juga tersedia dalam bentuk DIP. Mikrokontroler STM32 hanya tersedia dalam QFP sehingga anda harus memiliki solder uap dan perangkat sejenisnya untk membuat minimum systemnya, berikut link skematik rangkaiannya jika anda ingin menyoldernya sendiri.
Pada prinsipnya anda bebas bereksplorasi menggunakan development board pilihan anda. Dalam beberapa tulisan saya selanjutnya, saya akan menggunakan minimum system STM32F103C8T6 atau lebih sering disebut dengan istilah bluepill versi hemat seperti berikut.
Catatan: Minimum System STM32F103C8T6 kini tersedia di TOKO BEY. Klik di sini untuk masuk halaman pembelian
Bentuknya kecil namun sudah lebih dari cukup untuk belajar mikrokontroler STM32. Pinout dari minimum system STM2F10C8T6 digambarkan sebagai berikut:
Seperti namanya minimum system, board ini belum dilengkapi dengan downloader yang berfungsi memasukkan program yang anda buat di komputer ke dalam mikrokontroler. Sehingga anda terlebih dahulu perlu mendapatkan downloader . Saya menggunakan ST-LINK V2. Seperti berikut
Catatan: ST-LINK V2 kini tersedia di TOKO BEY. Klik di sini untuk mengakses halaman pembelian
Ada cara lain untuk mendownload program ke dalam mikrokontroler yaitu menggunakan dongle serial to TTL PL2303HX namun itu tidak akan saya bahas dulu agar jangan terlalu panjang tulisan ini hehe.
Oke demikian, tulisan saya kali ini. Berikutnya saya akan bagaimana memulai mensetup environment untuk pemrograman STM32.
Salam Elektronika.
Untuk upload program dengan TTL kapan tutorialnya dibuat?
“Namun kesederhanaan Arduino memiliki harga yang harus dibayar. Platform arduino tidak bisa untuk menangani proses yang terjadi secara paralel (concurrent tasking atau multi tasking). Misalkan program sebuah robot wall follower yang mengukur jaraknya terhadap dinding menggunakan sensor ultrasonik, tidak bisa sekaligus melakukan aktivitas lain, seperti memproses intensitas inframerah misalnya. Dalam platform Arduino, program itu harus dibuat dalam satu proses secara berurutan. Ketika kompleksitas sebuah program kian meningkat, tentu program tersebut akan berjalan lebih lamban ketimbang ketika mikrokontroler yang digunakan mampu mengakomodir multi tasking.”
sedikit koreksi concurrent processing bisa dilakukan pada arsitektur apa saja termasuk 8051 (Apalagi AVR) contoh paling sederhana dengan tehnik “round robin” , mungkin yang di maksud adalah arduino tidak secara default memuatnya dalam library, sebab pembuatan kernel tidak memungkinkan dibuat modular, nah tugas kita adalah bagaimana memporting library yang sudah disediakan arduino yang secara defaultnya adalah tipe ‘blocking proccess’ menjadi asinkron agar dapat digunakan pada tehnik pemrograman yang multitasking.