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?
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.
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.
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.
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.
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.
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.
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).
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.
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.
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?
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.
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.
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.
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.
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.
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.
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.
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?
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.
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:
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.
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:
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.
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.