STM32 Quarzfrequenz in Firmware bestimmen

Gast #4809414
Lesenswert?

Hallo.
Mir liegt eine Schaltung mit einem STM32F405 vor, die - im Laufe der 
Zeit - zwei verschiedene Quarze verwendet hat. (8MHz & 25MHz)

Die bisherige Firmware wird in 2 Varianten compiliert. Einziger 
Unterschied die Einstellungen zur PLL. Ich würde jetzt gern die Frequenz 
der Quarzes automatisch beim Firmwarestart ermitteln und einfach die 
passenden Settings verwenden.

Wie stellt man dies am einfachsten an?

Vielen Dank schon mal.
Pepe.
#4809428
Lesenswert?

Der Controller startet sowieso immer mit HSI, also dem internen 16MHz 
RC-Oszillator. Von da aus kannst Du den HSE, also Deine 8 oder 25 MHz 
Quarze aktivieren und mit einem Timer von der Frequenz vermessen. Je 
nach Messwert die eine oder andere PLL-Einstellung verwenden.

Der HSI ist nicht so genau und schwankt mit der Temperatur, also etwas 
Toleranz bei den Schwellwerten vorsehen.
Gast #4809448
Lesenswert?

Bei Deinem Controller geht es ja anscheinend einfach. Ganz allgemein: 
falls er einen unabhängigen Watchdog hat, kannst Du die Zeit bis zu eben 
jenem auslösen messen (natürlich in RAM, das nicht vom Startup gelöscht 
wird). Gleiches ist prinzipiell mit praktisch jeder RC-Schaltung 
möglich, die sich irgendo mit eng tolleriertem C und 
Lade/Rücklesemöglichkeit befindet. RTCCs gehen natürlich immer, auch 
eingehende Signale aller Art, z.B. am UART oder Antwortzeiten. Selbst 
Speicher-Löschzeiten können derartige Unterschiede zur Not erkennen 
lassen, (auch wenn sich darauf wohl niemand wirklich verlassen möchte).
Gast #4809458
Lesenswert?

@Gerd:
So hatte ich mir das auch vorgestellt.
Mir war nur nicht bewusst, dass HSI & HSE gleichzeitig laufen können...

Noch eine Verständnisfrage:

Mit RCC_HSEConfig(RCC_HSE_ON) HSE aktivieren,
Evtl. PLL einstellen(falls nötig) und
Timer11 mit HSE_RTC takten (ist anscheinend der
einzigste Timer, der HSE "direkt" verwenden kann)
Gast #4809855
Lesenswert?

Das mit dem ausmessen der externen Frequenz mit dem HSI funktioniert. 
Hab ich selbst schon implementiert.

Eine Alternative wäre es eine Hardware Konfiguration zu speichern, in 
welcher die Software Relevanten Schaltungsänderungen hinterlegt sind.

Diese dürfte dann bei einem SW Update natürlich nicht überschrieben 
werden.

mfg

Hinz & Kunz
Gast #4809984
Lesenswert?

Kunz schrieb:
> Eine Alternative wäre es eine Hardware Konfiguration zu speichern

Das sollte man ja sowieso, ein Softwareupdate sollte ja nicht 
IP-Adressen, Seriennummer usw. überschreiben, sonst müsste man ja das 
Gerät nach jedem Update ganz neu in Betrieb nehmen. Die Hardwareversion 
wäre da nur ein zusätzlicher Eintrag.

Georg

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