Forum: Mikrocontroller und Digitale Elektronik STM32 Evalboard für Einstieg


von Zo R. (hsch1978)


Lesenswert?

Hallo und guten Abend,

ich bin aktuell auf der Suche nach einem günstigen Evalboard mit 
Debugging Interface.
Gibt es für die STM32 Controller eine fertige API Bibliothek, zum 
Beispiel um einen One-Shot Timer oder Periodic Timer aufzusetzen?

Auf eine Rückmeldung würde ich mich freuen.

von Rahul D. (rahul)


Lesenswert?

Zo R. schrieb:
> Gibt es für die STM32 Controller eine fertige API Bibliothek, zum
> Beispiel um einen One-Shot Timer oder Periodic Timer aufzusetzen?

Konfigurationscode für STM32-Boards (und deren Timer etc.) kann man 
wunderbar über STM32CubeMX erstellen. Man sollte sich aber trotzdem mit 
dem Reference Manual auseinandersetzen.

von Christoph M. (mchris)


Lesenswert?

>ich bin aktuell auf der Suche nach einem günstigen Evalboard mit
>Debugging Interface.

Es kommt ein wenig darauf an, was du machen willst.
Für 10-15€ gibt es die Hardware z.B. bei Mouser das Nucleo G474.
Mit der Arduino API ist der Softwareeinstieg am einfachsten.

Hier werden auch die unterstützten Boards aufgelistet:
https://github.com/stm32duino/Arduino_Core_STM32

Und hier ist das Timer-Beispiel:
https://github.com/stm32duino/STM32Examples/blob/main/examples/Peripherals/HardwareTimer/Timebase_callback/Timebase_callback.ino

Und hier die gesamte Timer API:
https://github.com/stm32duino/Arduino_Core_STM32/wiki/HardwareTimer-library

von Rahul D. (rahul)


Lesenswert?

Zo R. schrieb:
> ich bin aktuell auf der Suche nach einem günstigen Evalboard mit
> Debugging Interface.

Überlesen: NUCLEOs
Die haben fast alle einen ST-Link zum Programmieren und Debuggen 
integriert.

Christoph M. schrieb:
> Es kommt ein wenig darauf an, was du machen willst.
> Für 10-15€ gibt es die Hardware z.B. bei Mouser das Nucleo G474.
> Mit der Arduino API ist der Softwareeinstieg am einfachsten.
Und in einer gewissen Weise eine Sackgasse.
Arduino ist praktisch, wenn man auf unterschiedlichen Controllern die 
gleiche Software laufen lassen will.

von Christoph M. (mchris)


Lesenswert?

>Und in einer gewissen Weise eine Sackgasse.
Wieso?

von Rahul D. (rahul)


Lesenswert?

Christoph M. schrieb:
>>Und in einer gewissen Weise eine Sackgasse.
> Wieso?

Hast du schon mal versucht, einen Debugger mit der Arduino-IDE zu 
betreiben?

von J. S. (jojos)


Lesenswert?

wo ist das Problem? Mit der Arduino IDE 2.x geht das schon seit ein paar 
Jahren. Und besser noch wenn man Arduino Code mit PlatformIO nutzt.

Ansonsten ist das schon eine komische Frage von jemandem der seit 2005 
angemeldet ist. STM32 ist ja so ein Exot...

von Rahul D. (rahul)


Lesenswert?

J. S. schrieb:
> Ansonsten ist das schon eine komische Frage von jemandem der seit 2005
> angemeldet ist. STM32 ist ja so ein Exot...

Hast du sonst irgendwas sinnvolles beyutragen?
Die Arduin IDE 2.0 war lange nicht besonders funktionsfähig. Deswegen 
sind viele doch noch bei der 1.. verblieben.

von J. S. (jojos)


Lesenswert?

Witzbold, wenn man debuggen möchte muss man eben auf die 2.x umsteigen 
weil es in der spartanischen 1er nie vorgesehen war. Wasch mich aber 
mach mich nicht nass, oder was?
Und PIO gab es schon lange vor der 2er, mit funktionierendem Debugging.

von Rahul D. (rahul)


Lesenswert?

J. S. schrieb:
> Witzbold, wenn man debuggen möchte muss man eben auf die 2.x
> umsteigen
Oder, wenn man sowieso nur den STM32 verwenden will, gleich die passende 
IDE verwenden.

> weil es in der spartanischen 1er nie vorgesehen war. Wasch mich aber
> mach mich nicht nass, oder was?
> Und PIO gab es schon lange vor der 2er, mit funktionierendem Debugging.

Zu dem Zeitpunkt gab es schon diverse (kostenfreie) IDEs (AtmelStudio 
etc), die Debugging unterstützten.

Wie gesagt: Arduino ist praktisch, wenn man (regelmäßg) den Controller 
wechselt, aber nicht das Programm.

von Christoph M. (mchris)


Lesenswert?

>Wie gesagt: Arduino ist praktisch, wenn man (regelmäßg) den Controller
>wechselt, aber nicht das Programm.

Das ist zu einfach gedacht und hängt vom Anwendungsfall ab.

Will man z.B. in einer großen Automotive Firma ein Steuergerät mit 
Stückzahl >100000 entwickeln, wird man noch nicht mal eine Mikrosekunde 
an den Einsatz von Arduinos denken. Will man in der selben Firma aber 
Laboraufbauten für einfache Mess- und Steuerungsaufgaben wie z.B. die 
Schrittomotorsteuerung eines Testaufbaus machen, dann verwenden solche 
Firmen bisweilen Arduino's und ähnliches.

Der Vorteil des Arduino-Frameworks ist seine Einfachheit und dass auch 
Nicht-Software Kollegen die Firmeware warten können ohne riesen 
Toolchains zu installieren.
Das oben gepostete Beispiel in seiner Einfachheit wirst du mit der 
STM-Cube-Umgebung nicht hinbekommen (alleine schon aus 
Bedienbarkeitsgründen).

https://github.com/stm32duino/STM32Examples/blob/main/examples/Peripherals/HardwareTimer/Timebase_callback/Timebase_callback.ino

Deshalb gilt folgendes:
Um die passende Umgebung für den TO zu finden, muss man seine genauen 
Randbedingungen kennen.

von Monk (Gast)


Lesenswert?

Früher was es sehr schwierig, einen Mikroprozessor zu programmieren.

Heute besteht die Kunst eher darin, die optimalen Arbeitsmittel 
auszuwählen.

von Rahul D. (rahul)


Lesenswert?

Christoph M. schrieb:
> Das oben gepostete Beispiel in seiner Einfachheit wirst du mit der
> STM-Cube-Umgebung nicht hinbekommen (alleine schon aus
> Bedienbarkeitsgründen).

Es ist schon eine gewagte Aussage, dass ich das nicht hinbekäme.
Woher willst du das wissen?

Arduino ist gut für den Einstieg. Will man Dinge machen, die 
controllerspezifisch sind, kann man auch gleich was anderes nehmen.

Das Gedöns, was der Arduino-Wrapper im Hintergrund für 
Entwicklungsboards macht, kann man auch mit STM32CubeMx erledigen, wenn 
man dort das Board als Plattform auswählt.

von Zo R. (hsch1978)


Lesenswert?

Hallo,

ich danke euch für die vielen Informationen. Ich denke ich werde 
folgendes Board kaufen:

NUCLEO F767ZINucleo-144, ARM Cortex M4F, STM32 F7-Serie

Wird dieses Board auch von der Software  STM32CubeMx unterstützt?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Nucleo Noards sind praktisch der blanke MC mit einem zweiten drauf, der 
als Programmer dient.
Discovery Boards haben oft noch interessante Peripherie drauf und kosten 
auch nicht viel. Wie beim Nucleo ist hier auch der zweite MC drauf, der 
fürs Programmieren sorgt (ST-Link).
Ich habe mit dem VL Discovery, dem F429 Dicovery und dem F407 Discovery 
schon viel Spaß gehabt.

: Bearbeitet durch User
von Christoph M. (mchris)


Lesenswert?

>Es ist schon eine gewagte Aussage, dass ich das nicht hinbekäme.
>Woher willst du das wissen?

Wenn du es nicht in 10 Minuten in dieser kurzen Form hinbekommst ist die 
Umständlichkeit schon bewiesen, da es das Arduino-Beispiel gibt.

von Christoph M. (mchris)


Lesenswert?

>ich danke euch für die vielen Informationen. Ich denke ich werde
>folgendes Board kaufen:

Beschreibe doch mal deine Anforderungen etwas genauer. Was ist das Ziel?

von Monk (Gast)


Lesenswert?

Zo R. schrieb:
> Ich denke ich werde folgendes Board kaufen:
> STM32 F7-Serie

Fange mal lieber mit einem weniger komplexen Modell an: F0, L0, G0 oder 
F3.

von Wastl (hartundweichware)


Lesenswert?

Zo R. schrieb:
> NUCLEO F767ZINucleo-144, ARM Cortex M4F, STM32 F7-Serie

Vieeel zu komplex, sowohl vom Controller her als auch vom Board.

Monk schrieb:
> Fange mal lieber mit einem weniger komplexen Modell an: F0, L0, G0 oder
> F3.

Jawoll. Es gibt so viele schöne kleine Nucleos, so richtig
schön handlich. Da kann man es lernen bevor man sich spezialisiert
und weiss auf welches STM32 Monster man losgeht.

30 Euro für einen Controller mit angeschlossenem Debugger,
was will man mehr?

https://www.reichelt.de/de/de/nucleo-64-arm-cortex-m4f-stm32-f4-serie-nucleo-f411re-p154272.html?PROVID=2788&gad_source=1&gclid=EAIaIQobChMI4Mf2oe7xiAMV3paDBx0LngfuEAQYASABEgJXNfD_BwE&&r=1

von Rahul D. (rahul)


Lesenswert?

Christoph M. schrieb:
> Wenn du es nicht in 10 Minuten in dieser kurzen Form hinbekommst ist die
> Umständlichkeit schon bewiesen, da es das Arduino-Beispiel gibt.

Als würde die Arduino-Lib in 10 Minuten geschrieben...

von Zo R. (hsch1978)


Lesenswert?

Ein Evalboard mit Ethernet wäre nicht schlecht. Ich möchte mein Wissen 
wieder etwas auffrischen. Hab mit STM32 schon 6 Jahre lang nichts 
gemacht.

Applikation mit einem oder mehreren Periodic Timer mit callback 
function.
Dann möchte ich das Thema Ethernet und Uart Kommunikation wieder 
aufgreifen.

: Bearbeitet durch User
von Wastl (hartundweichware)


Lesenswert?

Zo R. schrieb:
> Ein Evalboard mit Ethernet wäre nicht schlecht.

Wenn du schon soweit bist, dann das F429. Es ist das "kleinste"
Board mit LAN-Verbindung aus dem Hause STM:

https://www.reichelt.de/stm32-nucleo-144-arm-cortex-m4f-stm32f429zit6-nucleo-f429z-p379677.html?PROVID=2788&gad_source=1&gclid=EAIaIQobChMIyNzOtfHxiAMVq5eDBx1BYDCsEAQYAiABEgLWI_D_BwE

von Zo R. (hsch1978)


Lesenswert?

Ok dieses Board wird auch von der Arduino Software und Stm32CubeMx 
unterstützt?

von Rahul D. (rahul)


Lesenswert?

Zo R. schrieb:
> dieses Board wird auch von der Arduino Software und Stm32CubeMx
> unterstützt?

Google wurde schon erfunden.

von Wastl (hartundweichware)


Lesenswert?

Zo R. schrieb:
> Ok dieses Board wird auch von der Arduino Software und Stm32CubeMx
> unterstützt?

CubeMX unterstützt alle STM-eigenen Boards. Zu Arduino-Support
kann ich dir nichts sagen. Aber mit Arduino wirst du irgendwann
in einer Sackgasse landen, und du wirst deine Hardware nie
richtig verstehen werden.

von Wastl (hartundweichware)


Lesenswert?

Vor wenigen Jahren brachte STM ja den H743 heraus, mit 400 bis
480 MHz möglicher Taktrate und LAN/Ethernet. Da gab es dann auch
Meldungen dass "man" damit eine TCP-Anwendung nicht einwandfrei
zum Laufen bringen konnte. Hier im Forum gab es dazu auch
Diskussionen.

Jetzt sehe ich dass man diesen Controller offensichtlich hat
sterben lassen ("obsolete"), waren wohl noch einige Bugs drin die
es nicht lohnten sie auszumerzen.

https://www.st.com/en/evaluation-tools/nucleo-h743zi.html

Quintessenz:
"We recommend you that replacement part: NUCLEO-H753ZI"

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?

Der H753 ist der gleiche wie der H743, nur mit zusätzlicher Crypto 
Einheit. Sogar der Code ist komplett binärkompatibel solange man dieses 
eine Device nicht benutzt.
Ethernet funktioniert mit dem H743 wunderprächtig, die H Serie ist nur 
mit DMA und Caches recht komplex. Und auch der Cube generierte Code 
braucht manuelle Nacharbeit. Ob es aktuelle Cube Versionen jetzt besser 
machen weiß ich nicht.

von Zo R. (hsch1978)


Lesenswert?

Ok das betrifft aber nicht das Nucleo Evalboard:
NUCLEO F429Z STM32 Nucleo-144 ARM Cortex M4F STM32F429ZIT6

von Wastl (hartundweichware)


Lesenswert?

J. S. schrieb:
> Ethernet funktioniert mit dem H743 wunderprächtig

Wenn ein Hersteller einen Chip als obsolete kennzeichnet dann
wird der nicht mehr produziert, und das aus triftigen Gründen.
Nachweisen kann ich das nicht, aber es wird wohl so sein.

von Wastl (hartundweichware)


Lesenswert?

Zo R. schrieb:
> Ok das betrifft aber nicht das Nucleo Evalboard:

Du musst schon sagen auf was sich dein "das" bezieht.

von Zo R. (hsch1978)


Lesenswert?

Bezüglich Probleme mit der Ethernet - Konfiguration und Nutzung.

von Wastl (hartundweichware)


Lesenswert?

Zo R. schrieb:
> Bezüglich Probleme mit der Ethernet - Konfiguration und Nutzung.

Das F429 Nucleo lief bei mir mit TCP/lwIP auf Anhieb problemlos.
Was ich vom H743 nie behaupten werde ....

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?

Das Nucleo Board mit H743 mag obsolet sein, die MCU ist active im 
Status.
https://www.st.com/en/microcontrollers-microprocessors/stm32h743-753/products.html

Und beim Board stört es nicht wenn der 753 drauf ist, weil sowieso 
kompatibel.
In der der Corona Zeit waren die H743 schnell nicht mehr lieferbar, wir 
konnten gerade noch 753er bekommen und der Code läuft ohne Anpassung 
oder neu kompilieren.

Da ist man gleich beim großen Nachteil von CubeMX: ein Wechsel auf einen 
anderen Controller ist eine Sysiphus Arbeit und wird nicht von der IDE 
unterstützt. Code wird aus Templates gebaut und die selber zu machen hat 
nichts mit programmieren zu tun.
Da ist Arduino mit seinen Komponenten schon deutlich professioneller, 
gute Komponenten sind auf verschiedenen Controllern oder gar Platformen 
gleich zu verwenden, die Abstraktion geschieht in der Komponente 
und/oder dem Buildsystem.

von Bauform B. (bauformb)


Lesenswert?

Wastl schrieb:
> Wenn ein Hersteller einen Chip als obsolete kennzeichnet dann
> wird der nicht mehr produziert, und das aus triftigen Gründen.
> Nachweisen kann ich das nicht, aber es wird wohl so sein.

Dann sollte der Hersteller das gelegentlich seinen Web Designern sagen, 
die glauben immer noch, dass die H743 noch bis 2034 gebaut werden.

https://www.st.com/content/st_com/en/about/quality-and-reliability/product-longevity.html#10-year-longevity&section=FM141-10-year

von Mi N. (msx)


Lesenswert?

Zo R. schrieb:
> ich danke euch für die vielen Informationen. Ich denke ich werde
> folgendes Board kaufen:
>
> NUCLEO F767ZINucleo-144, ARM Cortex M4F, STM32 F7-Serie

Hier liegt noch ein Nucleo F746ZG, was ich absehbar nicht mehr brauche. 
Für einen Zehner+Versandkosten und wir könnten tauschen?

von Zo R. (hsch1978)


Lesenswert?

Hallo Mi, verkaufst du dein Nucleo Board?

von Rahul D. (rahul)


Lesenswert?

Zo R. schrieb:
> Hallo Mi, verkaufst du dein Nucleo Board?

Mi N. schrieb:
> Für einen Zehner+Versandkosten und wir könnten tauschen?

Sieht so aus, oder?

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

Zo R. schrieb:
> ich danke euch für die vielen Informationen. Ich denke ich werde
> folgendes Board kaufen: NUCLEO F767ZINucleo-144

Als Einstieg ein F7?

von Christoph M. (mchris)


Lesenswert?

von Zo R. (hsch1978)
>NUCLEO F767ZINucleo-144, ARM Cortex M4F, STM32 F7-Serie
>Ok dieses Board wird auch von der Arduino Software und Stm32CubeMx
>unterstützt?

Die List aller von STM32Duino unterstützten Boards ist hier (oben schon 
mal geschrieben):
https://github.com/stm32duino/Arduino_Core_STM32
Dort findet sich auch das NUCLEO F767ZI.

Zo R. schrieb:
> Ich denke ich werde folgendes Board kaufen:
> STM32 F7-Serie

>>Fange mal lieber mit einem weniger komplexen Modell an: F0, L0, G0 oder
>>F3.

Die Komplexität der Boards ist bei Benutzung des Arduino-Frameworks 
ziemlich egal. Im Gegenteil, bei den großen Boards kann man den Speicher 
und die hohe Geschwindigkeit ohne irgend einen Zusatzaufwand benutzen.

Hier sind die Ethernet-Treiber:
https://github.com/stm32duino/STM32Ethernet

Und hier ein Beispiel wie beim Arduino-Framwork üblich auf's 
wesentliche, reduzierte, einfache Beispiel:
https://github.com/stm32duino/STM32Ethernet/blob/main/examples/WebServer/WebServer.ino

Wastl
>CubeMX unterstützt alle STM-eigenen Boards. Zu Arduino-Support
>kann ich dir nichts sagen. Aber mit Arduino wirst du irgendwann
>in einer Sackgasse landen,

Was genau ist eine "Sackgasse" bezüglich Mikrocontroller?

>und du wirst deine Hardware nie richtig verstehen werden.

Hast du die mehreren hundert Seiten des 767ZI alle durchgelesen und 
verinnerlicht? Kennst du alle Erratas und weißt wie man diese umgeht? 
Benutzt du die DSP-Hardwarebeschleunigung dieses ARM-Kerns? Um die 
maximale Performance zu erreichen, ist es am besten, den passenden 
Assemblercode von Hand zu optimieren (wobei das selbst bei Benutzung des 
Arduino-Framworks ginge)

Ab wann hat man die Hardware des 767ZI richtig verstanden und muss man 
das überhaupt für jedes beliebige Projekt?
Sollte man überhaupt ein Auto benutzen, wenn man die Hardware der 
Motorsteuerung und der Softwareabläufe nicht genau kennt oder kann man 
sich einfach rein setzen und trotzdem fahren?

von Rahul D. (rahul)


Lesenswert?

Christoph M. schrieb:
> Was genau ist eine "Sackgasse" bezüglich Mikrocontroller?

Da muss irgendwer eine Bibliothek für die neue Controller erstellen.
Arduino ist relativ abstrakt und nicht unbedingt optimal programmiert, 
wodurch man immer von dessen (Weiter-) Entwicklung abhängig ist.

Die LowLevel- und HAL-Libraries von ST werden vom Hersteller der 
Controller gepflegt - wer das bei Arduino ist, weiß ich nicht. Das 
können auch Drittanbieter sein, die u.U. auch die Lust und Zeit an dem 
Projekt verlieren.

von Christoph M. (mchris)


Lesenswert?

>Die LowLevel- und HAL-Libraries von ST werden vom Hersteller der
>Controller gepflegt - wer das bei Arduino ist, weiß ich nicht

Den Lead hat Frederic Pillon ( Kürzel "fpistm" in Github ) von 
STMicroelectronics in Le Mans, da STM vor einigen Jahren beschlossen 
hat, für den Arduino-Support extra einen Mitarbeiter abzustellen:

https://github.com/fpistm

Das Diskussionsforum zu den technischen Angelegenheiten des STM32Duino 
Probjektes findet sich hier:
https://www.stm32duino.com/

von J. S. (jojos)


Lesenswert?

STM32duino verwendet intern die HAL, wenn das nicht 'optimal 
programmiert' ist dann liegt es größtenteils an der Herstellerlib HAL.
Dank Communities wie Arduino oder Mbed die eben die HAL verwenden wurden 
auch einige Probleme im HAL Code gefunden und gefixt.
Dann sind gute Komponenten wie eTFT_SPI vom Bodmer schon extrem gut 
optimiert, da werden schnelle Schnittstellen mit DMA und beim RP2040 
auch mit dessen PIO genutzt. Da steckt viel know how von vielen Leuten 
drin, über die Einzelkämpfer die meinen alles besser zu können kann ich 
da nur müde schmunzeln.
Natürlich gibt es auch viel Murks in der Arduino Welt weil viele die es 
geschafft haben als Einstieg einen Klimasensor zu bauen gleich einen 
Blog und YT Videos dazu veröffentlichen und so das Internet mit der 
1001. 'Lösung' fluten.

von Rahul D. (rahul)


Lesenswert?

Christoph M. schrieb:
> Den Lead hat Frederic Pillon ( Kürzel "fpistm" in Github ) von
> STMicroelectronics in Le Mans, da STM vor einigen Jahren beschlossen
> hat, für den Arduino-Support extra einen Mitarbeiter abzustellen:
>
> https://github.com/fpistm
>
> Das Diskussionsforum zu den technischen Angelegenheiten des STM32Duino
> Probjektes findet sich hier:
> https://www.stm32duino.com/

Dann ist ja alles gut.

von Hans-Georg L. (h-g-l)


Lesenswert?

Wastl schrieb:
> Vor wenigen Jahren brachte STM ja den H743 heraus, mit 400 bis
> 480 MHz möglicher Taktrate und LAN/Ethernet. Da gab es dann auch
> Meldungen dass "man" damit eine TCP-Anwendung nicht einwandfrei
> zum Laufen bringen konnte. Hier im Forum gab es dazu auch
> Diskussionen.
>
> Jetzt sehe ich dass man diesen Controller offensichtlich hat
> sterben lassen ("obsolete"), waren wohl noch einige Bugs drin die
> es nicht lohnten sie auszumerzen.
>
> https://www.st.com/en/evaluation-tools/nucleo-h743zi.html
>
> Quintessenz:
> "We recommend you that replacement part: NUCLEO-H753ZI"

Nur das Nucleo Board mit dem ST-Link V2 und der 400MHz (Y) Version 
stirbt aus. Das H753ZI Board hat ST-Link V3 und die neue Revision (V) 
mit 480 MHz drauf.

Den H743ZI (V) Chip gibt es immer noch.

Siehe:
AN5312 Migration from RevY to RevV for STM32H743/753
und
ES0392 Errata

Aber der H7 ist manchmal eine zickige Diva ;-)
Dann solltest du auf jeden Fall die aller neueste CubeMx Version nehmen.
Das erzeugte Linker-Script stimmt immer noch nicht, da fehlt das RAM in 
der D2 und D3 Domain. Wenn du DMA verwendest schalte auch erst einmal 
den I und D Cache aus.

Den F476 gibt es auch als Nucleo144 mit Ethernet.

Beitrag #7747586 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.