STM8S208RB-Mikrocontroller: Funktionen, Spezifikationen, Anwendungen und IAR-Projektleitfaden

Dieser Artikel enthält grundlegende Informationen zum Mikrocontroller STM8S208RB und erklärt, wie man ein IAR-Projekt dafür erstellt.

STM8S208RB – Merkmale und Spezifikationen

Der STM8S208RB verfügt über einen 8-Bit-STM8-Kern, der mit einer maximalen Frequenz von 16 MHz läuft. Er umfasst 128 KB Flash-Speicher und 8 KB RAM und eignet sich somit für verschiedene Embedded-Anwendungen. Der Chip unterstützt mehrere Kommunikationsschnittstellen, darunter SPI, UART und I2C, sowie einen 10-Bit-ADC mit 16 Kanälen für analoge Eingänge.

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 Pinbelegung

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

STM8S208RB Blockdiagramm

STM8S208RB Block Diagram
STM8S208RB Block Diagram

STM8S208RB Anwendung

  • Unterhaltungselektronik: Der STM8S208RB wird in Produkten wie Haushaltsgeräten und Spielzeug verwendet, bei denen ein geringer Stromverbrauch und eine einfache Steuerung erforderlich sind.
  • Automobilanwendungen: Er wird in Automobilsystemen für Aufgaben wie Beleuchtungssteuerung und Sensoranschlüsse eingesetzt.
  • Industrielle Steuerung: Der Mikrocontroller wird zur Steuerung von Maschinen und Automatisierungsprozessen verwendet.
  • Smart Home: Er wird in Geräten wie Thermostaten und intelligenten Beleuchtungssystemen verwendet.
  • Tragbare Geräte: Aufgrund seines geringen Stromverbrauchs ist er ideal für batteriebetriebene Geräte geeignet.
  • IoT: Er ist in IoT-Geräten zu finden, insbesondere in solchen, die eine effiziente Verarbeitung und Konnektivität erfordern.
  • Sicherheit: Der STM8S208RB wird häufig in Alarmanlagen, Überwachungskameras und ähnlichen Systemen eingesetzt.
  • Gesundheit: Er findet auch in medizinischen Überwachungssystemen Verwendung.

IAR-Projekt: Beispiel für blinkende GPIO-LED auf STM8S208RB

Wenn Sie die folgenden Schritte befolgen, sollten Sie in der Lage sein, das Beispiel für das Blinken einer GPIO-LED auf dem STM8S208RB mithilfe der ST Standard Peripheral Library und des IAR-Compilers erfolgreich zu implementieren. Dieses Beispiel kann als Ausgangspunkt für komplexere Anwendungen dienen, die die GPIO-Steuerung und die Initialisierung von Peripheriegeräten umfassen.

Erforderliche Werkzeuge und Ressourcen:

  • ST STM8S/A Standard-Peripheriebibliothek
  • IAR-Compiler für STM8
  • STM8S208RBT6-Entwicklungsboard

LED-Pin-Konfiguration

In diesem Beispiel sind die integrierten LEDs mit den Pins PC6 und PC7 des Mikrocontrollers STM8S208RB verbunden.

				
					#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 diesem Code:

  • wird LED1 über PC7 und LED2 über PC6 gesteuert.
  • Die Funktionen LED1_ON(), LED1_OFF()und LED1_TOGGLE() steuern den Zustand von LED1, während LED2_ON(), LED2_OFF()und LED2_TOGGLE() steuern LED2.

Hauptprogrammcode

Das Folgende ist das Hauptprogramm zum Initialisieren der LEDs, zum Umschalten und zum Einfügen einer Verzögerung zwischen jedem Umschalten.

				
					#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

				
			

Verzögerungsfunktion

Nachfolgend finden Sie die Quelldatei der Verzögerungsfunktion (delay.c), die sowohl Mikrosekunden- als auch Millisekunden-Verzögerungsfunktionen bereitstellt.

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

				
			

Erläuterung der Verzögerungsfunktionen:

  • delay_us: Bietet eine Verzögerung in Mikrosekunden. Die Verzögerungsdauer wird angepasst, indem der Eingabewert mit 3 multipliziert wird, um ihn an die Systemtaktfrequenz von 16 MHz anzupassen.
  • delay_ms: Bietet eine grobe Verzögerung in Millisekunden unter Verwendung verschachtelter Schleifen. Diese Methode eignet sich für einfache Zeitsteuerungsanforderungen, für eine höhere Präzision sollten jedoch Hardware-Timer verwendet werden.

Projektkonfiguration und Kompilierungsschritte

  1. Herunterladen und Einrichten von STSW-STM8069:

    • Stellen Sie sicher, dass Sie die STM8S Standard Peripheral Library (STSW-STM8069) Version 2.3.1 von der offiziellen Website von ST heruntergeladen haben.
    • Fügen Sie die entsprechenden Header-Dateien aus der Bibliothek ein, z. B. stm8s.h, stm8s_gpio.h, usw., in Ihr Projekt ein.
  2. Einrichtung des IAR-Compilers:

    • Öffnen Sie IAR Embedded Workbench und erstellen Sie ein neues Projekt für STM8S208RB.
    • Wählen Sie das richtige Gerät (STM8S208RB) aus und stellen Sie sicher, dass die Toolchain für STM8 konfiguriert ist.
    • Fügen Sie die erforderlichen Quelldateien hinzu: main.c, led.c, delay.cusw.
    • Fügen Sie die STM8S Standard Peripheral Library in Ihr Projekt ein. Stellen Sie sicher, dass die richtigen Pfade zu den Bibliotheksdateien eingestellt sind.
  3. Kompilieren und flashen:

    • Kompilieren Sie das Projekt in IAR. Beheben Sie gegebenenfalls alle Kompilierungsfehler.
    • Flashen Sie die Firmware mit einem geeigneten Programmiergerät/Debugger (z. B. ST-Link) auf Ihr STM8S208RB-Entwicklungsboard.
  4. Testen und Debuggen:

    • Beobachten Sie nach dem Flashen des Codes die LEDs an PC6 und PC7. Die LEDs sollten im Abstand von 1 Sekunde blinken.
    • Verwenden Sie einen Debugger oder eine serielle Ausgabe (falls verfügbar), um das Verhalten der GPIO-Pins zu überprüfen und die Funktionalität der Verzögerungsfunktionen zu verifizieren.

Zusätzliche Vorschläge und Hinweise

  1. Verwendung von Timern für Verzögerungen: Die softwarebasierte Verzögerung ist einfach, aber für komplexere Anwendungen ineffizient. Für präzisere und effizientere Verzögerungen sollten Sie die Verwendung von Hardware-Timern anstelle von Software-Verzögerungen in Betracht ziehen.

  2. Energieoptimierung: Wenn Ihre Anwendung einen geringen Stromverbrauch erfordert, sollten Sie die Energiesparmodi des STM8S208RB-Chips in Betracht ziehen, insbesondere wenn das System im Leerlauf ist (z. B. während des Blinkens einer LED).

  3. Debugging: Sie können im Code Haltepunkte setzen, um das Programm schrittweise durchzugehen und die Werte von Variablen zu überwachen. Dies ist besonders nützlich, um das Timing von Verzögerungen und den Status von GPIO-Pins zu überprüfen.

  4. GPIO-Pin-Definitionen: Stellen Sie sicher, dass die LED_GPIO_PORT und LED_GPIO_PINS mit der tatsächlichen Pinbelegung Ihrer Entwicklungsplatine übereinstimmen. Vergewissern Sie sich beispielsweise, dass PC6 und PC7 die richtigen Pins für Ihre LEDs sind.

Teilen auf:

Nach oben scrollen

Instant Quote