Microcontrolador STM8S208RB: Características, Especificaciones, Aplicaciones y Guía de Proyecto IAR

Este artículo presenta la información básica del microcontrolador STM8S208RB y cómo crear un proyecto IAR para él.

Características y Especificaciones del STM8S208RB

El STM8S208RB tiene un núcleo STM8 de 8 bits que funciona a una frecuencia máxima de 16 MHz. Incluye 128 KB de memoria Flash y 8 KB de RAM, lo que lo hace adecuado para diversas aplicaciones integradas. El chip soporta múltiples interfaces de comunicación, incluyendo SPI, UART e I2C, junto con un ADC de 10 bits que ofrece 16 canales para entradas analógicas.

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

Asignación de Pines del STM8S208RB

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

Diagrama de Bloques del STM8S208RB

STM8S208RB Block Diagram
STM8S208RB Block Diagram

Aplicación del STM8S208RB

  • Electrónica de Consumo: El STM8S208RB se utiliza en productos como electrodomésticos y juguetes, donde se necesita un control simple y de bajo consumo.
  • Aplicaciones Automotrices: Se aplica en sistemas automotrices para tareas como el control de iluminación y la interfaz de sensores.
  • Control Industrial: El microcontrolador se utiliza para controlar máquinas y procesos de automatización.
  • Hogar Inteligente: Se utiliza en dispositivos como termostatos y sistemas de iluminación inteligente.
  • Dispositivos Portátiles: Dado su bajo consumo de energía, es ideal para dispositivos alimentados por batería.
  • IoT: Se puede encontrar en dispositivos IoT, particularmente aquellos que requieren procesamiento y conectividad eficientes.
  • Seguridad: El STM8S208RB se utiliza a menudo en alarmas, cámaras de seguridad y sistemas relacionados.
  • Salud: También encuentra uso en sistemas de monitoreo médico.

Proyecto IAR: Ejemplo de Parpadeo de LED GPIO en STM8S208RB

Siguiendo los pasos a continuación, deberías poder implementar con éxito el ejemplo de parpadeo de LED GPIO en el STM8S208RB utilizando la Biblioteca Periférica Estándar de ST y el compilador IAR. Este ejemplo puede servir como punto de partida para aplicaciones más complejas que involucren el control GPIO y la inicialización de periféricos.

Herramientas y Recursos Requeridos:

  • Biblioteca Periférica Estándar ST STM8S/A
  • Compilador IAR para STM8
  • Placa de Desarrollo STM8S208RBT6

Configuración del Pin del LED

En este ejemplo, los LEDs integrados están conectados a los pines PC6 y PC7 del microcontrolador 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

				
			

En este código:

  • LED1 se controla usando PC7, y LED2 se controla usando PC6.
  • Las funciones LED1_ON(), LED1_OFF(), y LED1_TOGGLE() controlan el estado del LED1, mientras que LED2_ON(), LED2_OFF(), y LED2_TOGGLE() controlan el LED2.

Código del Programa Principal

El siguiente es el programa principal para inicializar los LEDs, alternarlos e introducir un retardo entre cada alternancia.

				
					#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

				
			

Función de Retardo

A continuación se muestra el archivo fuente de la función de retardo (delay.c) que proporciona funciones de retardo de microsegundos y milisegundos.

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

				
			

Explicación de las Funciones de Retardo:

  • delay_us: Proporciona un retardo en microsegundos. La duración del retardo se ajusta multiplicando el valor de entrada por 3 para coincidir con la velocidad del reloj del sistema de 16 MHz.
  • delay_ms: Proporciona un retardo aproximado en milisegundos usando bucles anidados. Este método es adecuado para necesidades de temporización simples, pero para mayor precisión, se deben usar temporizadores de hardware.

Pasos de Configuración y Compilación del Proyecto

  1. Descargar e Instalar STSW-STM8069:

    • Asegúrese de haber descargado la Biblioteca Periférica Estándar STM8S (STSW-STM8069) versión 2.3.1 desde el sitio web oficial de ST.
    • Incluya los archivos de cabecera apropiados de la biblioteca, como stm8s.h, stm8s_gpio.h, etc., en su proyecto.
  2. Configuración del Compilador IAR:

    • Abra IAR Embedded Workbench y cree un nuevo proyecto para STM8S208RB.
    • Seleccione el dispositivo correcto (STM8S208RB) y asegúrese de que la cadena de herramientas esté configurada para STM8.
    • Agregue los archivos fuente necesarios: main.c, led.c, delay.c, etc.
    • Incluya la Biblioteca Periférica Estándar STM8S en su proyecto. Asegúrese de que las rutas correctas a los archivos de la biblioteca estén configuradas.
  3. Compilar y Cargar (Flash):

    • Compile el proyecto en IAR. Resuelva cualquier error en tiempo de compilación si es necesario.
    • Cargue el firmware en su placa de desarrollo STM8S208RB utilizando un programador/depurador apropiado (p. ej., ST-Link).
  4. Pruebas y Depuración:

    • Después de cargar el código, observe los LEDs en PC6 y PC7. Los LEDs deben parpadear con un intervalo de 1 segundo.
    • Use un depurador o salida serial (si está disponible) para inspeccionar el comportamiento de los pines GPIO y verificar la funcionalidad de las funciones de retardo.

Sugerencias y Notas Adicionales

  1. Uso de Temporizadores para Retraso: El retardo basado en software es simple pero ineficiente para aplicaciones más complejas. Para retrasos más precisos y eficientes, considere usar temporizadores de hardware en lugar de retrasos de software.

  2. Optimización de Energía: Si su aplicación requiere bajo consumo de energía, es posible que desee explorar los modos de bajo consumo del chip STM8S208RB, especialmente cuando el sistema está inactivo (como durante el parpadeo del LED).

  3. Depuración: Puede establecer puntos de interrupción en el código para recorrer el programa y monitorear los valores de las variables. Esto es particularmente útil para verificar el tiempo de los retrasos y el estado de los pines GPIO.

  4. Definiciones de Pines GPIO: Asegúrese de que las definiciones de LED_GPIO_PORT y LED_GPIO_PINS coincidan con el diagrama de pines real de su placa de desarrollo. Por ejemplo, confirme que PC6 y PC7 son los pines correctos para sus LEDs.

Compartir en:

Scroll al inicio

Cotización