Ich versuche, einen der Timer-Eingänge eines STM32 so zu konfigurieren, dass er sich als Frequenzzähler für ein externes Signal verhält. Das STM32-Datenblatt beschreibt einen "Eingangserfassungsmodus" in Abschnitt 17.3.6 (Seite 342)
Mein Verständnis dieses Modus ist, dass der Prozessor immer dann, wenn ein Eingang am ausgewählten TIMx_CHx-Eingang eingeht, den Wert eines freilaufenden internen Zählers erfasst. Die Frequenz kann dann anhand des Zählerwerts und der Frequenz des internen Zählers berechnet werden.
Ich versuche, dies in CubeMX zu aktivieren, und habe Schwierigkeiten, die Erklärung des Datenblatts mit den Einstellungen in CubeMX zu korrelieren. Dies ist, was ich derzeit konfiguriert habe. Ist das richtig?
Kann ich auch mehrere unabhängige Eingänge in separaten Kanälen auf demselben Timer ausführen, um das Timing gleichzeitig zu erfassen?
Frequenzzähler können schnell kompliziert werden, abhängig von der gewünschten Bandbreite und der Taktrate der internen Uhr sowie der Größe der Register, die die Clock-Ticks und die Input-Ticks enthalten.
Ich meine, es sieht so aus, als würde es funktionieren, aber Sie sollten sicherstellen, dass (1) der Taktzähler und der Frequenzzähler am Ende des Samples aktualisiert werden (2) dass keiner während des Samples überläuft (3) das Setup wird geben Ihnen die gewünschte Auflösung und (4) dass die MCU Anpassungen vornimmt, wenn die Bandbreite groß genug ist, wo sie einige Zeit überläuft und / oder sehr niedrig abfällt. Der erste würde zu falschen Ergebnissen führen und der zweite würde die Genauigkeit bei niedrigen Hz drastisch reduzieren.
folgte Monica zu Codidact