Microcontrolador STM8S208RB: Características, especificações, aplicações e guia de projeto IAR

Este artigo apresenta as informações básicas do microcontrolador STM8S208RB e como criar um projeto IAR para ele.

Características e especificações do STM8S208RB

O STM8S208RB possui um núcleo STM8 de 8 bits operando a uma frequência máxima de 16 MHz. Ele inclui 128 KB de memória Flash e 8 KB de RAM, tornando-o adequado para várias aplicações embarcadas. O chip suporta várias interfaces de comunicação, incluindo SPI, UART e I2C, juntamente com um ADC de 10 bits que oferece 16 canais 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

Pinagem do STM8S208RB

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

Diagrama de blocos do STM8S208RB

STM8S208RB Block Diagram
STM8S208RB Block Diagram

Aplicação STM8S208RB

  • Eletrônicos de consumo: O STM8S208RB é usado em produtos como eletrodomésticos e brinquedos, onde é necessário baixo consumo de energia e controle simples.
  • Aplicações automotivas: É aplicado em sistemas automotivos para tarefas como controle de iluminação e interface de sensores.
  • Controle industrial: O microcontrolador é usado para controlar máquinas e processos de automação.
  • Casa inteligente: É usado em dispositivos como termostatos e sistemas de iluminação inteligentes.
  • Dispositivos portáteis: devido ao seu baixo consumo de energia, é ideal para dispositivos operados por bateria.
  • IoT: Pode ser encontrado em dispositivos IoT, particularmente aqueles que exigem processamento e conectividade eficientes.
  • Segurança: O STM8S208RB é frequentemente usado em alarmes, câmeras de segurança e sistemas relacionados.
  • Saúde: Também é utilizado em sistemas de monitorização médica.

Projeto IAR: Exemplo de LED GPIO piscando no STM8S208RB

Seguindo as etapas abaixo, você poderá implementar com sucesso o exemplo de piscar LED GPIO no STM8S208RB usando a Biblioteca Periférica Padrão ST e o compilador IAR. Este exemplo pode servir como ponto de partida para aplicações mais complexas envolvendo controle GPIO e inicialização periférica.

Ferramentas e recursos necessários:

  • Biblioteca periférica padrão ST STM8S/A
  • Compilador IAR para STM8
  • Placa de desenvolvimento STM8S208RBT6

Configuração dos pinos LED

Neste exemplo, os LEDs integrados estão conectados aos pinos PC6 e PC7 do 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

				
			

Neste código:

  • O LED1 é controlado usando PC7, e o LED2 é controlado usando PC6.
  • As funções LED1_ON(), LED1_OFF()e LED1_TOGGLE() controlam o estado do LED1, enquanto LED2_ON(), LED2_OFF()e LED2_TOGGLE() controlam o LED2.

Código do programa principal

A seguir, apresentamos o programa principal para inicializar os LEDs, alterná-los e introduzir um atraso entre cada alternância.

				
					#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

				
			

Função de atraso

Abaixo está o arquivo fonte da função de atraso (delay.c) que fornece funções de atraso em microssegundos e milissegundos.

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

				
			

Explicação das funções de atraso:

  • delay_us: Fornece um atraso em microssegundos. A duração do atraso é ajustada multiplicando o valor de entrada por 3 para corresponder à velocidade do clock do sistema de 16 MHz.
  • delay_ms: Proporciona um atraso aproximado em milissegundos usando loops aninhados. Este método é adequado para necessidades de temporização simples, mas para maior precisão, devem ser utilizados temporizadores de hardware.

Etapas de configuração e compilação do projeto

  1. Baixe e configure o STSW-STM8069:

    • Certifique-se de ter baixado a Biblioteca de Periféricos Padrão STM8S (STSW-STM8069) versão 2.3.1 do site oficial da ST.
    • Inclua os arquivos de cabeçalho apropriados da biblioteca, como stm8s.h, stm8s_gpio.h, etc., no seu projeto.
  2. Configuração do compilador IAR:

    • Abra o IAR Embedded Workbench e crie um novo projeto para STM8S208RB.
    • Selecione o dispositivo correto (STM8S208RB) e certifique-se de que o conjunto de ferramentas esteja configurado para STM8.
    • Adicione os arquivos fonte necessários: main.c, led.c, delay.c, etc.
    • Inclua a biblioteca de periféricos padrão STM8S no seu projeto. Certifique-se de que os caminhos corretos para os arquivos da biblioteca estejam definidos.
  3. Compile e grave:

    • Compile o projeto no IAR. Resolva quaisquer erros de compilação, se necessário.
    • Grave o firmware na placa de desenvolvimento STM8S208RB usando um programador/depurador apropriado (por exemplo, ST-Link).
  4. Teste e depuração:

    • Após gravar o código, observe os LEDs em PC6 e PC7. Os LEDs devem piscar com um intervalo de 1 segundo.
    • Use um depurador ou saída serial (se disponível) para inspecionar o comportamento dos pinos GPIO e verificar a funcionalidade das funções de atraso.

Sugestões e notas adicionais

  1. Usando temporizadores para atrasos: O atraso baseado em software é simples, mas ineficiente para aplicações mais complexas. Para atrasos mais precisos e eficientes, considere usar temporizadores de hardware em vez de atrasos de software.

  2. Otimização de energia: Se sua aplicação requer baixo consumo de energia, você pode explorar os modos de baixa energia do chip STM8S208RB, especialmente quando o sistema está ocioso (como durante o piscar do LED).

  3. Depuração: você pode definir pontos de interrupção no código para percorrer o programa e monitorar os valores das variáveis. Isso é particularmente útil para verificar o tempo dos atrasos e o estado dos pinos GPIO.

  4. Definições dos pinos GPIO: Certifique-se de que o LED_GPIO_PORT e LED_GPIO_PINS correspondam à configuração real dos pinos da sua placa de desenvolvimento. Por exemplo, confirme se PC6 e PC7 são os pinos corretos para os seus LEDs.

Compartilhar em:

Rolar para cima

Instant Quote