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.
>Wie stellt man dies am einfachsten an?
Papp nen 32kHz Quarz an die RTC, schreib eine passende
Software und messe damit deine Quarzfrequenz.
Hardwareänderungen sind leider nicht drin. Die PCB wird schon seit einiger Zeit ausgeliefert...
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.
Im Referenzmanual laesst sich ein Kapitel 6.2.11 "Internal/external clock measurement using TIM5/TIM11" finden.
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).
@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)
Uwe B. schrieb: > Internal/external > clock measurement using TIM5/TIM11 Wer lesen kann ist klar im Vorteil. Hab ich übersehen ;-)
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
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
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.