STM32F030 Chip-Entwicklungsboard

Inhaltsverzeichnis

STM32F030 Development Board

Einführung in den STM32F030-Chip

Der STM32F030-Chip ist ein kostengünstiger 32-Bit-ARM-Cortex-M0-Mikrocontroller von STMicroelectronics. Er verfügt über bis zu 32 KB Flash-Speicher und 4 KB SRAM und kann mit bis zu 48 MHz betrieben werden. Er umfasst eine Vielzahl von Peripheriegeräten, wie analoge Komparatoren, Timer sowie I2C- und SPI-Schnittstellen. Der STM32F030 unterstützt auch Motorsteuerungsanwendungen und verfügt über eine Vielzahl integrierter analoger und digitaler Peripheriegeräte. Dank seiner geringen Größe und seines niedrigen Stromverbrauchs eignet sich der Chip ideal für den Einsatz in einer Vielzahl von Anwendungen, von Unterhaltungselektronik bis hin zu medizinischen und industriellen Systemen. Der Preis und die Leistung des Chips machen den STM32F030 zu einer hervorragenden Wahl für kostenbewusste Entwickler. Dank der Unterstützung einer Vielzahl von Entwicklungswerkzeugen, darunter STM32Cube und das grafische Konfigurationswerkzeug STM32CubeMX, ist es einfach, mit dem STM32F030 zu arbeiten und innovative Anwendungen zu entwickeln.

STM32F030 chip

Parameter

– CPU: ARM Cortex-M0-Kern mit 32-Bit-RISC-Architektur – Betriebsfrequenz
: bis zu 48 MHz
– Programmspeicher: bis zu 32 KB Flash
– RAM: bis zu 4 KB
– Taktquelle: intern 8 MHz oder extern 32 kHz
– Taktausgang: 2 x 32 kHz
– Digitale E/A: bis zu 36 E/A-Pins
– Analoge Eingänge: Bis zu 8 x
12-Bit-ADC-Kanäle – Timer: Bis zu 3 x 16-Bit-Timer –
Kommunikationsschnittstellen: Bis zu 2 x I2C, 2 x USART, SPI, CAN

Systemarchitektur

Das interne System-Framework des STM32F030 lässt sich einfach in 2 Master- und 4 Slave-Systeme unterteilen. Die Master- und Slave-Konzepte beziehen sich hier auf die Busmatrix:

  • Master
  • Cortex-M0-Kern AHB-Bus
  • GP-DMA
  • Slaves
  • Internes SRAM
  • Interner Flash
  • AHB2APB
  • AHB zu GPIO-Ports

Die Beziehung zwischen 2 Mastern und 4 Slaves ist in der folgenden Abbildung detaillierter dargestellt und gekennzeichnet:

STM32F030system architecture diagram

Für die AHB2APB-Brücke müssen Sie, wenn Sie die an den APB-Bus angeschlossenen Peripheriegeräte verwenden möchten, zunächst ein Register wie RCC_AHBENR aufrufen, um den Peripherietakt zu aktivieren. Das Peripheriegerät ist der Peripherietreiber. Diese Details werden in der Regel in der ST-Treiber-API behandelt.

Speicherübersicht

Im STM32F030-Programm werden Daten, Register und IO-Ports alle dem 4-GB-Adressraum (32-Bit-Maschine) zugeordnet. Die Speicherzuordnung des STM32F030 ist im Datenblatt detailliert beschrieben.

SRAM

Der STM32F030 SRAM hat eine Größe von 8 KB und kann in Byte-, Wort- und Halbwort-Einheiten angesprochen werden. Dieser Abschnitt wird verwendet, um den kompilierten und verknüpften Code, Daten und den Programmstapel während der Laufzeit zu speichern. Während der Programmausführung werden ständig Daten aus diesem SRAM gelesen oder in ihn geschrieben.

Blitz

Der interne Flash-Speicher des STM32F030 ist in der Regel für den vorgesehenen Zweck ausreichend. Er verfügt über 64 KB Flash-Speicherplatz für den Benutzer. Der Flash-Speicher im Chip wird als interner Flash-Speicher oder ROM bezeichnet (ROM und Flash unterscheiden sich darin, dass ROM vom Benutzer nicht gelöscht werden kann und während der Chip-Produktion fest eingestellt wird, während Flash jederzeit gelöscht und neu beschrieben werden kann).

Der interne Flash-Speicher des STM32F030 ist in zwei Typen unterteilt:

  • 64 KB Benutzer-Flash-Speicher: wird zum Herunterladen des vom Benutzer durch Kompilierung und Verknüpfung erzeugten .bin-Codes verwendet.
  • Info-Flash: Enthält Optionsbytes und Systemspeicher.

Optionsbytes können zur Konfiguration einiger Funktionen des IC verwendet werden.
Der Systemspeicher ist der Speicher des IC, der ein während der IC-Produktion festgelegtes Codesegment enthält, das nicht offen zugänglich ist und dessen Funktionsweise nur vermutet werden kann. Der Zweck des Systemspeichers besteht darin, als eingebetteter Bootloader zu fungieren. Im Allgemeinen wird er nicht für die Fehlersuche verwendet. Die typische Verwendung besteht darin, einen Debugger über eine SWD-Schnittstelle mit dem IC zu verbinden und den Code einfach herunterzuladen und zu debuggen. Bei Produkten ist die SWD-Schnittstelle jedoch möglicherweise nicht verfügbar. In diesem Fall kann der .bin-Code des Produkts über eine serielle Schnittstelle heruntergeladen und über den internen Systemspeicher-Bootloader des IC ausgeführt werden. Dies ist der typische Prozess für Firmware-Updates. STM stellt die Schnittstelle und eine Demo zur Verwendung des Systemspeicher-Bootloaders zur Verfügung. Außerdem gibt es zahlreiche zugehörige Dokumentationen, in denen die Verwendung erläutert wird.

Boot-Konfiguration

Das Debuggen über SWD wird als „Systemprogrammierung” bezeichnet, während das Laden und Starten von Programmen mit einem Bootloader als „Anwendungsprogrammierung” gilt. STM bietet drei konfigurierbare Boot-Modi für verschiedene Anwendungsszenarien.

  • Konfiguration des Bootmodus:

Zunächst gibt es einen Boot-Pin, der mit hohen oder niedrigen Pegeln verbunden ist. Wenn der Chip startet, überprüft er den Pegel des Boot-Pins und wechselt in den entsprechenden Boot-Modus. Darüber hinaus kann nBOOT1 im Optionsbyte konfiguriert werden, um den entsprechenden Boot-Modus auszuwählen.

  • Klassifizierung der Boot-Modi:

Es gibt drei Arten: User-Flash-Boot, der am häufigsten vorkommt; nach dem Kompilieren und Verknüpfen laden Sie den Code herunter, setzen ihn zurück und führen Ihren eigenen Flash-Code aus. Systemspeicher-Boot, der den internen Bootloader des IC zum Booten verwendet. SRAM-Boot.

Uhrrahmen

Der Taktgeberrahmen des STM32F030 ist wie folgt aufgebaut, und hier sind einige Definitionen dazu:

  • HSI: wird als interne Hochgeschwindigkeitstaktgeber bezeichnet und besteht aus einem RC-Oszillator.
  • HSE: wird als externe Hochgeschwindigkeitstaktgeber bezeichnet und kann an einen externen Quarz-/Keramikresonator oder eine externe Taktquelle angeschlossen werden.
  • LSI: wird als interne Niedriggeschwindigkeitstaktgeber bezeichnet, besteht aus einem RC-Oszillator, hat eine niedrige Frequenz und beträgt beim STM32F030 40 kHz.
  • LSE: wird als langsame externe Uhr bezeichnet, ist in der Regel mit einem Quarzkristall mit einer externen Frequenz von 32,768 kHz verbunden.
  • PLL: ist der Multiplikatorausgang der Phasenregelschleife.
  • HSI14 RC: Die Taktquelle kann nur für den ADC verwendet werden.
Clock tree of STM32F030

Peripheriegeräte, die nicht ausdrücklich angegeben sind, verwenden in der Regel PCLK. Hier ist eine kurze Liste der Situationen, die gemäß dem spezifischen Code mit AHB/APB aktiviert werden müssen:

  • AHB als Taktquelle verwenden: GPIOA-F, TS, CRC, FLITF, SRAM, DMA1.
  • APB1 als Taktquelle verwenden: TIM2, TIM3, TIM6, TIM14, WWDG, SPI2, USART2, I2C1, I2C2, PWR, DAC, CEC.
  • APB2 als Taktquelle verwenden: SYSCFG, ADC1, TIM1, SPI1, USART1, TIM15, TIM16, TIM17, DBGMCU.

Zurücksetzen-Funktion

Das Zurücksetzen ist ein wichtiger Teil des Startvorgangs des MCU-Systems. Wenn der IC mit der Ausführung des Programms beginnt, startet er mit dem Zurücksetzen, dem ersten Schritt nach dem Einschalten des Systems.

Rücksetzmechanismus von Cortex-M0

In der Startdatei von Cortex-M0 finden Sie immer den reset_handler, der sich an der ersten Position der Vektortabelle befindet. Die Adresse von Cortex-M0 lautet 0x0000 0004, und der PC-Wert, wenn Cortex-M0 seine Arbeit aufnimmt, ist diese Adresse. Im reset_handler wird in der Regel die vom Benutzer implementierte SystemInit-Funktion aufgerufen, die die Uhr der verschiedenen Komponenten einstellt, die für den korrekten Betrieb des Systems erforderlich sind, damit das System später problemlos funktionieren kann. Anschließend wird der Eintrag __main in der Bibliothek aufgerufen, der einige anfängliche Verarbeitungsschritte der C-Laufzeitbibliothek durchführen und den Stack einrichten sollte.

Arten des Zurücksetzens

Es gibt drei Haupttypen von Resets für STM32F030: Power-Reset, System-Reset und RTC-Domain-Reset.

Der Power-Reset hängt mit der Stromversorgung des IC zusammen. Dieser Reset wird durch das Einschalten und das Aufwachen aus dem Standby-Modus ausgelöst, und die Systeminitialisierung beginnt nach dem Reset.

Der System-Reset wird vom System ausgelöst. Das heißt, die Stromversorgung ist normal, aber wenn die Reset-Taste gedrückt wird, das entsprechende Register per Software zurückgesetzt wird oder der Watchdog ausgelöst wird, erfolgt dieser Reset. Wenn dieser Reset erfolgt, besteht der einzige Unterschied zum Power-Reset darin, dass das relevante Bit im RCC_CSR-Register, das zur Anzeige der Reset-Quelle verwendet wird, nicht zurückgesetzt wird, während alle anderen Register auf den Zustand unmittelbar nach dem Einschalten zurückgesetzt werden.

Der Auslöser für den RTC-Domänen-Reset ist ebenfalls ein Software-Trigger. Er wird durch Schreiben in das entsprechende Bit im RCC_BDCR-Register ausgelöst. Diese Art von Reset wirkt sich jedoch nur auf den RTC- und LSE-Quarz usw. aus.

Kontinuierlicher Verfeinerungszyklus

CRC, die zyklische Redundanzprüfung, ist ein Prüfalgorithmus, der die Integrität von übertragenen/gespeicherten Daten überprüft. Da er an vielen Stellen eingesetzt werden kann, implementiert STM32F030 diesen Algorithmus mit einer CRC-Hardware-Recheneinheit im IC. Wenn eine Anwendung CRC verwenden muss, kann die Hardwareeinheit per Software gesteuert werden, um die Anforderungen zu erfüllen (natürlich kann CRC auch in Software implementiert werden, aber die Geschwindigkeit ist definitiv nicht so hoch wie bei Hardware-CRC).

CRC (Cyclic Redundancy Check) calculation unit

Der CRC-Prozess wird innerhalb des IC implementiert, sodass Sie nur wissen müssen, wie man ihn verwendet, und er ist sehr einfach zu bedienen. Schreiben Sie die zu berechnenden Quelldaten aus dem Datenregister (Eingabe), starten Sie die Berechnung der CRC-Berechnungseinheit und lesen Sie dann die berechneten Ergebnisse im Datenregister (Ausgabe) aus.

Tatsächlich verwenden die Eingabe und Ausgabe des CRC-Datenregisters des STM32F030 dasselbe Register, da zuerst die Eingabe erfolgen muss, bevor die Ausgabe abgerufen werden kann, um dann mit der nächsten Eingabe fortzufahren. Aus diesem Prozess geht hervor, dass die Eingabe und Ausgabe nicht gleichzeitig verwendet werden, sodass Sie direkt ein Register verwenden können, um die beiden Funktionen zu multiplexen. Das Register kann mit 32 Bit, 16 Bit oder 8 Bit betrieben werden, um unterschiedlichen Anforderungen gerecht zu werden.

STM32F030-Entwicklungsboard – STM32f0308 Discovery

Die Entwicklung dieses STM32F030-Mikrocontrollers basiert auf der neuesten HAL-Bibliothek von STM32, dem von STM32CubeMX generierten Initialisierungscode und dem Compiler GCC. Nachfolgend finden Sie den Schaltplan, das PCB-Diagramm und die bestückte Platine. STM32 bietet viele Einstiegs-Entwicklungsboards, wie beispielsweise die Discovery-Serie und die Nucleo-Serie. Das stm32f0308 discovery ist eines der Boards der Discovery-Serie, das mit dem STM32F030-Chip ausgestattet ist.

STM32F030 Development Board
STM32F030 Development Board

Die Grundfunktionen und Merkmale der Entwicklungsboards der Discovery-Serie sind ähnlich, aber die Fähigkeiten der zugehörigen Chips können variieren. Die Merkmale des stm32f0308 Discovery sind wie folgt:

Praktische IO-Port-Erweiterung: Mit nur einem USB-Kabel, das an einen PC angeschlossen ist, kann die Entwicklung durchgeführt werden. Die IO-Ports des STM32F030-Chips auf dem Entwicklungsboard sind erweitert, sodass verschiedene Geräte einfach über DuPont-Kabel angeschlossen werden können.

Debugging-Schnittstelle: Das Entwicklungsboard verfügt über eine integrierte SWD-Debugging-Schnittstelle, die mit einem weiteren Cortex-M3-Chip von ST implementiert ist (derzeit sollte auch die auf dem Markt erhältliche Version v9 von JLINK den Cortex-M3-Chip von ST verwenden). Diese SWD-Debugging-Schnittstelle kann durch den Anschluss einer Jumper-Kappe separat verwendet werden, was bedeutet, dass das stm32f0308-discovery als eigenständiger SWD-Debugger verwendet werden kann.

Flexible Stromversorgung: Das Entwicklungsboard selbst wird über USB mit Strom versorgt, verfügt jedoch über eine Spannungswandlerschaltung, die 5-V- und 3-V-Stromversorgungen für externe Geräte ausgeben kann (beachten Sie, dass der Stromversorgungsstrom weiterhin begrenzt ist). Im Allgemeinen können kleine Module und Schnittstellen direkt darüber mit Strom versorgt werden.

Peripheriegeräte auf Board-Ebene: Da es sich um ein kostengünstiges Einstiegs-Entwicklungsboard handelt, sind die integrierten Peripheriegeräte sehr einfach und bestehen aus zwei Tasten und vier LEDs. Von den beiden Tasten dient eine zum Zurücksetzen und die andere ist eine vom Benutzer programmierbare Taste. Von den vier LEDs ist eine eine Betriebsanzeige, eine eine SWD-Debug-Statusanzeige und die beiden übrigen können zur Steuerung programmiert werden. In Wirklichkeit sind also nur eine Benutzertaste und zwei Benutzer-LEDs als Onboard-Peripheriegeräte für die Steuerung programmierbar.

Leistung

  • Reservierte SWD-Schnittstelle für die Fehlersuche durch ST-LINK;
  • Die PA4-Schnittstelle (DAC-Ausgang) mit hoher Port-Ansteuerungsleistung;
  • Zwei leichtgängige Tasten und 3 LEDs für einfaches Debugging;
  • LCD1602-Schnittstelle und eine Schnittstelle, die mit gängigen TFT-LCDs kompatibel ist;
  • Verwendung eines Superkondensators als RTC-Backup-Stromversorgung;
  • USB-Schnittstelle mit Stromschutz;
  • Mehrere Testpunkte für die Stromversorgung für Oszilloskop oder Multimeter.

Schematisch

STM32F030 development board Schematic
STM32F030 development board Schematic

PCB

pcb of STM32F030
pcb of STM32F030

Abonnieren

Tragen Sie sich in unsere Abonnentenliste ein, um monatliche Blog-Updates, Technologie-News und Fallstudien zu erhalten. Wir versenden niemals Spam, und Sie können sich jederzeit wieder abmelden.

Nach oben scrollen

Instant Quote