Microcontrollore STM8S208RB: Caratteristiche, Specifiche, Applicazioni e Guida al Progetto IAR

Questo articolo introduce le informazioni di base del microcontrollore STM8S208RB e come creare un progetto IAR per esso.

Caratteristiche e specifiche di STM8S208RB

STM8S208RB ha un core STM8 a 8 bit che funziona a una frequenza massima di 16 MHz. Include 128 KB di memoria Flash e 8 KB di RAM, rendendolo adatto a varie applicazioni embedded. Il chip supporta più interfacce di comunicazione, tra cui SPI, UART e I2C, insieme a un ADC a 10 bit che offre 16 canali per ingressi analogici.

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

Schema piedini di STM8S208RB

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

Diagramma a blocchi di STM8S208RB

STM8S208RB Block Diagram
STM8S208RB Block Diagram

Applicazione di STM8S208RB

  • Elettronica di consumo: STM8S208RB è utilizzato in prodotti come elettrodomestici e giocattoli, dove sono necessari basso consumo energetico e controllo semplice.
  • Applicazioni automobilistiche: è applicato nei sistemi automobilistici per attività come il controllo dell’illuminazione e l’interfacciamento dei sensori.
  • Controllo industriale: il microcontrollore è utilizzato per controllare macchine e processi di automazione.
  • Casa intelligente: è utilizzato in dispositivi come termostati e sistemi di illuminazione intelligente.
  • Dispositivi portatili: dato il suo basso consumo energetico, è ideale per dispositivi alimentati a batteria.
  • IoT: può essere trovato in dispositivi IoT, in particolare quelli che richiedono un’elaborazione e una connettività efficienti.
  • Sicurezza: STM8S208RB è spesso utilizzato in allarmi, telecamere di sicurezza e sistemi correlati.
  • Salute: trova anche impiego nei sistemi di monitoraggio medico.

Progetto IAR: esempio di lampeggio LED GPIO su STM8S208RB

Seguendo i passaggi seguenti, dovresti essere in grado di implementare correttamente l’esempio di lampeggio LED GPIO su STM8S208RB utilizzando la libreria periferica standard ST e il compilatore IAR. Questo esempio può servire come punto di partenza per applicazioni più complesse che coinvolgono il controllo GPIO e l’inizializzazione delle periferiche.

Strumenti e risorse richiesti:

  • Libreria periferica standard ST STM8S/A
  • Compilatore IAR per STM8
  • Scheda di sviluppo STM8S208RBT6

Configurazione pin LED

In questo esempio, i LED di bordo sono collegati ai pin PC6 e PC7 del microcontrollore 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

				
			

In questo codice:

  • LED1 è controllato utilizzando PC7 e LED2 è controllato utilizzando PC6.
  • Le funzioni LED1_ON(), LED1_OFF() e LED1_TOGGLE() controllano lo stato di LED1, mentre LED2_ON(), LED2_OFF() e LED2_TOGGLE() controllano LED2.

Codice programma principale

Di seguito è riportato il programma principale per inizializzare i LED, attivarli e introdurre un ritardo tra ogni attivazione.

				
					#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

				
			

Funzione di ritardo

Di seguito è riportato il file sorgente della funzione di ritardo (delay.c) che fornisce funzioni di ritardo sia in microsecondi che in millisecondi.

				
					#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)
}

				
			

Spiegazione delle Funzioni di Ritardo:

  • delay_us: Fornisce un ritardo in microsecondi. La durata del ritardo viene regolata moltiplicando il valore di input per 3 per corrispondere alla velocità di clock del sistema di 16 MHz.
  • delay_ms: Fornisce un ritardo approssimativo in millisecondi utilizzando cicli nidificati. Questo metodo è adatto per semplici esigenze di temporizzazione, ma per una maggiore precisione, è necessario utilizzare timer hardware.

Impostazione e Passaggi di Compilazione del Progetto

  1. Download e Configurazione di STSW-STM8069:

    • Assicurati di aver scaricato la libreria periferica standard STM8S (STSW-STM8069) versione 2.3.1 dal sito web ufficiale di ST.
    • Includi i file di intestazione appropriati dalla libreria, come stm8s.h, stm8s_gpio.h, ecc., nel tuo progetto.
  2. Configurazione del Compilatore IAR:

    • Apri IAR Embedded Workbench e crea un nuovo progetto per STM8S208RB.
    • Seleziona il dispositivo corretto (STM8S208RB) e assicurati che la toolchain sia configurata per STM8.
    • Aggiungi i file sorgente necessari: main.c, led.c, delay.c, ecc.
    • Includi la libreria periferica standard STM8S nel tuo progetto. Assicurati che i percorsi corretti ai file della libreria siano impostati.
  3. Compila e Flasha:

    • Compila il progetto in IAR. Risolvi eventuali errori di compilazione, se necessario.
    • Flasha il firmware sulla tua scheda di sviluppo STM8S208RB utilizzando un programmatore/debugger appropriato (ad esempio, ST-Link).
  4. Test e Debug:

    • Dopo aver flashato il codice, osserva i LED su PC6 e PC7. I LED dovrebbero lampeggiare con un intervallo di 1 secondo.
    • Usa un debugger o un output seriale (se disponibile) per ispezionare il comportamento dei pin GPIO e verificare la funzionalità delle funzioni di ritardo.

Suggerimenti e Note Aggiuntive

  1. Utilizzo dei Timer per il Ritardo: Il ritardo basato su software è semplice ma inefficiente per applicazioni più complesse. Per ritardi più precisi ed efficienti, prendi in considerazione l’utilizzo di timer hardware invece di ritardi software.

  2. Ottimizzazione dell’Alimentazione: Se la tua applicazione richiede un basso consumo energetico, potresti voler esplorare le modalità a basso consumo del chip STM8S208RB, soprattutto quando il sistema è inattivo (come durante il lampeggio del LED).

  3. Debug: Puoi impostare punti di interruzione nel codice per eseguire il programma passo passo e monitorare i valori delle variabili. Questo è particolarmente utile per controllare la temporizzazione dei ritardi e lo stato dei pin GPIO.

  4. Definizioni dei Pin GPIO: Assicurati che le definizioni LED_GPIO_PORT e LED_GPIO_PINS corrispondano al layout effettivo della tua scheda di sviluppo. Ad esempio, conferma che PC6 e PC7 siano i pin corretti per i tuoi LED.

Condividi con:

Torna in alto

Instant Quote