Pengantar Chip STM32F030
Chip STM32F030 adalah mikrokontroler ARM Cortex-M0 32-bit berbiaya rendah dari STMicroelectronics. Chip ini dilengkapi dengan memori Flash hingga 32KB dan SRAM 4KB, serta dapat beroperasi pada kecepatan hingga 48MHz. Chip ini juga dilengkapi dengan berbagai periferal, seperti komparator analog, timer, serta antarmuka I2C dan SPI. STM32F030 juga mendukung aplikasi kontrol motor, serta memiliki beragam periferal analog dan digital terintegrasi. Ukuran chip yang kecil dan konsumsi daya yang rendah menjadikannya ideal untuk digunakan dalam berbagai aplikasi, mulai dari elektronik konsumen hingga sistem medis dan industri. Harga dan kinerja chip ini menjadikan STM32F030 pilihan yang tepat bagi pengembang yang mengutamakan efisiensi biaya. Dengan dukungan berbagai alat pengembangan, termasuk STM32Cube dan alat konfigurasi grafis STM32CubeMX, sangat mudah untuk mulai menggunakan STM32F030 dan mengembangkan aplikasi inovatif.

Parameter
– CPU: Inti ARM Cortex-M0 dengan arsitektur RISC
32-bit- Frekuensi operasi: hingga 48 MHz-
Memori program: hingga 32 KB Flash-
RAM: hingga 4
KB- Sumber clock: Internal 8 MHz atau eksternal 32
kHz- Output clock: 2 x 32 kHz-
I/O digital: Hingga 36 pin
I/O- Masukan analog: Hingga 8 saluran ADC
12-bit- Timer: Hingga 3 timer
16-bit- Antarmuka komunikasi: Hingga 2 x I2C, 2 x USART, SPI, CAN
Arsitektur Sistem
Kerangka kerja sistem internal STM32F030 dapat dengan mudah dibagi menjadi 2 sistem master dan 4 sistem slave. Konsep master dan slave di sini berkaitan dengan Busmatrix:
- Master
- Bus AHB inti Cortex-M0
- GP-DMA
- Sistem slave
- SRAM internal
- Flash internal
- AHB2APB
- AHB ke port GPIO
Hubungan antara 2 master dan 4 slave ditunjukkan pada gambar berikut secara lebih rinci dan diberi tanda:

Untuk Jembatan AHB2APB, jika Anda ingin menggunakan periferal yang terhubung ke bus APB, Anda harus memanggil register seperti RCC_AHBENR untuk mengaktifkan clock periferal terlebih dahulu, dan periferal tersebut menggunakan driver periferal. Detail-detail ini umumnya ditangani dalam antarmuka pemrograman aplikasi (API) driver ST.
Gambaran Umum Memori
Dalam program STM32F030, data, register, dan port I/O semuanya dipetakan ke ruang alamat 4 GB (mesin 32-bit). Peta memori STM32F030 dijelaskan secara rinci dalam lembar data.
SRAM
SRAM pada STM32F030 memiliki kapasitas 8 KB dan dapat diakses dalam satuan byte, word, dan half-word. Bagian ini digunakan untuk menyimpan kode yang telah dikompilasi dan dihubungkan, data, serta tumpukan program selama proses eksekusi. Data terus-menerus dibaca dari atau ditulis ke SRAM ini selama program dijalankan.
Flash
Flash internal STM32F030 biasanya sudah cukup untuk digunakan karena memang dirancang untuk tujuan tersebut. Chip ini memiliki ruang flash pengguna sebesar 64 KB. Flash di dalam chip disebut sebagai flash internal atau ROM (perbedaan antara ROM dan flash adalah ROM tidak dapat dihapus oleh pengguna dan sudah ditetapkan saat produksi chip, sedangkan flash dapat dihapus dan ditulis ulang kapan saja).
Flash internal STM32F030 dibagi menjadi dua jenis:
- Ruang flash pengguna sebesar 64KB: digunakan untuk mengunduh kode .bin yang dihasilkan oleh proses kompilasi dan pengikatan yang dilakukan pengguna.
- Flash info: mencakup byte opsi dan memori sistem.
Byte opsi dapat digunakan untuk mengonfigurasi beberapa fungsi IC. Memori
sistem adalah memori IC yang berisi segmen kode yang ditetapkan selama produksi IC, tidak bersifat open source, dan operasinya hanya dapat ditebak. Tujuan memori sistem adalah bertindak sebagai bootloader tertanam. Secara umum, memori ini tidak digunakan untuk debugging. Penggunaan tipikalnya adalah menghubungkan debugger melalui antarmuka SWD ke IC dan dengan mudah mengunduh serta mendebug kode. Namun, pada produk, antarmuka SWD mungkin tidak diakses. Dalam hal ini, kode .bin produk dapat diunduh dan dijalankan melalui bootloader memori sistem internal IC via antarmuka serial, yang merupakan proses umum untuk pembaruan firmware. STM akan menyediakan antarmuka dan demo penggunaan untuk bootloader memori sistem, serta terdapat banyak dokumentasi terkait yang menjelaskan cara menggunakannya.
Konfigurasi Boot
Debugging melalui SWD disebut "pemrograman sistem," sedangkan memuat dan menjalankan program menggunakan bootloader dianggap sebagai "pemrograman aplikasi." STM memiliki tiga mode boot yang dapat dikonfigurasi untuk berbagai skenario aplikasi.
Konfigurasi mode boot:
Pertama, terdapat pin boot yang terhubung ke level tinggi atau rendah. Saat chip dinyalakan, chip akan memeriksa level pin boot dan beralih ke mode boot yang sesuai. Selain itu, nBOOT1 dapat dikonfigurasi dalam byte opsi untuk memilih mode boot yang sesuai.
Klasifikasi mode boot:
Ada tiga jenis: Boot flash pengguna, yang paling umum; setelah kompilasi dan pengikatan, unduh kode, reset, dan jalankan kode flash Anda sendiri. Boot memori sistem, yang menggunakan bootloader internal IC untuk melakukan boot. Boot SRAM.
Bingkai Jam
Kerangka waktu STM32F030 adalah sebagai berikut, dan berikut ini adalah beberapa penjelasannya:
- HSI: disingkat dari "high-speed internal clock", terdiri dari osilator RC.
- HSE: disebut jam internal berkecepatan tinggi, dapat dihubungkan ke resonator kuarsa/keramik eksternal, atau sumber jam eksternal.
- LSI: disebut jam internal kecepatan rendah, terdiri dari osilator RC, memiliki frekuensi rendah, dan STM32F030 adalah 40kHz.
- LSE: disebut jam eksternal kecepatan rendah, umumnya terhubung dengan kristal kuarsa dengan frekuensi eksternal 32,768 kHz.
- PLL: merupakan keluaran pengali dari loop terkunci fase.
- HSI14 RC: sumber jam dapat digunakan untuk ADC saja.

Periferal yang tidak disebutkan secara khusus umumnya menggunakan PCLK. Berikut adalah daftar singkat situasi yang perlu diaktifkan dengan AHB/APB sesuai dengan kode yang spesifik:
- Gunakan AHB sebagai sumber clock: GPIOA-F, TS, CRC, FLITF, SRAM, DMA1.
- Gunakan APB1 sebagai sumber clock: TIM2, TIM3, TIM6, TIM14, WWDG, SPI2, USART2, I2C1, I2C2, PWR, DAC, CEC.
- Gunakan APB2 sebagai sumber clock: SYSCFG, ADC1, TIM1, SPI1, USART1, TIM15, TIM16, TIM17, DBGMCU.
Fungsi Reset
Reset merupakan bagian penting dari proses penyalaan sistem MCU. Saat IC mulai menjalankan program, proses tersebut dimulai dari tahap reset, yang merupakan langkah pertama setelah sistem dinyalakan.
Mekanisme Reset Cortex-M0
Dalam berkas startup Cortex-M0, Anda akan selalu menemukan reset_handler, yang terletak pada posisi pertama tabel vektor. Alamat Cortex-M0 adalah 0x0000 0004, dan nilai PC saat Cortex-M0 mulai beroperasi adalah alamat ini. Di dalam reset_handler, fungsi SystemInit yang diimplementasikan oleh pengguna umumnya dipanggil, yang mengatur clock dari berbagai komponen yang dibutuhkan sistem agar dapat bekerja dengan benar, sehingga memudahkan sistem untuk beroperasi secara normal di kemudian hari. Kemudian, entri __main di dalam pustaka dipanggil, yang seharusnya melakukan beberapa pemrosesan awal terhadap pustaka runtime C dan mengatur stack.
Jenis-jenis Reset
Ada tiga jenis reset utama pada STM32F030: reset daya, reset sistem, dan reset domain RTC.
Reset daya berkaitan dengan catu daya IC. Reset ini dipicu oleh penyalaan daya dan bangun dari mode siaga, dan inisialisasi sistem dimulai setelah reset.
Reset sistem dipicu oleh sistem. Artinya, catu daya normal, tetapi jika tombol reset ditekan, register yang bersangkutan direset oleh perangkat lunak, atau Watchdog dipicu, reset ini akan terjadi. Ketika reset ini terjadi, satu-satunya perbedaan dari reset daya adalah bahwa bit yang relevan dalam register RCC_CSR yang digunakan untuk menunjukkan sumber reset tidak akan direset, sementara semua register lainnya akan direset ke keadaan tepat setelah daya dinyalakan.
Pemicu reset domain RTC juga merupakan pemicu perangkat lunak. Reset ini dipicu dengan menulis ke bit yang sesuai di register RCC_BDCR. Namun, jenis reset ini hanya memengaruhi RTC dan kristal LSE, dll.
Siklus Penyempurnaan Berkelanjutan
CRC (Cyclic Redundancy Check) adalah algoritma pemeriksaan yang digunakan untuk memastikan integritas data yang dikirimkan atau disimpan. Karena algoritma ini dapat digunakan di berbagai aplikasi, STM32F030 mengimplementasikan algoritma ini dengan unit pemrosesan CRC berbasis perangkat keras yang terintegrasi dalam IC. Ketika suatu aplikasi memerlukan penggunaan CRC, unit perangkat keras tersebut dapat dikendalikan oleh perangkat lunak untuk memenuhi persyaratan tersebut (tentu saja CRC juga dapat diimplementasikan dalam perangkat lunak, tetapi kecepatannya jelas tidak secepat CRC perangkat keras).

Proses CRC diimplementasikan di dalam IC, sehingga Anda hanya perlu mengetahui cara menggunakannya, dan penggunaannya sangat sederhana. Tuliskan data sumber yang perlu dihitung ke dalam register Data (input), mulai proses perhitungan pada unit perhitungan CRC, lalu baca hasil perhitungan tersebut di register Data (output).
Faktanya, input dan output dari register Data CRC STM32F030 menggunakan register yang sama, karena harus dimasukkan terlebih dahulu, dan kemudian output dapat diperoleh sebelum melanjutkan ke input berikutnya. Dapat dilihat dari proses ini bahwa input dan output tidak digunakan secara bersamaan, sehingga Anda dapat langsung menggunakan register untuk menggabungkan kedua fungsi tersebut. Register ini dapat dioperasikan dalam mode 32 bit, 16 bit, dan 8 bit, yang dapat memenuhi berbagai kebutuhan.
Papan Pengembangan STM32F030 - STM32F0308 Discovery
Pengembangan mikrokontroler STM32F030 ini didasarkan pada pustaka HAL terbaru dari STM32, kode inisialisasi yang dihasilkan oleh STM32CubeMX, serta menggunakan kompiler GCC. Di bawah ini adalah skema, diagram PCB, dan papan yang telah dirakit. STM32 menyediakan banyak papan pengembangan tingkat pemula, seperti seri Discovery dan seri Nucleo. STM32F0308 Discovery adalah salah satu papan dalam seri Discovery, yang dilengkapi dengan chip STM32F030.
Fungsi dan fitur dasar papan pengembangan seri Discovery memang serupa, namun kemampuan chip yang digunakan dapat berbeda-beda. Berikut ini adalah fitur-fitur dari STM32F0308 Discovery:
Perluasan port IO yang praktis: Pengembangan dapat dilakukan hanya dengan menghubungkan satu kabel USB ke PC. Port IO dari chip STM32F030 pada papan pengembangan telah diperluas, sehingga memudahkan penghubungan ke berbagai perangkat menggunakan kabel DuPont.
Antarmuka debugging: Papan pengembangan dilengkapi dengan antarmuka debug SWD onboard, yang diimplementasikan menggunakan chip Cortex-M3 lain dari ST (saat ini, versi v9 JLINK yang ada di pasaran juga seharusnya menggunakan chip Cortex-M3 dari ST). Antarmuka debug SWD ini dapat digunakan secara terpisah melalui koneksi penutup jumper, yang berarti bahwa stm32f0308-discovery dapat digunakan sebagai debugger SWD mandiri.
Pasokan daya fleksibel: Papan pengembangan ini sendiri ditenagai oleh USB, tetapi memiliki sirkuit konversi tegangan yang dapat menghasilkan pasokan daya 5V dan 3V untuk perangkat eksternal (perlu dicatat bahwa arus pasokan daya masih dibatasi). Secara umum, modul dan antarmuka kecil dapat ditenagai langsung olehnya.
Periferal tingkat papan: Karena ini adalah papan pengembangan tingkat pemula dan berbiaya rendah, periferal onboard-nya sangat sederhana, terdiri dari dua tombol dan empat LED. Dari dua tombol tersebut, satu digunakan untuk reset dan yang lainnya adalah tombol yang dapat diprogram oleh pengguna. Dari empat LED, satu berfungsi sebagai indikator daya, satu sebagai indikator status debug SWD, dan dua sisanya dapat diprogram untuk pengendalian. Jadi, pada kenyataannya, periferal onboard yang dapat diprogram untuk pengendalian hanyalah satu tombol pengguna dan dua LED pengguna.
Kinerja
- Antarmuka SWD yang disediakan khusus untuk debugging menggunakan ST-LINK;
- Antarmuka PA4 (keluaran DAC) dengan kemampuan penggerak port yang tinggi;
- Dua tombol sentuh ringan dan 3 LED untuk memudahkan debugging;
- Antarmuka LCD1602 dan antarmuka yang kompatibel dengan LCD TFT umum;
- Gunakan superkapasitor sebagai catu daya cadangan RTC;
- Antarmuka USB dengan perlindungan daya;
- Beberapa titik pengujian catu daya untuk osiloskop atau multimeter.




