Welches Zubehör für DevKit NUCLEO-H723ZG ?

#7608345
Lesenswert?

Lysandros schrieb:

ich lege zum ersten Mal mit Mikrocontrollern los und habe ein NUCLEO-H723ZG bestellt.

Mit einem Porsche das Fahren lernen ist vielleicht etwas ambitioniert, oder?

Ein oller Arduino und eines dieser typischen Startsets mit ein paar LEDs und Tastern wäre zum Einstieg sicher besser für die Lernkurve und das Frustgefühl.

Einem H7 (auf dem fast schon Unix laufen kann) Ethernet beizubringen ist kein typisches Anfängerprojekt.

Sowas: https://amzn.eu/d/7zXuBr6

#7608628
Lesenswert?

Ich habe so etwas ähnliches für den H743. Dort sind auf dem Board gleich 3 LEDs mit drauf. Die ersten Blinky-Programme gehen auch ohne extra Hardware. USB-Kabel reicht, davon hat man ja eh genug herumfliegen. Die Cube-IDE geht ganz prima, da kann man sogar interaktiv debuggen.

Wenn die Blinkys laufen, muss man sehen, in welche Hardware-Richtung man gehen möchte: AD-Verarbeitung. Oder Bus-Programmierung (SPI, I2C). Timer Anwendungen. Dann kauft man passend dazu.

ST lieferte bei mir auch einiges an Beispielen mit, gut zum lernen. USB-CDC war z.B. mit dabei.

Und letztendlich lernt man auf einem nackten ST mehr, als in der Arduino Kindergartenwelt.

#7608629
Lesenswert?

Peter schrieb:

Und letztendlich lernt man auf einem nackten ST mehr, als in der Arduino Kindergartenwelt.

Magst du das näher erläutern?

Allein was die Anzahl und Möglichkeiten der Konfigurations- und Timer-Register angeht, was die Register/Fuses für Clock-Sources angeht,... ist ein 8bit-AVR erst einmal deutlich übersichtlicher.

Die Arduino IDE ist im Vergleich zu Eclipse schlank und übersichtlich aufgebaut und bietet erst einmal alles, was man als Anfänger benötigt.

Ob es nun while(1){} oder loop(){} heißt, macht für die Programmier-Sammel-Erfahrung keinen Unterschied.

Die IDE nutzt normales avrgcc. Du kannst deine LED mit zwar mit digitalWrite(LED, 1); einschalten, aber PORTB |= (1<<PORTB1); geht genau so, wie man es mit avrgcc halt macht.

Ja, es gibt für viele Dinge Libraries, die mann nutzen kann, die einem ein bisschen Arbeit abnehmen, aber mit der Logik müsste CubeMX für dich auch Kindergartenwelt sein, weil man ja nicht wie echte Männer Bitpopelei auf Fußpilzebene betreibt?

#7608728
Lesenswert?

Sebastian R. schrieb:

Magst du das näher erläutern?

Ich habe diverse Leute erlebt, die nicht aus der 'betreuten' Arduino-Welt herausgefunden haben. Wenn man etwas mehr möchte, dann muss man sich mit den unterliegenden Subsystemen beschäftigen. Das muss jetzt nicht über Bitfriemelei sein, denn STM bietet einiges in Set/Get Funktionen an. Aber man muss die Datenblätter lesen und manche Register setzen. Beispiel: Mein STM kann SPI auf 3 verschiedene Arten ansprechen: Polling, Interrupt und DMA Betrieb. STM stellt die Init() Funktionen im Sourcecode zur Verfügung, wo man sich dann auch die Unterschiede anschauen kann. Für einen professionellen Einsatz muss man dann auch die richtige Modi wählen. Das geht nicht, wenn man nur ein paar Blinkys mit DigitalWrite, oder AnalogRead (genaue Funktionsnamen kenne ich nicht) benutzt.

#7608734
Lesenswert?

Peter schrieb:

Das geht nicht, wenn man nur ein paar Blinkys mit DigitalWrite, oder AnalogRead (genaue Funktionsnamen kenne ich nicht) benutzt.

Nur die Arduino IDE und das Ökosystem zwingt einen nicht dazu, diese Funktionen zu nutzen.

Du kannst normal die AVR-Bibliotheken einbinden (z.B. #include <avr/power.h>) und kannst auch ganz normal die Register manipulieren.

Ich nutze die Arduino IDE als schlanke Alternative zu VSCode oder MPLAB. Im Prinzip ist es nur Notepad++ mit avrgcc und avrdude eingebaut.

Meine Funktion, um Timer0 beim ATTiny85 in der Arduino IDE zu konfigurieren sieht z.B. so aus. Komplett ohne etwas, das nur mit Arduino geht.

1
void setupT0() {
2

3
  // Normal port operation, OC0A/OC0B disconnected, Normal Timer operation
4
  TCCR0A = (0 << COM0A1) | (0 << COM0A0) | (0 << COM0B1) | (0 << COM0B0) | (0 << WGM01) | (0 << WGM02);
5

6
  // Ext. T0 as input. Rising edge
7
  TCCR0B = 0;
8
  TCCR0B = (0 << FOC0A) | (0 << FOC0B) | (0 << WGM02) | (1 << CS02) | (1 << CS01) | (1 << CS00);
9
}

Genau so, wie man es auch in Atmel Studio oder MPLAB oder eben auch beim STM32 "bare metal" machen würde.

Persönliche Seite #7608747
Lesenswert?

Sebastian R. schrieb:

Mit einem Porsche das Fahren lernen ist vielleicht etwas ambitioniert, oder?

Naja, der Porsche ist doch bekannt als der am Einfachsten zu fahrende Sportwagen wegen des gutmütigen Fahrwerks.

Wer schon programmieren kann und sich auch mit (Digital-)Elektronik auskennt und die Zeit und Energie hat wird mit dem H7 schon klar kommen. Immerhin hat ST eine relativ gute Dokumentation, IDE, Libraries.

Mit "Bare Metal" / Registerprogrammieren würd ich sowieso nicht mehr anfangen, sondern direkt mit einem High-Level API. Allerdings ist das Arduino-API da schon einfacher als z.B. die STM32 Cube-APIs. Aber mit vorhandenen Programmierkenntnissen wird es schon gehen.

Thomas T. schrieb:

SDIO hab ich bis heute nicht am laufen...

Das ist aber bei allen STM32-Varianten identisch. Und die ST-Dokumentation (inkl. Errata!) sowie die SD-Spezifikation enthält eigentlich alle Informationen die man dazu braucht.

Schwieriger sind solche Unterfangen bei Controllern und zugehöriger komplexer Software mit wenig Dokumentation. Da muss man dann viele educated guesses machen, und dafür braucht es Erfahrung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren