Schweitzer Fachinformationen
Wenn es um professionelles Wissen geht, ist Schweitzer Fachinformationen wegweisend. Kunden aus Recht und Beratung sowie Unternehmen, öffentliche Verwaltungen und Bibliotheken erhalten komplette Lösungen zum Beschaffen, Verwalten und Nutzen von digitalen und gedruckten Medien.
»Hervorzuheben sind die klare Struktur sowie die gut nachvollziehbaren Beispiele zum Erlernen der Programmierung eines Mikrocontrollers.« (ekz Bibliotheksservice, 07/2022)
Will man Software für einen Mikrocontroller entwickeln, ist es hilfreich, wenn grundlegende Kenntnisse zur Hardware vorhanden sind. Die erforderlichen Kenntnisse müssen nicht so tief gehend sein, wie dies für Hardwareentwickler erforderlich ist, man sollte aber in der Lage sein, sich mit ihnen auf einer gemeinsamen Basis verständigen zu können.
Daher beginne ich dieses Buch mit einem kurzen Überblick über die Mitglieder der STM32F4xx-Familie.
Wie bereits in der Einleitung erwähnt, besteht die STM32F4xx-Familie aus einer Vielzahl von Mikrocontrollern, die, abhängig von ihrer Ausstattung und ihrer Leistungsfähigkeit, in verschiedene Produktlinien? eingeordnet sind:
Die Advanced Line? umfasst die Ausführungen STM32F469, STM32F429 und STM32F427. Diese bieten die größte Funktionsvielfalt und enthalten unter anderem Ethernet-Interfaces. Bis auf den STM32F427 enthalten die Mitglieder der Advanced Line auch einen TFT-/LCD-Controller. Die genannten Mikrocontroller können mit einer Taktfrequenz von bis zu 180 MHz eingesetzt werden. Je nach Modell verfügen sie über einen Flashspeicher von bis zu 2 MByte und bis zu 384 KByte SRAM.
Die sogenannte Foundation Line? umfasst die Typen STM32F446, STM32F407 und STM32F405. Die maximale Taktfrequenz des STM32F405 beträgt 168 MHz, die beiden anderen können - wie die Mitglieder der Advanced Line - mit einer Frequenz von bis zu 180 MHz getaktet werden.
Die Access Line? umfasst mit den Mikrocontrollern STM32F401, STM32F410, STM32F411, STM32F412 und STM32F413 die Familienmitglieder, die am wenigsten leistungsstark sind. Dies betrifft weniger die Größe von Flashspeicher (maximal 1.536 KByte) und SRAM (bis zu 320 KByte), sondern vielmehr die Zahl serieller Schnittstellen und anderer Peripheriekomponenten. Die Taktfrequenz ist mit maximal 100 MHz aber immer niedriger verglichen mit den Mitgliedern der Advanced Line bzw. der Foundation Line.
Abbildung 1.1 zeigt die derzeit verfügbaren Mikrocontroller dieser Familie (Stand: März 2022). Der in diesem Kapitel exemplarisch beschriebene Mikrocontroller STM32F446 ist durch einen Rahmen hervorgehoben.
Abb. 1.1: Überblick über die STM32F4-Familie
Hinweis
Obwohl ich mich nachfolgend auf den STM32F446 konzentriere, lässt sich seine Beschreibung nicht nur auf die anderen Mitglieder der STM32F4-Familie übertragen, sondern auch - mit Ausnahme der Arm-spezifischen Bestandteile sowie der herstellerspezifischen Peripheriekomponenten - auf beliebige andere Mikrocontroller. Natürlich gibt es Unterschiede bei der Programmierung der integrierten Peripheriekomponenten, was sich nicht zuletzt in unterschiedlichen Benennungen und Adressen der Register wie auch in der Anschlussbelegung zeigt, das Funktionsprinzip ist aber überall sehr ähnlich. Die Portierung der Kenntnisse auf Mikrocontroller anderer Hersteller sollte recht einfach sein, da Sie hier ja die Programmierung von der Pike auf lernen.
Der STM32F446 ist in verschiedenen Ausführungsvarianten erhältlich. Im folgenden Abschnitt werden diese näher beschrieben.
Tabelle 1.1 zeigt die Ausführungen und ihre Unterschiede:
Peripheriekomponenten
STM32F446
MC
ME
RC
RE
VC
VE
ZC
ZE
Flash in KByte
256
512
SRAM in KByte
System
128 (112 + 16)
Backup
4
Controller für flexiblen Speicher (FMC)
Nein
Ja
Timer
GP
10
Advanced
2
Basic
Kommunikations-Interfaces
SPI/I²S
4/3 (simplex)
I²C
4/1 davon als FMP+ (Fast mode Plus)
UART/USART
2/4
USB OTG FS
Ja, 6 Endpunkte
USB OTG HS
Ja, 8 Endpunkte
CAN
SAI
SDIO
SPDIF-Rx
1
HDMI-CEC
Quad SPI
Kamera-Interface
GPIOs
63
50
81
114
12-Bit-ADC (Anzahl/Kanäle)
3/14
3/16
3/24
12-Bit-DAC
Ja, 2 Kanäle
Maximale Taktfrequenz
180 MHz
Betriebsspannung
1,8 bis 3,6 V
Gehäuse und Pins
WLCSP81
LQFP64
LQFP100
LQFP144U FBGA144
Wie Sie Tabelle 1.1 entnehmen können, sind allein vom STM32F446 acht Ausführungen erhältlich, die durch nachgestellte Buchstaben und Ziffern unterschieden werden. Abbildung 1.2 zeigt, wie die Bezeichnungen bei STM interpretiert werden.
Abb. 1.2: Produktbezeichnungen der STM32F4xx-Mikrocontroller
Möchten Sie einen anderen Mikrocontroller aus der STM32F4xx-Familie verwenden, finden Sie die entsprechenden Tabellen auf der Webseite https://www.st.com/en/microcontrollers-microprocessors/stm32f4-series.html im Menü Resources.
Der adressierbare Speicher ist in acht Blöcke mit einer Größe von jeweils 512 MByte unterteilt, es können somit maximal 232 - 1 Byte = 4.294.967.296 Byte adressiert werden. Dieser Wert stellt aber nur das theoretische Maximum dar, tatsächlich verfügt keiner der genannten Mikrocontroller über derart viel Speicher, sodass die höchste adressierbare Speicherstelle deutlich kleiner ist.
Abbildung 1.3 zeigt eine grobe Unterteilung dieser Blöcke und der hier verfügbaren Funktionen. Im rechten Teil von Abbildung 1.3 sehen Sie einige Abkürzungen, wie z.B. AHB1/2/3 und APB1/2: Was es damit auf sich hat, wird weiter unten in Abschnitt 1.2.4 erläutert.
Abb. 1.3: Speicherbereiche (Memory-Mapping), aus dem Datenblatt entnommen
Die folgenden Tabellen zeigen die verfügbaren Peripheriekomponenten, den jeweils genutzten Bus, über den sie angesprochen werden, sowie die Adressen, die den Speicherbereichen und Registern zugeordnet sind.
Wichtig
Zwei Adressbereiche möchte ich vorab besonders hervorheben: Sie sind zwar in Abbildung 1.3 angegeben, fallen dort aber nicht besonders deutlich auf: Es handelt sich um den Flashspeicher (ab Adresse 0x0800 0000) und das SRAM (ab Adresse 0x2000 0000). Die Größe des Speichers variiert bei den verschiedenen Mikrocontrollern.
Die Adressbereiche in den folgenden Tabellen sind nach den jeweiligen Bussen (Cortex-M4, AHB und APB) sortiert. Dies führt dazu, dass die Blockgrenzen in Abbildung 1.2 quasi »ungültig« werden. Darüber hinaus sind große Adressbereiche im Speicherraum reserviert, sodass sie nicht genutzt werden können. Reservierte Speicherbereiche wurden in den folgenden Tabellen nicht aufgeführt.
Bus
Adressgrenzbereiche
Komponente(n)
Cortex-M4-interner Bus
0xE000 0000-0xE00F FFFF
Cortex-M4-interne Komponenten (z.B. CPU-Kern, NVIC, Floating-Point-Unit (FPU) usw.)
Adressbereiche
AHB3
0xD000 0000-0xDFFF FFFF
FMC Bank 6
0xC000 0000-0xCFFF FFFF
FMC Bank 5
Dateiformat: ePUBKopierschutz: Wasserzeichen-DRM (Digital Rights Management)
Systemvoraussetzungen:
Das Dateiformat ePUB ist sehr gut für Romane und Sachbücher geeignet - also für „fließenden” Text ohne komplexes Layout. Bei E-Readern oder Smartphones passt sich der Zeilen- und Seitenumbruch automatisch den kleinen Displays an. Mit Wasserzeichen-DRM wird hier ein „weicher” Kopierschutz verwendet. Daher ist technisch zwar alles möglich – sogar eine unzulässige Weitergabe. Aber an sichtbaren und unsichtbaren Stellen wird der Käufer des E-Books als Wasserzeichen hinterlegt, sodass im Falle eines Missbrauchs die Spur zurückverfolgt werden kann.
Weitere Informationen finden Sie in unserer E-Book Hilfe.