Skip to main content

1. Mengenal STM32F103C8T6 Bluepill


1.1. SELAMAT DATANG

Saya perkenalkan mikrokontroller 32-bit paling laku untuk dunia hobby, STM32F103C8T6...

Mikrokontroller STM32 adalah kelompok mikrokontroller 32-bit dari ST. Rangkaian produk STM32 diproduksi oleh ST utamanya dalam bentuk SMD, sehingga menyulitkan pembuatan sirkuit bagi hobbyist, untunglah ada satu produk breakout-board dari Cina dan dijual dengan harga sekitar 30 hingga 40 ribu rupiah-an di Bukalapak.com atau Tokopedia.com: development board STM32F103C8T6, yang berwarna biru (dan disebut Bluepill).

Diseluruh rangkaian blog ini, saya akan menceriterakan pengalaman saya belajar STM32F103C8T6 tersebut, dengan menggunakan KEIL UVISION dan STM32CubeMX.

Tulisan ini saya targetkan bagi anda yang siap melampaui dunia mikrokontroller 8-bit dan masih novice pada platform STM32, baik sebagai hobbyist (seperti saya), maupun engineers pemula. Anda saya anggap sudah kenal dengan mikrokontroller, tidak bermasalah untuk coding dalam bahasa C untuk embedded, juga dianggap anda memiliki pengetahuan tentang basic digital electronics, hingga bisa memahami peripheral interfaces yang disediakan oleh STM32 yang fantastik ini.


1.2. APA ITU STM32 ?

ke atas

Sebelum ini saya hanya bermain mikrokontroller 8-bit AVR, terutama AVR ATTiny-2313A (20-pin, 2KB flash memory, 128byte EEPROM, 128byte SRAM) dan ATMega-328P (untuk paket DIP: 28-pin, 32KB ISP flash memory, 1024KB EEPROM, 2KB SRAM).
Saya pilih produk Atmel karena belajarnya sangat dimudahkan dengan tersedianya IC dan breakout-boardnya di pasar lokal (off-line maupun online), serta sangat banyaknya referensi untuk belajar, baik berupa tulisan, buku, maupun contoh-contoh proyek. Lihat blog saya tentang hal ini.

Tapi kemudian dalam beberapa proyek, ternyata fasilitas yang disediakan AVR 8-bit terasa terbatas, dari jumlah pin maupun ukuran memory. ATmega2560 cukup besar namun harga breakout-boardnya jauh lebih mahal dibanding development board 32-bit yang kita sedang kenalkan ini...

a. Tentang STM32 Cortex-M

STM32 dari STMicroelectronics adalah sekumpulan keluarga mikrokontroller 32-bit yang secara spesifik dikembangkan untuk aplikasi (Cortex-A), embedded (Cortex-M) dan real-time (Cortex-R). STM32 Cortex-M dirancang berdasarkan/ mengikuti ARM® Cortex®-M cores: Cortex®-M0 untuk STM32F0, Cortex®-M3 untuk STM32F1 dan STM32F2, dan Cortex®-M4 untuk STM32F3, STM32F4 and STM32L4, serta Cortex®-M7 untuk STM32F7. Microkontroller ini mengombinasikan performa tinggi dengan peripheral kelas satu, yang membuatnya cocok untuk melakukan pekerjaan embedded terhebat.

Untuk memudahkan belajar, produsen STMicroelectronics menyediakan development board STM32-Discovery Kit dan STM32-Nucleo yang relatif murah untuk diutak-atik hingga jebol. Belakangan bahkan tersedia breakout-board super murah dari Cina di pasaran online, yaitu Bluepill STM32F103C8T6.

b. Tentang ARM Cortex-M3

Untuk memahami tentang ARM Cortex-M3 lebih jauh silahkan pelajari link berikut: https://developer.arm.com/ip-products/processors/cortex-m/cortex-m3

c. Tentang Seri STM32F1

Seri-STM32 F1 adalah kelompok pertama mikrokontroler STM32 yang berbasis pada inti ARM Cortex-M3 dan dianggap sebagai mikrokontroler ARM utama mereka. Seri-F1 telah berkembang seiring waktu dengan meningkatkan kecepatan CPU, ukuran memori internal, beragam periferal. Ada lima jalur F1: Konektivitas (STM32F105/107), performa (STM32F103), akses USB (STM32F102), akses (STM32F101), value (STM32F100).

Produk STM32 yang hampir pin-to-pin compatible dengan serie STM32 F1 adalah serie F3. Artinya anda akan dengan mudah untuk migrasi ke produk yang lebih tinggi levelnya.

Untuk memahami STM32 seri F1 lebih jauh silahkan pelajari link berikut: https://www.st.com/en/microcontrollers-microprocessors/stm32f1-series.html

d. Tentang STM32F103

Untuk memahami STM32 F103 lebih jauh silahkan pelajari link berikut: https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html

e. Tentang STM32-F103C8

Untuk memahami STM32 F103C8 lebih jauh silahkan download datasheetnya di link berikut: https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f1-series/stm32f103/stm32f103c8.html

dan disini: https://www.st.com/resource/en/datasheet/stm32f103c8.pdf


1.3. 8-BIT VERSUS 32-BIT

a. Tingkat Kesulitan Belajar

AVR sangat terkenal terutama adalah karena developmentnya relatif mudah dipelajari, itu disebabkan terutama AVR adalah mikrokontroller 8-bit.

STM32, sesuai namanya adalah 32 bit, jeroannya komplex sekali. Setiap anggota famili memiliki bus architecture dan peripheral berbeda: GPIO, Timer, Flash, RAM, Komunikasi (uart, i2c, spi, ...), ADC, dll. Setiap peripheral memiliki pilihan register, dan seterusnya. Sehingga Library programmingnya, baik CMSIS - bare metal programming menggunakan library dari ARM - atau HAL (Hardware Abstraction Layer) yang menggunakan STMcubeMX sangat komplex pula, sangat banyak, makan waktu sangat lama mempelajarinya. Sekali anda memilih library maka harus dipakai seumur hidup, karena mengulang belajar dari awal benar-benar makan waktu.

b. Perbandingan Kapasitas

https://resources.altium.com/p/8-bit-vs-32-bit-mcu-choosing-right-microcontroller-your-pcb-design

c. Perbandingan kecepatan

d. Perbandingan ukuran

8bit vs 32bit size.png

1.4. KENAPA DEVELOPMENT BOARD BLUEPILL ?

ke atas

Pertimbangan utama saya, karena maksud belajar disini adalah untuk hobi, maka 1) harus ekonomis dan mudah mendapatkan devicenya, 2) belajarnya relatif mudah (tersedia buku dan referensi contoh proyek 3) fasilitas yang disediakan device memadai untuk ukuran proyek yang saya inginkan: GPIO, RAM, flash, komunikasi, ADC, dll. 4). Harus dalam format development board, karena saya tidak mampu menyolder smd chip.
Jadi anda paham 'kan kenapa saya putuskan untuk belajar STM32 melalui development board Bluepill yang banyak dijual secara online dengan harga sangat murah, dengan ketersediaan contoh proyek yang banyak di internet :D

a. Sekilas Development board Bluepill dan Blackpill

b. Awas -- Kelemahan Bluepill

  • Banyak dari Bluepill yang beredar, mikrokontrollernya bukan produk ST, melainkan dari APEXMIC, Cina. APM32F103 adalah tiruan (bukan dari ARM) yang sangat mirip dengan STM32F103. Lihat penjelasan berikut APM32F103Cx, atau lihat sini juga. Jadi jangan kaget kalau saat anda download menggunakan KEIL µVision muncul error message yang bilang bahwa mikrokontrollernya palsu...
  • Banyak laporan pengguna Bluepill tentang copotnya soket mikro-usb mereka. Hati-hati dalam pemakaiannya.
  • Bluepill hanya boleh single power source. Jadi kalau anda sudah memberi power lewat colokan USB mikro, maka jangan sekali-kali menyambung pin VCC ke sumber listrik.
  • Berikut beberapa dari banyak laporan di forum-forum maker... dari Hackaday.com, dari stm32duino-forum, dari electronicshub.org.

1.5. PILIHAN TOOLCHAIN DAN IDE

ke atas

Toolchain untuk coding, assembling, linking, compiling, debugging (testing), downloading (release) program ke device (Bluepill) pilihannya sangat beragam, dan yang paling umum diantaranya: a) Bare-metal (biasanya menggunakan CMSIS dari chip designer, ARM, b) pilihan dari hardware abstraction layer (HAL) baru dari STMicroelectronics, CubeMX yang relatif baru, c) pilihan RTOS dan libopencm3.

Integrated development environment (IDE) sebagai bagian utama dari toolchain yang tersedia bagi pengembangan firmware Bluepill dilapangan juga sangat variasi : a) yang komersial (sangat mahal, sehingga tidak dipilih), b) programming pakai merek tapi dengan kapasitas terbatas (KEIL atau IAR versi 32 bytes), c) pakai yang gratis dari ST (STMcubeIDE, yang relatif baru) atau d) pakai yang gratis dari "Eclipse".

Saya telah coba setup beberapa toolchain mengikuti buku-buku yang saya baca, dan akhirnya saya pilih yang menurut saya paling nyaman adalah : MDK Arm - KEIL µVision (versi terbatas 32 byte) dan STMcubeMX untuk code inizialization. Dengan KEIL µVision kita bisa program device dalam CMSIS (agak bare-metal), dan juga bisa program dalam CMSIS+STMcubeMX (banyak dibantu oleh code inizialization oleh STMcubeMX, dan direkomendasikan oleh STMicroelectronics)

Dengan beberapa referensi proyek dari kedua jenis metode programming, dalam beberapa jam saya bisa menyalakan LED pada Blackpill, kemudian saya telah bisa mengaktifkan tombol ekternal. Dihari berikutnya saya bisa nulis text di LCD 16x2. Hebat sekali...

Namun yang saya lakukan baru copy-paste dari contoh proyek atau library punya orang, saya belum betul-betul memahami semua code yang dicontohkan tersebut, dan kalau harus menulis sendiri dari awal saya tidak sanggup :(


1.6. MENYIAPKAN HARDWARE

Cukup pengantar saya, mari kita mulai mengotori tangan dengan hardware dan toolchain...

Untuk toolchain saya akan jelaskan di sesi berikutnya, sekarang kita mulai menyiapkan hardware dulu.

  • Saatnya anda mulai belanja. Pertama tentu beli Bluepill STM32F103C8T6 (dan bagi yang tidak bisa nyolder seperti saya, belilah dengan header ter-solder)
  • belanja STlink
  • siapkan juga beberapa komponen elektronik: breadboard, jumper cables, tactile switch, debouncing components
  • Siapkan power source. Saya menggunakan adaptor 5v dan kabel mikro-usb 2 kabel (biasanya untuk powerbank) yang kepala usb mikronya saya potong sehingga siap colok ke breadboard.
ke atas  |  Home  |  Disclaimer  |  Next  | 

Comments