Forum: Mikrocontroller und Digitale Elektronik Welchen Cube MX und IDE für den H7


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von FPGA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Die ST Seite ist wieder mal ein Chaos. Kann mir jemand kurz den Link zum 
DL vom aktuellsten Cube und IDE (+downloaders/debugger) zusatztools 
geben.

Hab schon lange nicht mehr geSTMt. Ist es immer noch so dass:

1. 5 min cube rumklicken (alle clks auf max setzen, ADC, USART etc in 
gang setzen).
2. 5 h sich über das bescheuerte HAL nerven
3. coden und debug läuft dann problemlos
?

Dabei nicht zu vergessen:
(0. Sich über die ST Seite und bescheuerte Registrationspflicht nerfen)

von Harry L. (mysth)


Bewertung
-1 lesenswert
nicht lesenswert
Version sollte 1.5.0 sein....für ein Betriebssystem deiner Wahl.
CubeMX ist bereits enthalten.

https://www.st.com/en/development-tools/stm32cubeide.html

: Bearbeitet durch User
von FPGA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Harry L. schrieb:
> Version sollte 1.5.0 sein....für ein Betriebssystem deiner Wahl.
> CubeMX ist bereits enthalten.
>
> https://www.st.com/en/development-tools/stm32cubeide.html

Super Danke. Genial alles dabei. Und was fehlt wird direkt automatisch 
runtergeladen.

Hmm einzig etwas: Wie kann ich den ADC tripple interleaven? Anscheinend 
wird das beim H7 nicht mehr direkt unterstüzt (F4 giengs soweit ich mich 
erinnern kann einfach). Gibts da einen Workaround per Interrupt die 
conversationen zu starten und manuell zu interleaven (gegebenenfall 
unter Verwendung eines/mehreren internen OPAmps für die Bufferung(en))?

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
FPGA schrieb im Beitrag #6480704:
> Wie kann ich den ADC tripple interleaven?

Ich weiss zwar nicht was das genau bedeutet, aber im Datenblatt:

F7:
• 3×12-bit, 2.4 MSPS ADC: up to 24 channels
and 7.2 MSPS in triple interleaved mode

H7:
• 2×16-bit ADC, up to 3.6 MSPS in 16-bit: up to
18 channels and 7.2 MSPS in double-
interleaved mode
• 1 x 12-bit ADC, up to 5 MSPS in 12-bit, up to 12
channels

von Kevin M. (arduinolover)


Bewertung
0 lesenswert
nicht lesenswert
FPGA schrieb im Beitrag #6480704:
> Wie kann ich den ADC tripple interleaven?

Garnicht.

Es gibt maximal 2 "tightly coupled" ADCs, ADC1 und ADC2. ADC3, sofern 
vorhanden, ist immer independent. Bei neueren wie dem G4 der 5 ADCs hat 
geht das auch mit 2 Kanälen aber pro Kanal dennoch nur zwei ADC. In dem 
Fall ADC1&2 sowie ADC2&4, ADC5 ist independent.

von FPGA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kevin M. schrieb:
> Es gibt maximal 2 "tightly coupled" ADCs, ADC1 und ADC2. ADC3, sofern
> vorhanden, ist immer independent. Bei neueren wie dem G4 der 5 ADCs hat
> geht das auch mit 2 Kanälen aber pro Kanal dennoch nur zwei ADC. In dem
> Fall ADC1&2 sowie ADC2&4, ADC5 ist independent.

Schade...
Ein Workaround, dass diese extern (über den Opamp gebuffert) 
zusammengeschaltet werden, und durch Inkaufnahme einer erheblichen CPU 
Last die einzelnen ADCs per interrupt interleavet werden besteht nicht?
Falls doch evtl. auch die Möglichkeit durch eine geschickte 
Konfiguration der DMAs eine Art interleving über die DMA entsteht?

von Johannes S. (jojos)


Bewertung
-1 lesenswert
nicht lesenswert
auf der 'nervigen' STM Website gibt es auch reichlich AppNotes, hast du 
da mal nachgesehen ob es etwas zum ADC der M7/H7 gibt?

von Irrer Iwan (Gast)


Bewertung
0 lesenswert
nicht lesenswert
FPGA schrieb im Beitrag #6480650:
> 2. 5 h sich über das bescheuerte HAL nerven

Dann benutze einfach kein HAL.

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht lesenswert
Irrer Iwan schrieb:
> Dann benutze einfach kein HAL.

Eine Zeit lang konnte die IDE nur Projekte mit HAL (bzw. LL Bibliothek) 
erzeugen, aber das haben sie inzwischen wieder geändert.

von Irrer Iwan (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> Eine Zeit lang konnte die IDE nur Projekte mit HAL (bzw. LL Bibliothek)
> erzeugen, aber das haben sie inzwischen wieder geändert.

Wie jetzt? Das ist doch alles nur C Code? Ich kann doch auch alles 
löschen und nur mi CMSIS programmieren? Wieso sollte mir die IDE das 
verbieten?

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht lesenswert
Irrer Iwan schrieb:
> Ich kann doch auch alles löschen und nur mi CMSIS programmieren?

Klar, den ganzen Rotz wieder weg löschen ging natürlich immer.

von FPGA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Johannes S. schrieb:
> auf der 'nervigen' STM Website gibt es auch reichlich AppNotes, hast du
> da mal nachgesehen ob es etwas zum ADC der M7/H7 gibt?

Die ST Seite war diesmal nicht nerfig, und das appnote habe ich einfach 
gefunden :-).
Der Inhalt ist Nerfig: Anscheinend hat sich ST selbst ubertroffen und 
vergessen eine aktive S&H Schaltung einzubauen :-(. Der S&H C wird 
anscheinend rein passiv über den Pin geladen; dann beschreiben sie noch 
ausführlich wie dies die AD-Performance zerstört (insbesondere für die 
für hobbyisten relevanten TQFP)...

Irrer Iwan schrieb:
> FPGA schrieb im Beitrag #6480650:
>> 2. 5 h sich über das bescheuerte HAL nerven
>
> Dann benutze einfach kein HAL.

Ja genau dann 10h für Registergedöns verheizen....

Die Motivation den Cube einzusetzen ist, dass man keine Datenblätter, 
Appnotes etc lesen muss. Einfach Cube starten, alles hochschrauben bis 
der Cube reklamiert, dann den letzten Wert nehmen wo der Cube gerade 
noch nicht reklamiert hat, dann mit dem HAL zurechtkommen. Fertig. 
(Wesentlich effizienter als Datenblätter, ST-Webseite, Appnote etc...)

Anyway der ganze Ansatz geht natürlich mächtig schief wenn der 
Hersteller solch massive Böcke schiesst wie passiv S&H bei nem 16bit SAR 
ADC im MS/s Bereich.

Weiter kann ich im Cube den ADC clk auf 480MHZ stellen ohne das der Cube 
reklamiert?!? Dies ist ein bug oder? Im Datenblatt ist von 50MHz die 
rede...

von Irrer Iwan (Gast)


Bewertung
0 lesenswert
nicht lesenswert
FPGA schrieb im Beitrag #6481813:
> Ja genau dann 10h für Registergedöns verheizen....
>
> Die Motivation den Cube einzusetzen ist, dass man keine Datenblätter,
> Appnotes etc lesen muss. Einfach Cube starten, alles hochschrauben bis
> der Cube reklamiert, dann den letzten Wert nehmen wo der Cube gerade
> noch nicht reklamiert hat, dann mit dem HAL zurechtkommen. Fertig.
> (Wesentlich effizienter als Datenblätter, ST-Webseite, Appnote etc...)

Ich investiere lieber einmal 10h (realistisch natürlich deutlich 
weniger), um dann alles verstanden zu haben um dann effizient auf 
Registerebene programmieren zu können, als irgendeine magische Blackbox 
Software voll Bugs und Overhead zu benutzen.

Also wieder so ein Arduino Feeling? Ich brauche genau zwei Datenblätter: 
Das Reference Manual und das Datenblatt vom entsprechenden Controller.

Wer das nicht hinkriegt darf sich am Ende nicht wundern und darf sich 
auch nicht Profi nennen!

FPGA schrieb im Beitrag #6481813:
> Dies ist ein bug oder?

Wäre dir ohne HAL nicht passiert.

von FPGA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Irrer Iwan schrieb:
> realistisch natürlich deutlich
> weniger

Na dann bist du aber gut. Um all die Funktionen von H7 auf Registerlvl 
nutzen zu können, inkl. der etlichen DMA und Interrupts; und dabei noch 
alles zu verstehen... in weniger als 10h für dich als erfahrener STMer 
vieleicht. Ich als FPGAler werde da wohl Mühe haben.

Irrer Iwan schrieb:
> FPGA schrieb im Beitrag #6481813:
>> Dies ist ein bug oder?
>
> Wäre dir ohne HAL nicht passiert.

Na toll ST... Was ist nun die max ADC clk Einstellung beim H7? (Dann 
nutze ich einfech den 2. PLL um die freq zu machen...)

Nur damit es den ST Fans nicht in den falschen Hals kommt: Quartus II 
kann ebenfalls ordentlich nerfen, und ist hierbei vermutlich 
konkurenzfähig...

von Johannes S. (jojos)


Bewertung
2 lesenswert
nicht lesenswert
Beim H7 ist auch noch das Errata wichtig, da gibts zum Teil schon 
mehrere Revisionen und die sind auch im HAL berücksichtigt.

von Kevin M. (arduinolover)


Bewertung
0 lesenswert
nicht lesenswert
FPGA schrieb im Beitrag #6481646:
> Ein Workaround, dass diese extern (über den Opamp gebuffert)
> zusammengeschaltet werden, und durch Inkaufnahme einer erheblichen CPU
> Last die einzelnen ADCs per interrupt interleavet werden besteht nicht?

Ohne Gewähr eventuell wenn du sie über einen Timer mit vershciednenen 
compare Werten triggerst. Wie präzise das funktiniert müsste man testen.

von FPGA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kevin M. schrieb:
> FPGA schrieb im Beitrag #6481646:
>> Ein Workaround, dass diese extern (über den Opamp gebuffert)
>> zusammengeschaltet werden, und durch Inkaufnahme einer erheblichen CPU
>> Last die einzelnen ADCs per interrupt interleavet werden besteht nicht?
>
> Ohne Gewähr eventuell wenn du sie über einen Timer mit vershciednenen
> compare Werten triggerst. Wie präzise das funktiniert müsste man testen.

Danke, genau das war auch meine Idee; mit dem zusatz, dass dies durch 
geschikte konfiguration der DMAs nur initial so gestartet werden müsste 
und im folgenden so durchlaufen würde.
Nun leider scheint es so zu sein, dass ST vergessen hat eine angemessene 
S&H Schaltung zu bauen. Daher ist bei TQFP Gehäusen schon bei 1.9MS/s 
Schluss mit 16 bit. Auch wenn erst im Datenblatt angegeben ist, dass 
Dual interleved 7.2 MS/s möglich sind...
Also AD Teil beim H7 ist ein major FAIL. Hoffe ST überarbeitet dies zum 
"H8", dass zumindest 10MSPS mit 16 bit möglich sind....

von Martin (Gast)


Bewertung
1 lesenswert
nicht lesenswert
FPGA schrieb im Beitrag #6480650:
> 2. 5 h sich über das bescheuerte HAL nerven

Im CubeMX kannst Du irgendwo in den Optionen den generierten Code von 
HAL auf LL umstellen. Mache ich immer so, dann ist der Spuk vorbei.

von FPGA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Martin schrieb:
> FPGA schrieb im Beitrag #6480650:
>> 2. 5 h sich über das bescheuerte HAL nerven
>
> Im CubeMX kannst Du irgendwo in den Optionen den generierten Code von
> HAL auf LL umstellen. Mache ich immer so, dann ist der Spuk vorbei.

Hmmm naja LL ist schon sehr registernahe. Also grundsätzlich ist die HAL 
idee genial, lediglich die ST Umsetzung ist, naja: Ziel verfehlt... Am 
liebsten wäre mir eine alternatives Templateprojekt mit einem guten HAL. 
Template wo alle clk auf max sind und alles aktiviert.
Dann könnte im Cube nur die Pinzuweisungen gemacht werden und lediglich 
die entsprechenden init funktionen aus dem cube in das template 
kopieren.

von Stefan ⛄ F. (stefanus)


Bewertung
2 lesenswert
nicht lesenswert
FPGA schrieb im Beitrag #6484018:
> lediglich die ST Umsetzung ist, naja: Ziel verfehlt

Ich denke darüber anders. ST bindet die Entwickler damit an sich, genau 
wie Microsoft es geschafft hat.

Das der HAL gar kein ernsthafter Hardware-Abstraktionslayer ist, 
brauchen wir nicht zu diskutieren. Ohne Cube MX wäre das Zeug schon 
längst wieder in der Versenkung verschwunden.

Andererseits könnte Cube MX durchaus auch Code ohne solche Bibliotheken 
erzeugen. Aber das will ST vermutlich nicht, weil dann würden sich die 
Programmierer mit Registersätzen beschäftigen, die sie bei anderen 
Mikrocontrollern wieder finden könnten.

: Bearbeitet durch User
von Ben S. (bensch123)


Bewertung
-1 lesenswert
nicht lesenswert
FPGA schrieb im Beitrag #6484018:
> Hmmm naja LL ist schon sehr registernahe. Also grundsätzlich ist die HAL
> idee genial, lediglich die ST Umsetzung ist, naja: Ziel verfehlt...

Das ist doch egal. Du musst ein Grundverständnis dafür aufbauen, wie 
mikrocontroller generell konzipiert sind. Ich habe jetzt das erste mal 
einen atsam in der Hand gehabt und habe mich mit einem xplained 
(atsame70q21, 500MHz) eingearbeitet.

Was interessieren mich da die ganzen Peripherien? Clock, GPIOs, DMA, 
Timer, U(S)ART, WWatchdog, .... 2 bis 3 Tage Arbeit und ich bin in der 
Lage eine Elektronik damit zu erstellen und zu programmieren. Alles 
andere schau ich mir bei Bedarf an.

Vermutlich würde ich andererseits im Fall dass ich mich in FPGAs 
einarbeiten muss deutlich länger brauchen, da sehr wenig Erfahrung. Dort 
könnte ich natürlich auch zu 90% fertige IP Bausteine nutzen - das würde 
ich aber auch nicht wollen und von anfang verstehen was ich da mache und 
wie es funktioniert.

Also meine Meinung: Traue dich an Register / LL heran.

Stefan ⛄ F. schrieb:
> Andererseits könnte Cube MX durchaus auch Code ohne solche Bibliotheken
> erzeugen. Aber das will ST vermutlich nicht, weil dann würden sich die
> Programmierer mit Registersätzen beschäftigen, die sie bei anderen
> Mikrocontrollern wieder finden könnten.

Ich hoffe doch aber mal dass jeder der professionell mit STM32 etwas 
umsetzt nicht diese HAL verwendet.

: Bearbeitet durch User
von FPGA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> Aber das will ST vermutlich nicht, weil dann würden sich die
> Programmierer mit Registersätzen beschäftigen, die sie bei anderen
> Mikrocontrollern wieder finden könnten.

Nun ich denke beriets darüber ST zu verlassen bevor ich richtig begonnen 
habe. Zwar ist es schön mit dem H7 16bit ADCs zu haben für 5-10USD, 
anyway S&H Fehler zerstört den Vorteil/Sinn komplett.
Dann die HAL Geschichte...
Wie siehts bei den anderen Herstellern aus? Renesas habe ich vor langem 
mal gutes gehört, NXP etc? Dies insbesondere in Bezug auf realle ADC 
Performance, und Bemutzerfreundlichkeite (HAL) etc...

Ben S. schrieb:
> Was interessieren mich da die ganzen Peripherien? Clock, GPIOs, DMA,
> Timer, U(S)ART, WWatchdog, ....

Nun bei jedem noch so kleinen Projekt muss man erst mal alle clk auf max 
setzen, damit man auch sicherstellt dass man dem Ding den Gang einlegt. 
GPIO werden sowiso immer gebraucht. USART, Timer etc. auch, ADC 
ebenfalls. DMAs werden bei einfachen projekten mit einer solchen CPU 
zwar nicht dringend benötigt, aber ja...
Also eigentlich könnte man bei einfachen Projekten fast alles mit einer 
ISR machen (USART über GPIO etc) und so die CPU last hochschrauben...

Ben S. schrieb:
> Vermutlich würde ich andererseits im Fall dass ich mich in FPGAs
> einarbeiten muss deutlich länger brauchen, da sehr wenig Erfahrung.

Ja ist so. Naja kommt draufan. Verilog/VHDL sind eigentlich nicht so 
schwierig (die Logik ist immer Statemaschine+Datenpfad und einfacher als 
man denkt), die sprachen sind jedoch aus den 80ern und etwas outdatet. 
Nerfig ist dass verfolgen der Signale über mehrere Dateien. Ich nutze 
notepad++ als einfachen editor. Sigasi ist eine professionellere 
Methode. Bezüglich UART etc. kann relativ einfach ein Softcore NIOS 
eingebaut werden. Der gratis NIOS hat jedoch nur 0.1 IPC und läuft auf 
100-200MHZ. Die Einbindung von GPIOs zur FPGA logik ist sehr einfach.
Was ich auf der Suche bin und noch keine befriedigende Lösung gefunden 
habe ist eine Moderne FPGA anbindung an einen PC (PCI-E, Ethernet oder 
so). Dieser Datentransfer ist eigentlich eine Basis worauf man aufbauen 
können sollte. Anyway diese Basis wird nicht vernünftig zur Verfügung 
gestellt.

Ben S. schrieb:
> Dort
> könnte ich natürlich auch zu 90% fertige IP Bausteine nutzen - das würde
> ich aber auch nicht wollen und von anfang verstehen was ich da mache und
> wie es funktioniert.

Dies funktioniert zu 90% nicht. Naja viel Papier, Chaos, und kein 
funktionierendes Demo... Zumindest bei Altera/Intel ist dies 
frustreirend

von Johannes S. (jojos)


Bewertung
2 lesenswert
nicht lesenswert
FPGA schrieb im Beitrag #6484534:
> Nun bei jedem noch so kleinen Projekt muss man erst mal alle clk auf max
> setzen,

Nö, dann kommt der Stromsparer der die PLL gar nicht aktivieren will. 
Und woher weiß die Universal Max Funktion ob du einen Quarz oder 
Oszillator benutzt? Und welche Frequenz der hat? Die ganzen 
Einstellungen sind so variabel das es kaum möglich oder sinnvoll ist. 
Bei einigen Quarzfrequenzen vertragen sich z.B. USB und max. Sysclock 
nicht. Und gerade der H7 hat mit mehreren PLLs und internen clocks doch 
unzählige Möglichkeiten. Selbst CubeMX rechnet sich doof wenn er 
versucht die PLL Einstellungen zu ermitteln.
Und selbst der LSE rennt nicht einfach los wenn man irgendeinen Quarz 
dranhängt, da musst du noch den drive load level richtig einstellen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.