Mikrokontroler STM8S208RB: Fitur, Spesifikasi, Aplikasi, dan Panduan Proyek IAR

Artikel ini memaparkan informasi dasar mengenai mikrokontroler STM8S208RB serta cara membuat proyek IAR untuk mikrokontroler tersebut.

Fitur dan Spesifikasi STM8S208RB

STM8S208RB dilengkapi dengan inti STM8 8-bit yang beroperasi pada frekuensi maksimum 16 MHz. Chip ini memiliki memori Flash sebesar 128 KB dan RAM sebesar 8 KB, sehingga cocok untuk berbagai aplikasi tertanam. Chip ini mendukung berbagai antarmuka komunikasi, termasuk SPI, UART, dan I2C, serta ADC 10-bit yang menyediakan 16 saluran untuk masukan analog.

AttributeValue
Core8-bit STM8 core
Max Frequency16 MHz
Flash Memory128 KB
RAM8 KB
GPIO PinsUp to 16 general-purpose I/O pins
Timers2 x 16-bit timers, 1 x 8-bit timer
ADC10-bit ADC with 16 channels
Communication InterfacesSPI, I2C, UART
Clock SourcesInternal 16 MHz, External crystal
Operating Voltage2.95V to 5.5V
Operating Temperature-40°C to +125°C
Package Type32-pin LQFP
Power ConsumptionLow-power modes supported

Konfigurasi Pin STM8S208RB

STM8S208RB LQFP 48 pin pinout e1731663299278
STM8S208RB LQFP 48-pin pinout

Diagram Blok STM8S208RB

STM8S208RB Block Diagram
STM8S208RB Block Diagram

Aplikasi STM8S208RB

  • Elektronik Konsumen: STM8S208RB digunakan dalam produk seperti peralatan rumah tangga dan mainan, yang membutuhkan daya rendah dan kontrol sederhana.
  • Aplikasi Otomotif: Digunakan dalam sistem otomotif untuk tugas-tugas seperti pengendalian pencahayaan dan antarmuka sensor.
  • Kontrol Industri: Mikrokontroler ini digunakan untuk mengontrol mesin dan proses otomatisasi.
  • Rumah Pintar: Digunakan pada perangkat seperti termostat dan sistem pencahayaan pintar.
  • Perangkat Portabel: Mengingat konsumsi dayanya yang rendah, perangkat ini ideal untuk perangkat yang bertenaga baterai.
  • IoT: Dapat ditemukan pada perangkat IoT, terutama yang memerlukan pemrosesan dan konektivitas yang efisien.
  • Keamanan: STM8S208RB sering digunakan dalam alarm, kamera keamanan, dan sistem terkait.
  • Kesehatan: Mikrocontroller ini juga digunakan dalam sistem pemantauan medis.

Proyek IAR: Contoh LED Berkedip pada GPIO di STM8S208RB

Dengan mengikuti langkah-langkah di bawah ini, Anda seharusnya dapat berhasil menerapkan contoh kedipan LED GPIO pada STM8S208RB menggunakan ST Standard Peripheral Library dan kompiler IAR. Contoh ini dapat dijadikan titik awal untuk aplikasi yang lebih kompleks yang melibatkan pengendalian GPIO dan inisialisasi periferal.

Alat dan Sumber Daya yang Diperlukan:

  • Perpustakaan Periferal Standar ST STM8S/A
  • IAR Compiler untuk STM8
  • Papan Pengembangan STM8S208RBT6

Konfigurasi Pin LED

Dalam contoh ini, LED onboard dihubungkan ke pin PC6 dan PC7 pada mikrokontroler STM8S208RB.

				
					#define LED_GPIO_PORT  ((GPIO_TypeDef *)GPIOC)
#define LED_GPIO_PINS  (GPIO_PIN_7 | GPIO_PIN_6 | GPIO_PIN_3)

#define  LED1_ON()    GPIO_WriteLow(GPIOC , GPIO_PIN_7)  // Turn LED1 ON
#define  LED1_OFF()   GPIO_WriteHigh(GPIOC , GPIO_PIN_7) // Turn LED1 OFF
#define  LED1_TOGGLE() GPIO_WriteReverse(GPIOC , GPIO_PIN_7) // Toggle LED1

#define  LED2_ON()    GPIO_WriteLow(GPIOC , GPIO_PIN_6)  // Turn LED2 ON
#define  LED2_OFF()   GPIO_WriteHigh(GPIOC , GPIO_PIN_6) // Turn LED2 OFF
#define  LED2_TOGGLE() GPIO_WriteReverse(GPIOC , GPIO_PIN_6) // Toggle LED2

				
			

Dalam kode ini:

  • LED1 dikendalikan menggunakan PC7, dan LED2 dikendalikan menggunakan PC6.
  • Fungsi-fungsi LED1_ON(), LED1_OFF(), dan LED1_TOGGLE() mengontrol status LED1, sedangkan LED2_ON(), LED2_OFF(), dan LED2_TOGGLE() mengontrol LED2.

Kode Program Utama

Berikut ini adalah program utama untuk menginisialisasi LED, mengubah statusnya, dan menyisipkan jeda di antara setiap perubahan status.

				
					#include "stm8s.h"
#include "led.h"
#include "delay.h"

/* Private function prototypes -----------------------------------------------*/
void LED_Init(void);  // Function to initialize the LED GPIO pins

/* Private functions ---------------------------------------------------------*/

// Function to initialize GPIO pins for the LEDs
void LED_Init(void)
{
    GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST); // Configure the GPIO pins as push-pull output, low speed
}

// Software delay function
void Delay(uint16_t nCount)
{
    while (nCount != 0)
    {   
        nCount--;
    }
}

void main(void)
{
    // Configure the internal clock to 16 MHz
    CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);  // No prescaler; system clock = 16 MHz

    LED_Init();  // Initialize the GPIO pins for LEDs

    while (1)
    {
        // Toggle LEDs on PC6 and PC7 every 1 second
        GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);
        delay_ms(1000);  // Delay for 1000 ms (1 second)
    }
}

#ifdef USE_FULL_ASSERT

// Function to report assert failures
void assert_failed(u8* file, u32 line)
{
    // Optionally, report the file and line number
    while (1)
    {
    }
}
#endif

				
			

Fungsi Penundaan

Di bawah ini adalah berkas sumber fungsi penundaan (delay.c) yang menyediakan fungsi penundaan dalam satuan mikrodetik dan milidetik.

				
					#include "delay.h"

// Function to create a delay of microseconds
void delay_us(unsigned int nCount)   // Delay in microseconds for 16 MHz clock speed
{
    nCount *= 3;  // Adjust for the system clock speed (16 MHz)
    while (--nCount);  // Decrement nCount until it reaches zero
}

// Function to create a delay of milliseconds
void delay_ms(unsigned int ms)
{
    unsigned int x, y;
    for (x = ms; x > 0; x--)  // Loop for each millisecond
        for (y = 3147; y > 0; y--);  // Inner loop for delay approximation
    __asm( "nop" );  // No operation (to adjust the delay)
    __asm( "nop" );  // No operation (to adjust the delay)
}

				
			

Penjelasan tentang Fungsi Penundaan:

  • delay_us: Memberikan penundaan dalam mikrodetik. Durasi penundaan disesuaikan dengan mengalikan nilai masukan dengan 3 agar sesuai dengan kecepatan jam sistem 16 MHz.
  • delay_ms: Memberikan penundaan kasar dalam milidetik menggunakan loop bersarang. Metode ini cocok untuk kebutuhan waktu sederhana, tetapi untuk presisi yang lebih tinggi, sebaiknya menggunakan timer perangkat keras.

Langkah-langkah Penyiapan dan Kompilasi Proyek

  1. Unduh dan Atur STSW-STM8069:

    • Pastikan Anda telah mengunduh Perpustakaan Periferal Standar STM8S (STSW-STM8069) versi 2.3.1 dari situs web resmi ST.
    • Sertakan berkas header yang sesuai dari perpustakaan, seperti stm8s.h, stm8s_gpio.h, dll., ke dalam proyek Anda.
  2. Pengaturan Kompiler IAR:

    • Buka IAR Embedded Workbench dan buat proyek baru untuk STM8S208RB.
    • Pilih perangkat yang benar (STM8S208RB) dan pastikan toolchain telah dikonfigurasi untuk STM8.
    • Tambahkan berkas sumber yang diperlukan: main.c, led.c, delay.c, dll.
    • Sertakan Perpustakaan Periferal Standar STM8S dalam proyek Anda. Pastikan jalur yang benar ke berkas perpustakaan telah ditetapkan.
  3. Kompilasi dan Flash:

    • Kompilasi proyek di IAR. Selesaikan kesalahan kompilasi jika diperlukan.
    • Tulis firmware ke papan pengembangan STM8S208RB Anda menggunakan programmer/debugger yang sesuai (misalnya, ST-Link).
  4. Pengujian dan Debugging:

    • Setelah mem-flash kode, perhatikan LED pada PC6 dan PC7. LED seharusnya berkedip dengan interval 1 detik.
    • Gunakan debugger atau output serial (jika tersedia) untuk memeriksa perilaku pin GPIO dan memverifikasi fungsi penundaan.

Saran dan Catatan Tambahan

  1. Menggunakan Timer untuk Penundaan: Penundaan berbasis perangkat lunak memang sederhana, tetapi tidak efisien untuk aplikasi yang lebih kompleks. Untuk penundaan yang lebih akurat dan efisien, pertimbangkan untuk menggunakan timer perangkat keras sebagai pengganti penundaan perangkat lunak.

  2. Optimasi Daya: Jika aplikasi Anda memerlukan konsumsi daya rendah, Anda mungkin ingin menjelajahi mode daya rendah pada chip STM8S208RB, terutama saat sistem dalam keadaan idle (seperti saat LED berkedip).

  3. Debugging: Anda dapat menetapkan titik henti (breakpoint) dalam kode untuk menelusuri program dan memantau nilai variabel. Hal ini sangat berguna untuk memeriksa waktu penundaan dan status pin GPIO.

  4. Definisi Pin GPIO: Pastikan bahwa LED_GPIO_PORT dan LED_GPIO_PINS sesuai dengan susunan pin sebenarnya pada papan pengembangan Anda. Misalnya, pastikan bahwa PC6 dan PC7 adalah pin yang tepat untuk LED Anda.

Bagikan ke:

Scroll to Top

Instant Quote