Microcontrôleur STM8S208RB : caractéristiques, spécifications, applications et guide de projet IAR

Cet article présente les informations de base sur le microcontrôleur STM8S208RB et explique comment créer un projet IAR pour celui-ci.

Caractéristiques et spécifications du STM8S208RB

Le STM8S208RB dispose d'un cœur STM8 8 bits fonctionnant à une fréquence maximale de 16 MHz. Il comprend 128 Ko de mémoire Flash et 8 Ko de RAM, ce qui le rend adapté à diverses applications embarquées. La puce prend en charge plusieurs interfaces de communication, notamment SPI, UART et I2C, ainsi qu'un convertisseur analogique-numérique 10 bits offrant 16 canaux pour les entrées analogiques.

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

STM8S208RB Brochage

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

Schéma fonctionnel du STM8S208RB

STM8S208RB Block Diagram
STM8S208RB Block Diagram

STM8S208RB Application

  • Électronique grand public : le STM8S208RB est utilisé dans des produits tels que les appareils électroménagers et les jouets, qui nécessitent une faible consommation d'énergie et un contrôle simple.
  • Applications automobiles : il est utilisé dans les systèmes automobiles pour des tâches telles que le contrôle de l'éclairage et l'interfaçage des capteurs.
  • Contrôle industriel : le microcontrôleur est utilisé pour contrôler des machines et des processus d'automatisation.
  • Maison intelligente : il est utilisé dans des appareils tels que les thermostats et les systèmes d'éclairage intelligents.
  • Appareils portables : compte tenu de sa faible consommation d'énergie, il est idéal pour les appareils fonctionnant sur batterie.
  • IoT : on le trouve dans les appareils IoT, en particulier ceux qui nécessitent un traitement et une connectivité efficaces.
  • Sécurité : le STM8S208RB est souvent utilisé dans les alarmes, les caméras de sécurité et les systèmes connexes.
  • Santé : il est également utilisé dans les systèmes de surveillance médicale.

Projet IAR : exemple de clignotement de LED GPIO sur STM8S208RB

En suivant les étapes ci-dessous, vous devriez pouvoir implémenter avec succès l'exemple de clignotement de LED GPIO sur le STM8S208RB à l'aide de la bibliothèque périphérique standard ST et du compilateur IAR. Cet exemple peut servir de point de départ pour des applications plus complexes impliquant le contrôle GPIO et l'initialisation des périphériques.

Outils et ressources nécessaires :

  • Bibliothèque périphérique standard ST STM8S/A
  • Compilateur IAR pour STM8
  • Carte de développement STM8S208RBT6

Configuration des broches LED

Dans cet exemple, les LED intégrées sont connectées aux broches PC6 et PC7 du microcontrôleur 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

				
			

Dans ce code :

  • LED1 est contrôlée à l'aide de PC7, et LED2 est contrôlée à l'aide de PC6.
  • Les fonctions LED1_ON(), LED1_OFF()et LED1_TOGGLE() contrôlent l'état de LED1, tandis que LED2_ON(), LED2_OFF(), et LED2_TOGGLE() contrôlent la LED2.

Code du programme principal

Voici le programme principal permettant d'initialiser les LED, de les activer/désactiver et d'introduire un délai entre chaque activation/désactivation.

				
					#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

				
			

Fonction de retard

Vous trouverez ci-dessous le fichier source de la fonction de retard (delay.c) qui fournit des fonctions de délai en microsecondes et en millisecondes.

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

				
			

Explication des fonctions de retard :

  • delay_us : fournit un délai en microsecondes. La durée du délai est ajustée en multipliant la valeur d'entrée par 3 afin de correspondre à la vitesse d'horloge système de 16 MHz.
  • delay_ms : fournit un délai approximatif en millisecondes à l'aide de boucles imbriquées. Cette méthode convient pour des besoins de synchronisation simples, mais pour plus de précision, il est préférable d'utiliser des minuteries matérielles.

Configuration du projet et étapes de compilation

  1. Télécharger et configurer STSW-STM8069 :

    • Assurez-vous d'avoir téléchargé la bibliothèque périphérique standard STM8S (STSW-STM8069) version 2.3.1 depuis le site officiel de ST.
    • Incluez les fichiers d'en-tête appropriés de la bibliothèque, tels que stm8s.h, stm8s_gpio.h, etc., dans votre projet.
  2. Configuration du compilateur IAR :

    • Ouvrez IAR Embedded Workbench et créez un nouveau projet pour STM8S208RB.
    • Sélectionnez le dispositif approprié (STM8S208RB) et assurez-vous que la chaîne d'outils est configurée pour STM8.
    • Ajoutez les fichiers source nécessaires : main.c, led.c, delay.c, etc.
    • Incluez la bibliothèque périphérique standard STM8S dans votre projet. Assurez-vous que les chemins d'accès aux fichiers de la bibliothèque sont correctement définis.
  3. Compilez et flashez :

    • Compilez le projet dans IAR. Résolvez les erreurs de compilation si nécessaire.
    • Flash le micrologiciel sur votre carte de développement STM8S208RB à l'aide d'un programmateur/débogueur approprié (par exemple, ST-Link).
  4. Test et débogage :

    • Après avoir flashé le code, observez les LED sur PC6 et PC7. Les LED doivent clignoter à intervalles d'une seconde.
    • Utilisez un débogueur ou une sortie série (si disponible) pour inspecter le comportement des broches GPIO et vérifier le fonctionnement des fonctions de délai.

Suggestions et remarques supplémentaires

  1. Utilisation de minuteries pour le retard : le retard logiciel est simple mais inefficace pour les applications plus complexes. Pour des retards plus précis et plus efficaces, envisagez d'utiliser des minuteries matérielles plutôt que des retards logiciels.

  2. Optimisation de la consommation électrique : si votre application nécessite une faible consommation électrique, vous pouvez explorer les modes basse consommation de la puce STM8S208RB, en particulier lorsque le système est inactif (par exemple, pendant le clignotement des LED).

  3. Débogage : vous pouvez définir des points d'arrêt dans le code pour parcourir le programme et surveiller les valeurs des variables. Cela est particulièrement utile pour vérifier la synchronisation des retards et l'état des broches GPIO.

  4. Définitions des broches GPIO : assurez-vous que les LED_GPIO_PORT et LED_GPIO_PINS correspondent au brochage réel de votre carte de développement. Par exemple, vérifiez que PC6 et PC7 sont les broches correctes pour vos LED.

Part à:

Retour en haut

Instant Quote