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?
Gast
#5966304
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.
Gast
#5966319
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.