Skip to content Skip to sidebar Skip to footer

Widget HTML #1

How to Program STM32 Blue Pill STM32F103C8T6 or CKS32F103C8T6 via USB Using Arduino on Linux (Ubuntu)

Program STM32 Using Arduino
Image from Pixabay

Cara Program STM32 Blue Pill STM32F103C8T6  CKS32F103C8T6 Melalui USB Menggunakan Arduino Pada Linux (Ubuntu)

Pada tutorial kali ini, saya akan membagikan bagaimana cara kita memprogram sebuah STM32 Bluepill atau STM32F103 menggunakan Arduino pada Linux.  Di pasaran, saya menemukan bahwa STM32 Bluepill ini ada yang menggunakan chip STM32F103C8T6 dan CKS32F103C8T6. STM32 merupakan chip yang diproduksi oleh perusahaan STMicroelectronics di Amerika, sedangkan CKS32 merupakan chip yang diproduksi oleh perusahaan CKS di China.

Di percobaan ini saya menggunakan STM32 BluePill CKS32F103C8T6. Untuk gambar Pin Out atau Pin Mapping, anda dapat merujuk ke Halaman Download Library, Hardware, Sketsa dan Lainnya


1. Install LIBUSB Linux

Pertama, install libusb. libsub adalah pustaka C yang menyediakan akses ke perangkat USB.  Caranya adalah:

sudo apt-get install libusb-1.0-0-dev

2. Install Library STLink Linux

STLink ini adalah sebuah library dan kumpulan perintah untuk memprogram dan men-debug STM32 yang diproduksi oleh STMicroelectronics. Ada empat generasi hardware STLink  yang tersedia di pasar, yaitu STLINK / v1 , STLINK / v2, STLINK / v2-1 dan STLINK / v3.

Cara Install Library STLink adalah sebagai berikut:

git clone https://github.com/texane/stlink stlink.git
cd stlink
make

#install binaries:
sudo cp build/Debug/st-* /usr/local/bin

#install udev rules
sudo cp etc/udev/rules.d/49-stlinkv* /etc/udev/rules.d/

#and restart udev
sudo udevadm control --reload

Penting!!! Jika anda menggunakan chip CKS32F103C8T6, maka ada yang harus di edit alamat id core nya.

Caranya adalah:
  • Buka file stm32.h pada folder stlink yaitu /home/nama komputer anda/stlink/include, kemudian tambahkan #define CS32VL_CORE_ID 0x2ba01477
  • Buka file flash_loader.c pada folder stlink yaitu /home/nama komputer anda/stlink/src. 
  • Cari baris "else if (sl->core_id == STM32VL_CORE_ID ||", setelah itu tambahkan baris program "sl->chip_id == CS32VL_CORE_ID ||". Sehingga tampak seperti gambar berikut:
This is explain how to program STM32 Chip CKS32 using Linux. Cara Program STM32 Blue Pill STM32F103C8T6  CKS32F103C8T6 Melalui USB Menggunakan Arduino Pada Linux (Ubuntu)

Jika cara diatas tidak bisa, gunakan perintah berikut:
sudo apt install stlink-tools 

3. Burn Bootloader

Jika sebelumnya blue pill di program menggunakan Komunikasi Serial UART dan ST-Link, kita harus mengubah program didalam chip agar kita bisa menggunakan USB untuk komunikasi pemrogramannya dengan cara Burn Bootloader atau memasukkan (menanamkan) file yang berisi konfigurasi agar USB dapat digunakan untuk pemrograman.

Caranya adalah:
a. Hubungkan STM32 Blue Pill ke ST-Link V2 dengan konfigurasi pin:
ST-LINK V2
STM32 BLUE PILL
3.3V
3.3V
SWDIO
SWIO
SWCLK
SWCLK
GND
GND


b. Masukkan perangkat ST-Link (dalam hal ini saya menggunakan V2) ke komputer. Setelah itu cek stlink terhubung atau tidak dengan cara buka terminal dan masukkan kode berikut:

st-info --probe

Jika tidak ditemukan stlink terpasang maka notifikasi yang muncul di terminal adalah:

Found 0 stlink programmers

Jika ditemukan stlink terpasang, maka notifikasi yang muncuk di terminal adalah:

Found 1 stlink programmers
  serial:     3f3f010110134753384c4e00
  hla-serial: "\x3f\x3f\x01\x01\x10\x13\x47\x53\x38\x4c\x4e\x00"
  flash:      65536 (pagesize: 1024)
  sram:       20480
  chipid:     0x0410
  descr:      F1xx Medium-density

c. Setelah itu, mohon download bootloadernya dengan klik tombol berikut.


Setelah download selesai, pindahkan file generic_boot20_pc13.bin download ke home.

d. Buka terminal, arahkan direktori ke home, kemudian Flash stm32 dengan perintah:

st-flash write generic_boot20_pc13.bin 0x8000000


4. Install DFU-UTIL Linux

Apa itu DFU? DFU (Device Firmware Upgrade) digunakan untuk dapat mengunduh dan mengunggah firmware ke / dari mikrokontroller yang terhubung melalui USB

Install dfu-util terbaru dengan cara:

git clone git://git.code.sf.net/p/dfu-util/dfu-util
cd dfu-util
./autogen.sh
./configure
make
sudo make install

5. Tambahkan Library Board Arduino STM32

Ada dua cara menambahkannya, download dari Board Manager atau download manual. Jika ingin melalui board manager, silahkan copy kode berikut:
http://dan.drown.org/stm32duino/package_STM32duino_index.json

Buka Menu FilePreferences
Paste pada Additional Board manager URLs:

Atau dengan cara download manual:


Setelah di download, extrak filenya dan pindahkan ke hardware pada folder arduino. Jika folder arduino hanya ada folder library dan tidak ada folder hardware, silahkan buat filder hardware.  Urutan foldernya adalah seperti ini:

/home/nama komputer anda/Arduino/hardware/STM32duino-bootloader-master

6. Buka Arduino IDE
Jika anda masih membuka arduino IDE, silahkan tutup dan buka kembali arduino IDE anda. kemudian atur pengaturan board seperi ini:

Board: "Generic STM32F103C series"
Variant: "STM32F103C8 (20k RAM. 64k Flash)"
Upload method: "STM32duino bootloader"
CPU Speed(Mhz): "72 Mhz (Normal)"
Optimize: "Smallest (default)"
Port: "/dev/ttyASM0 (Maple Mini)"
Programmer: "AVRISP mkll"

7. Upload Program Blink

Untuk mengetahui apakah carai di atas berhasil atau tidak, kita coba upload program blik untuk menghidupkan/mematikan led pada board STM32.

// Program ini untuk menghidupkan led tertanam pada board.
// Jika arduino, LED_BUILTIN adalah pada pin 13
// Untuk STM32, LED_BUILDIN adalah PC13

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH); 
  delay(1000);                       
  digitalWrite(LED_BUILTIN, LOW);    
  delay(1000);                       
}


Jika upload error dan muncul errornya adalah dfu-util: Invalid DFU suffix signature, coba lihat cara perbaikinya di halaman Cara Mengatasi Error Dalam Proses Program STM32 Menggunakan Linux.

Jika berhasil, anda dapat melihat pemberitahuan pada Arduino IDE seperti pada gambar berikut:

atau seperti ini:

Sumber referensi:
1. https://libusb.info/
2. https://github.com/stlink-org/stlink
3. https://fishpepper.de/2016/09/16/installing-using-st-link-v2-to-flash-stm32-on-linux/
4. https://github.com/rogerclarkmelbourne/Arduino_STM32
5. https://gitmemory.com/issue/texane/stlink/833/531831018
6. http://dfu-util.sourceforge.net/

Post a Comment for "How to Program STM32 Blue Pill STM32F103C8T6 or CKS32F103C8T6 via USB Using Arduino on Linux (Ubuntu)"