Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
hardware [2019/02/04 14:10] – Externe Bearbeitung 127.0.0.1 | hardware [2019/11/27 19:52] (aktuell) – [Die Hardware beschaffen] huwi | ||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
Die standardisierte 32-Bit ARM-Architektur der Firma [[http:// | Die standardisierte 32-Bit ARM-Architektur der Firma [[http:// | ||
- | >>> | + | > |
ARM Controller sind dem Wesen nach [[http:// | ARM Controller sind dem Wesen nach [[http:// | ||
- | >>>> | + | > |
====== Cortex-M ====== | ====== Cortex-M ====== | ||
Zeile 15: | Zeile 14: | ||
Die folgende (mit Sicherheit nicht vollständige) Darstellung soll die Skalierung der Cortex-M Familie verdeutlichen. | Die folgende (mit Sicherheit nicht vollständige) Darstellung soll die Skalierung der Cortex-M Familie verdeutlichen. | ||
- | {{: | + | >{{: |
Der Formfaktor dieser 32-Bit Controller lässt sich durchaus mit den größeren Mega und X-Mega Controllern der AVR-Familie von Atmel vergleichen. Für den blutigen Anfänger unter den Bastlern könnte jedoch die SMD-Bauweise eine nicht unerhebliche Einstiegshürde darstellen. | Der Formfaktor dieser 32-Bit Controller lässt sich durchaus mit den größeren Mega und X-Mega Controllern der AVR-Familie von Atmel vergleichen. Für den blutigen Anfänger unter den Bastlern könnte jedoch die SMD-Bauweise eine nicht unerhebliche Einstiegshürde darstellen. | ||
- | >>> | + | > |
Die Standardisierung des ARM betrifft nicht nur die Hardware, sondern auch die gemeinsamen Aspekte aller ARM-Applikationen. Die ARM-Lizenznehmer halten sich strikt an die Architektur des ARM-Kerns und fügen nur ihre spezifische Peripherie hinzu. Alle den Kern betreffenden Softwarefunktionen lassen sich somit herstellerübergreifend standardisieren. | Die Standardisierung des ARM betrifft nicht nur die Hardware, sondern auch die gemeinsamen Aspekte aller ARM-Applikationen. Die ARM-Lizenznehmer halten sich strikt an die Architektur des ARM-Kerns und fügen nur ihre spezifische Peripherie hinzu. Alle den Kern betreffenden Softwarefunktionen lassen sich somit herstellerübergreifend standardisieren. | ||
Zeile 33: | Zeile 32: | ||
Damit sind grundlegende Funktionen aller ARM Controller kompatibel und lassen sich herstellerunabhängig und portabel verwenden. In der später vorgestellten Entwicklungsumgebung steht Ihnen eine umfangreiche Hilfe zum CMSIS zur Verfügung. | Damit sind grundlegende Funktionen aller ARM Controller kompatibel und lassen sich herstellerunabhängig und portabel verwenden. In der später vorgestellten Entwicklungsumgebung steht Ihnen eine umfangreiche Hilfe zum CMSIS zur Verfügung. | ||
- | {{: | + | {{: |
====== STM32 ====== | ====== STM32 ====== | ||
Zeile 43: | Zeile 42: | ||
* Spezialanwednungen, | * Spezialanwednungen, | ||
- | {{: | + | >{{: |
ST bietet, wie jeder Hersteller, für verschiedene Anwendungsfälle Referenzhardware zum Kennenlernen und Testen an. Beispiele für solche [[http:// | ST bietet, wie jeder Hersteller, für verschiedene Anwendungsfälle Referenzhardware zum Kennenlernen und Testen an. Beispiele für solche [[http:// | ||
Zeile 51: | Zeile 50: | ||
* [[http:// | * [[http:// | ||
- | Alle weiteren Ausführungen in diesem Tutorial beziehen sich auf das STM32F4 | + | Alle weiteren Ausführungen in diesem Tutorial beziehen sich auf zwei empfohlene Hardware-Varianten. Für Einsteiger und den schmalen Geldbeutel empfhelen wir das mySTM32 Board light. Für erfahrenere Entwickler das etwas preisintensivere STM32F407 |
- | ====== STM32F4 Discovery ====== | + | |
- | Das STM32F4 DISCOVERY ist derzeit eines der neuesten Evaluierungsboards von ST. Es ermöglicht dem Anwender besonders die Hochleistungs-Eigenschaften des Cortex-M4 zu erkunden und trotzdem Anwendungen einfach zu entwickeln. Mit dem unten vorgestellten Zusatz-Board mySTM32-Board-F4D verfügen der Anfänger und der Umsteiger über alles, was für den schnellen Einstieg in die ARM-Programmierung, | + | * [[STM32F407 Discovery]] {{:bspdiscoverymitaddon.png? |
- | + | ||
- | | + | |
- | * 32 Bit ARM Cortex M4 Kern | + | |
- | * 1 MByte FLASH | + | |
- | * 192 KByte RAM | + | |
- | * 168 MHz | + | |
- | * [[http:// | + | |
- | * [[http://www.st.com/ | + | |
- | * [[http:// | + | |
- | * 8 LEDs | + | |
- | * 1 für USB Kommunikation | + | |
- | * 1 Power-LED für 3,3 V | + | |
- | * 4 durch den Anwender nutzbare LEDs | + | |
- | * 2 LEDs für USB on-the-go | + | |
- | * 2 Taster | + | |
- | * 1 für Reset | + | |
- | * 1 frei verfügbar für Anwender | + | |
- | * onBoard Programmer ST-LINK V2 | + | |
- | + | ||
- | {{: | + | |
- | + | ||
- | Die Bestückung mit simplen Ein- und Ausgabegeräten ist auf dem Board mit einem Taster und vier frei verfügbaren LEDs doch eher spartanisch gehalten. In diesem Punkt bringt das Erweiterungsboard genügend Abhilfe. Interessant für anspruchsvollere Anwendungen sind natürlich die Audio-Features und der Lagesensor auf dem Board. Hervorzuheben ist ebenfalls der integrierte ST-LINK/V2 Programmer. Mit diesem können über den vorhandenen SWD-Pfostenstecker (Serial Wire Debugging) andere STM32 programmiert und debuggt werden. | + | |
- | + | ||
- | {{:stm32sysml.jpg|}} | + | |
Für das Verständnis des ARM-Cortex Controllers sind einige grundlegende Strukturmerkmale wichtig. Neben dem Programmier- und Debug-Interface, | Für das Verständnis des ARM-Cortex Controllers sind einige grundlegende Strukturmerkmale wichtig. Neben dem Programmier- und Debug-Interface, | ||
- | * **RCC (Real-Time | + | * **RCC (Reset and Clock Control)**\\ Dieser Baustein liefert den Takt für jede einzelne Komponente, die benutzt werden soll. Im Gegensatz zum AVR ist faktisch die gesamte Peripherie nach dem RESET zunächst ausgeschaltet. Jeder einzelne Baustein muss durch Zuweisen eines Taktsignals erst eingeschaltet werden, bevor man diesen initialisieren und dann benutzen kann. |
* **AHB (Advanced High-performance Bus)**\\ ARM Controller besitzen mindestens einen sehr schnellen Haupt-Bus mit Busmatrix. Über diesen leistungsfähigsten Bus im System werden ausgewählte extrem schnelle Bausteine, wie die [[http:// | * **AHB (Advanced High-performance Bus)**\\ ARM Controller besitzen mindestens einen sehr schnellen Haupt-Bus mit Busmatrix. Über diesen leistungsfähigsten Bus im System werden ausgewählte extrem schnelle Bausteine, wie die [[http:// | ||
* **APB (Advanced Peripheral Bus))**\\ Die Peripherie, wie Timer, ADC, USART usw. werden über ein eigenes Bus-Interface angesprochen. Die gerätespezifische Nutzung von Port-Pins wird als **alternativ function** bezeichnet. Je nach Geräteklasse sind diese einem schnellen oder auch langsameren Peripherie-Bus zugeordnet. | * **APB (Advanced Peripheral Bus))**\\ Die Peripherie, wie Timer, ADC, USART usw. werden über ein eigenes Bus-Interface angesprochen. Die gerätespezifische Nutzung von Port-Pins wird als **alternativ function** bezeichnet. Je nach Geräteklasse sind diese einem schnellen oder auch langsameren Peripherie-Bus zugeordnet. | ||
Zeile 87: | Zeile 62: | ||
Im Tutorial werden diese Bausteine öfter eine Rolle spielen. Es ist einfach im Sinne des Lernens durch Wiederholung zweckmäßig, | Im Tutorial werden diese Bausteine öfter eine Rolle spielen. Es ist einfach im Sinne des Lernens durch Wiederholung zweckmäßig, | ||
- | |||
- | {{: | ||
- | |||
- | ====== mySTM32-Board-F4D ====== | ||
- | Das mySTM32-Board-F4D fungiert als Add-On und ist eine ideale Ergänzung zum Board „STM32F4-Discovery“. Sie erweitern mit diesem Add-On in einfacher Art und Weise die Möglichkeiten Ihres STM32F4-Discovery. Zusätzliche digitale und analoge Ein- und Ausgabegeräte sowie eine USB-USART Bridge für die Kommunikation mit dem PC komplettieren ihre Experimentier- und Lernplattform. Darüber hinaus sind weitere optionale Schnittstellen implementiert, | ||
- | |||
- | **Besonderheiten: | ||
- | Das mySTM32-Board-F4D ist besonders darauf ausgelegt, Kennern der myAVR-Produkte und der 8-Bit AVR-Controller, | ||
- | |||
- | Das mySTM32-Board-F4D verfügt über einige typische, von der myAVR-Serie bekannte Ein- und Ausgabegeräte, | ||
- | |||
- | **Eigenschaften: | ||
- | * Schnittstelle für STM32F4-Discovery | ||
- | * Schnittstelle für myAVR Produkte | ||
- | * einfache Handhabung | ||
- | * typische Ein- und Ausgabegeräte (Taster, LEDs, usw.) | ||
- | * analoger Fotosensor zum Experimentieren mit unterschiedlichen Helligkeitsgraden | ||
- | * MircoSD-Kartenhalter | ||
- | * Raster für flexible Anwendung (2.54mm) | ||
- | * USB-UART-Bridge | ||
- | * optionale Schnittstelle: | ||
- | * optionale Schnittstelle: | ||
- | >>> | ||
- | |||
- | {{: | ||
====== STM32 Peripherie Treiber ====== | ====== STM32 Peripherie Treiber ====== | ||
- | Es handelt sich hier um ein komplettes Firmware-Paket, bestehend aus Gerätetreiber für alle Standard-Peripheriegeräte der STM32F4 32-Bit-Flash-Mikrocontroller-Familie. | + | Es handelt sich hier um ein zwar schon etwas ältere aber sehr kompakte Treiber-Pakete, bestehend aus Gerätetreiber für alle internen |
- | Die Firmware-Bibliothek ermöglicht im Anwenderprogramm die Verwendung jedes Gerätes, ohne die speziellen Einzelheiten der Register | + | Die Bibliothek ermöglicht im Anwenderprogramm die Verwendung jedes Bausteins, ohne die speziellen Einzelheiten der Registestruktur |
- Ein vollständiges Register Adress-Mapping mit allen Bits, Bit-Feldern und Registern, in C deklariert. | - Ein vollständiges Register Adress-Mapping mit allen Bits, Bit-Feldern und Registern, in C deklariert. | ||
- Eine Sammlung von Routinen und Datenstrukturen, | - Eine Sammlung von Routinen und Datenstrukturen, | ||
- | - Eine Reihe von Beispielen für alle gängigen Peripheriegeräte. Sie finden diese auf der STM32F DISCOVERY Webseite unter [[http:// | + | - Eine Reihe von Beispielen für alle gängigen Peripheriegeräte. |
Durch die im nächsten Abschnitt vorgestellte Entwicklungsumgebung werden die Bibliotheken für das CMSIS und die Peripherie-Treiber gleich mit installiert. | Durch die im nächsten Abschnitt vorgestellte Entwicklungsumgebung werden die Bibliotheken für das CMSIS und die Peripherie-Treiber gleich mit installiert. | ||
+ | ====== STM32 HAL ====== | ||
+ | Die die neuere Variante für die Hardwareabstraktion der STM32 Bausteine ist die STM32 HAL (Hardware Abstraction Layer). Diese basieren konzeptuell auf den Standard Peripherie Treibern ziehen jedoch weitere Abstraktionsebenen ein. Das macht die damit entwickelten Anwendungen natürlich viel portabler als bei der Verwendung der Standard Peripherie Treiber aber verbrauchen auch deutlich mehr FLASH und RAM. Das im Tutorial verwendeten C++ PEC-Framework (Portable Embedded Classes) nutzt die neue HAL. Für den Anfänger hat haben die klassischen Treiber aber den Charme der Einfachheit. | ||
====== Die Hardware beschaffen ====== | ====== Die Hardware beschaffen ====== | ||
Das Tutorial macht nur dann wirklich Sinn, wenn man die vorgestellten Beispiele und Übungen auch nachvollziehen kann. Die Hardware gibt es preiswert im Netz, gern empfehle ich: | Das Tutorial macht nur dann wirklich Sinn, wenn man die vorgestellten Beispiele und Übungen auch nachvollziehen kann. Die Hardware gibt es preiswert im Netz, gern empfehle ich: | ||
- | * [[http://de.farnell.com/jsp/ | + | * [[Einkaufsliste]] in unserem Shop |
- | * [[http:// | + | * [[https://www.google.com/search?rlz=1C1CHBD_deDE772DE772&biw=1536& |
- | * [[http:// | + | * [[https://www.reichelt.de/discovery-kit-st-in-verbindung-mit-pc-usb-stm32-f407gdisc1-p219363.html?&trstct=pos_0|bei Reichelt]] |
- | * [[http://shop.myavr.de/ARM-Produktlinie/ | + | * [[https://de.farnell.com/stmicroelectronics/ |
- | * oder. als [[http://shop.myavr.de/ARM-Produktlinie.htm?sp=artlist_kat.sp.php&katID=37|Bundel mit der Entwicklungsumgebung]] | + | * [[https://www.mouser.de/ProductDetail/ |
- | * ... evtl. noch [[http://shop.myavr.de/index.php?sp=artlist_kat.sp.php& | + | * für Schweizer |
- | * es sollte auf jeden Fall eine [[http://shop.myavr.de/Programmer%20und%20Bridges/ | + | * oder im Schweizer |
- | * später braucht man noch eine [[http://shop.myavr.de/ | + | |
====== Nächstes Thema ====== | ====== Nächstes Thema ====== | ||
* [[Entwicklungsumgebung]] | * [[Entwicklungsumgebung]] |