Gambaran Umum
STM8S903K3 adalah mikrokontroler 8-bit yang diproduksi oleh STMicroelectronics, bagian dari seri STM8S. Seri mikrokontroler ini populer di pasar berkat performa tinggi, ketahanan, dan efisiensi biayanya. STM8S903K3 sangat cocok untuk berbagai aplikasi kontrol industri dan peralatan rumah tangga karena dapat membantu menekan biaya sistem dan mempersingkat siklus pengembangan aplikasi.
Fitur Utama:
- Kinerja Tinggi: Berbasis inti STM8 generasi terbaru, perangkat ini menawarkan kemampuan pemrosesan yang canggih.
- Konsumsi Daya Rendah: Dilengkapi dengan beberapa mode hemat daya, termasuk mode Wait, Active Stop, dan Stop, serta kemampuan untuk menonaktifkan jam periferal secara individual.
- Integrasi Tinggi: Mengintegrasikan EEPROM data asli dengan hingga 300 ribu siklus tulis/hapus, osilator jam internal, timer pengawas, dan fungsi reset saat dinyalakan.
- Sistem Keamanan Jam: Dilengkapi dengan pemantau jam untuk memastikan operasi sistem yang stabil.
- Manajemen Interupsi: Dilengkapi dengan pengontrol interupsi bersarang, yang mendukung hingga 32 interupsi dan 28 interupsi eksternal.
- Timer: Termasuk timer kontrol lanjutan, timer serbaguna, dan timer bangun otomatis.
- Antarmuka Komunikasi: Mendukung berbagai protokol komunikasi seperti I2C, IrDA, bus LIN, SPI, UART/USART.
- Tegangan Operasi: 2,95 hingga 5,5 V, memberikan fleksibilitas untuk lingkungan daya yang berbeda.
- Rentang Suhu: Rentang suhu operasi dari -40°C hingga 85°C, sehingga cocok untuk berbagai kondisi lingkungan.
Contoh Penerapan:
Berkat performa tinggi dan biayanya yang terjangkau, STM8S903K3 banyak digunakan di berbagai bidang. Misalnya, dalam desain pengendali kendaraan listrik, chip ini berfungsi sebagai chip pengendali utama untuk menggerakkan motor DC tanpa sikat tanpa sensor, sehingga dapat menekan biaya motor dan meningkatkan stabilitas pengendali.
Pemrograman STM8S903K3 dengan STVD dan STVP
Dalam contoh ini, kami akan memperkenalkan panduan pemrograman UART STM8S903K3, yang menggunakan ST Visual Develop dan ST Visual Programmer, mulai dari konfigurasi lingkungan dan pembuatan proyek hingga kompilasi dan pengujian.
Alat yang Diperlukan
Perangkat keras:
- Mikrokontroler STM8S903K3
- Debugger/Programmer ST-Link
- Papan Target (Opsional)
- Antarmuka Komunikasi Serial UART (Opsional)
Perangkat Lunak:
- ST Visual Develop (STVD) (alat IDE untuk menulis, mengkompilasi, dan mendebug)
- ST Visual Programmer (STVP) (alat pemrograman)
- Driver USB ST-Link
- Rantai Alat Kompiler STM8 Cosmic (membangun proyek & menghasilkan berkas HEX)
- Perangkat Lunak Emulator Terminal (Opsional)
Proses Langkah demi Langkah
1. Buat Ruang Kerja Baru di ST Visual Develop
Buka ST Visual, lalu buat ruang kerja baru. Ruang kerja ini akan menjadi tempat penyimpanan berkas-berkas proyek dan konfigurasi Anda.
2. Buat Ruang Kerja dan Proyek Baru
Di dalam ruang kerja, buatlah proyek baru. Proyek ini akan berfungsi sebagai lingkungan pengembangan utama tempat Anda akan menulis dan mengompilasi kode Anda.
3. Menentukan Nama File dan Lokasi Ruang Kerja
Tentukan nama file dan lokasi tempat ruang kerja akan disimpan. Pilih direktori yang sesuai di komputer Anda untuk menyimpan file-file proyek.
4. Rangkaian Alat Proyek Baru STM8 Cosmic
Pilih toolchain STM8 Cosmic untuk proyek ini. Toolchain Cosmic digunakan untuk mengkompilasi kode dan menghasilkan berkas yang dapat dieksekusi untuk mikrokontroler STM8.
5. Pilih MCU STM8S903K3
Di pengaturan proyek, pilih mikrokontroler (MCU) STM8S903K3 sebagai perangkat target. Hal ini memastikan bahwa proyek telah dikonfigurasi dengan benar untuk perangkat keras yang Anda gunakan.
6. Menambahkan Kode UART ke Berkas main.c
Di berkas main.c proyek Anda, tambahkan kode UART di bawah ini untuk mengaktifkan komunikasi serial. Hal ini mencakup konfigurasi pengaturan UART serta fungsi untuk mengirim dan menerima data.
#include "stm8s903k3.h"
#include "stdio.h"
#define _COSMIC_
/*
Since different compilers (RAISONANCE, COSMIC, IAR) have slightly different parameter and return value conventions for putchar and getchar,
we use macros to define them accordingly. These macros are automatically added by the compiler.
*/
#ifdef _RAISONANCE_
#define PUTCHAR_PROTOTYPE int putchar (char c)
#define GETCHAR_PROTOTYPE int getchar (void)
#elif defined (_COSMIC_)
#define PUTCHAR_PROTOTYPE char putchar (char c)
#define GETCHAR_PROTOTYPE char getchar (void)
#else /* _IAR_ */
#define PUTCHAR_PROTOTYPE int putchar (int c)
#define GETCHAR_PROTOTYPE int getchar (void)
#endif /* _RAISONANCE_ */
// Function to send a character to UART1
PUTCHAR_PROTOTYPE
{
UART1_DR = c; // Send a character 'c' to UART1 data register
while (!(UART1_SR & 0x40)); // Wait for transmission to complete (TXE flag)
return (c);
}
// Function to receive a character from UART1
GETCHAR_PROTOTYPE
{
#ifdef _COSMIC_
char c = 0;
#else
int c = 0;
#endif
// Wait for new data to be received (RXNE flag)
while (!(UART1_SR & 0x20));
// Read received data
c = UART1_DR;
return (c);
}
// Clock initialization function
void CLK_Init(void)
{
// Enable the internal high-speed oscillator (HSI)
CLK_ICKR |= 0x01;
CLK_CKDIVR = 0x00; // No clock division (16MHz)
while (!(CLK_ICKR & 0x02)); // Wait for HSI to be ready
CLK_SWR = 0xE1; // Use HSI as the system clock source
}
// UART1 initialization function
void UART1_Init(void)
{
UART1_CR3 = 0x00; // Disable LIN mode, one stop bit, no SCK
UART1_CR2 = 0x00; // Disable TX interrupt, RX interrupt, and others
UART1_CR3 = 0x00; // Disable interrupts, no break frames
UART1_BRR2 = 0x02; // Set baud rate (9600)
UART1_BRR1 = 0x68; // Set baud rate (9600)
UART1_CR2 = 0x0C; // Enable TX and RX
}
// Simple delay function (not very accurate, could be improved with a timer)
void delay(unsigned int x)
{
unsigned int i, j;
for (i = x; i > 0; i--)
for (j = 300; j > 0; j--);
}
void main()
{
unsigned char c;
CLK_Init(); // Initialize system clock
UART1_Init(); // Initialize UART1
while(1)
{
printf("\n\rPlease enter a key: ");
while (!(UART1_SR & 0x20)); // Wait for data to be received (RXNE flag)
c = UART1_DR; // Read received character
printf("\n\rYou entered: %c.", c); // Send the received character back to the user
}
}
Setelah menambahkan kode main.c, kita dapat menambahkan berkas header stm8s903k3.h ke dalam folder "Include Files" proyek. Berkas ini berisi definisi dan konfigurasi yang diperlukan untuk MCU STM8S903K3, sehingga kompiler dapat mengenali register dan fungsi yang spesifik untuk perangkat tersebut.
7. Membangun Proyek
Setelah kode ditulis, lakukan proses build pada proyek untuk mengkompilasi kode sumber menjadi kode mesin yang dapat dipahami oleh STM8S903K3. Langkah ini akan memeriksa adanya kesalahan dan menghasilkan berkas keluaran (biasanya berkas .hex).
8. Target Debug Swim ST-Link
Siapkan lingkungan debugging dengan memilih debugger ST-Link untuk berkomunikasi dengan MCU target. ST-Link adalah programmer/debugger berbasis USB yang digunakan untuk memuat kode ke mikrokontroler STM8 dan melakukan debugging.
9. Perintah Pengeditan Pengaturan Proyek pada Tahap Pasca-Pembangunan
Di pengaturan proyek, edit perintah pasca-pembangunan untuk mengotomatiskan langkah-langkah yang diperlukan yang harus dilakukan setelah proses pembangunan, seperti menyalin berkas keluaran atau melakukan pemrosesan tambahan.
10. Simpan berkas teks dan bangun kembali proyek tersebut
Simpan proyek dan semua berkas teks yang berisi konfigurasi atau perintah kompilasi. Setelah disimpan, kompilasi ulang proyek untuk memastikan semua pengaturan diterapkan dengan benar dan berkas keluaran berhasil dihasilkan.
11. Konfigurasikan STM8S903K3 ST-LINK untuk ST Visual Programmer STM8
Siapkan ST-Link dengan mikrokontroler STM8S903K3 untuk pemrograman. ST-Link harus dihubungkan ke komputer dan STM8S903K3 untuk memudahkan proses pemrograman dan debugging.
12. Pemrograman Menggunakan ST Visual Programmer
Gunakan perangkat lunak ST Visual Programmer untuk membuka uart.HEX file yang dihasilkan oleh proses build. File ini berisi kode yang telah dikompilasi untuk mikrokontroler STM8S903K3 Anda. Pilih opsi pemrograman yang sesuai di ST Visual Programmer dan program mikrokontroler dengan file yang dihasilkan .hex .




