Guten Morgen, gibt es eine einfache Möglichkeit, festzustellen, auf welche MCU eine Firmware geflasht wurde? Konkret will ich einen 64-pinnigen STM32F446RE von einem 100-pinnigen STM32F407VET unterscheiden können. Momentan ist die einzige Variante, die mir einfällt, die folgende: Bei nicht-existierenden Pins wird das Eingangsregister immer als Null gelesen, egal wie das Ausgangsregister und die Pinkonfiguration eingestellt sind. Das habe ich durch ausprobieren festgestellt. Was das Reference Manual dazu sagt, muß ich noch prüfen. So ließe sich zumindest die Pinzahl prüfen. (Für meine Zwecke reicht das.) Gibt es noch eine andere -eventuell sinnvollere - Möglichkeit?
Evtl. hilft das weiter: https://stackoverflow.com/questions/49011830/how-can-i-programatically-read-the-specific-cpu-type-of-an-stm32
Aus der Doku der HAL-Library: "This is supported in STM32F446 and newer and STM32F7xx. On others, HardFault may occur" https://stm32f4-discovery.net/hal_api/group___t_m___i_d___macros.html#ga09814398e25cac76cf4fb9f6499425b7 Ich glaube, da ist meine Methode noch geringfügig weniger intrusiv. Aber es ist gut, zu lesen, daß die Frage nicht weit hergeholt ist, sondern sich schon Library-Hersteller damit beschäftigt haben.
DBGMCU_IDCODE-, Flash size- und Package data register (s. jeweiliges RM). Die muss man (da ggf. Adressen unterschiedlich) halt für alle in Frage kommenden Varianten abklappern.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.