Ich wüsste ich gerne, der HSI (R/C) Oszillator des STM32F103 mit dem LSE (32kHz Quarz) Oszillator synchronisiert werden kann. Das man ihn kalibrieren kann ist mir klar, ich denke da aber eher an eine fortlaufend automatisch ablaufende Funktion der PLL. Dann könnte man auf den zweiten Quarz verzichten, selbst mit USB - denke ich jedenfalls. Cube MX bietet das nicht an, ich habe aber schon zweimal gelesen, dass der Chip mehr Konfigurationsmöglichkeiten bietet, als Cube MX unterstützt. Ich will die HAL sowieso nicht verwenden.
Stefan U. schrieb: > Ich wüsste ich gerne, der HSI (R/C) Oszillator des STM32F103 mit dem LSE > (32kHz Quarz) Oszillator synchronisiert werden kann. Ich wüsste jetzt nicht wie 2 Schwingkreise synchronisiert werden sollen, die ihre eigenen Frequenzen haben? Der HSI hat ja mit dem LSE so nichts zu tun. Es ist so, dass vor jedem Zugriff auf die RTC Register ein Sync abgewartet werden muss. /* Wait for RTC registers synchronization */ RTC_WaitForSynchro(); und /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); damit Probleme umgangen werden, die aus den unterschiedlichen Frequenzen heraus entstehen. Die RTC ist ja samt ihrer Register durch die LSI oder LSE geclocked. Aber ob das Deine Frage war? .... tja,..
In der Appnote AVR1003 heisst es: "The XMEGA Clock System provides two Digital Frequency-locked Loops (DFLLs), one for the 2 MHz RC oscillator and one for the 32 MHz ring oscillator. The DFLLs can be configured individually to use either the internal 32 kHz RC oscillator or an external 32 kHz watch crystal as a reference for the calibration process. Once enabled, a DFLL provides continuous calibration of its oscillator based on the clock reference." Genau das habe ich mal angewendet. Ich hatte nur ein Quarz (nämlich 32kHz) verwendet und konnte daraus auch ziemlich präzise 32Mhz ableiten, obwohl der Haupttakt nur mit einem R/C Oszillator erzeugt wurde. Ich hatte gehofft, dass der STM32 so etwas auch kann.
Im F1 gibt es keine interne Verbindung von LSE zu einem Timer. Du koenntest aber ueber MCO LSE ausgeben und auf einem anderen Timer auf eine Capture Channel ausgeben.Den Timer laesst Du mit HSI laufen. Mit der Differenz zwischen den Capturewerten stellst Du HSI cal nach. Koennte gehen. Einfacher ist ein L4, der kann MSI mit LSE mit Boardmitteln nachstellen...
> Im F1 gibt es keine interne Verbindung von LSE zu einem Timer.
Es sei denn, man nennt die RTC einen Timer.
Wobei mich das auf einen Lösungsansatz bringt. Ich könnte doch einfach
im Sekunden-Interrupt der RTC den SysTick Counter auslesen. Jede Sekunde
müsste 1000 SysTicks entsprechen. Wenn nicht, kann ich die
Geschwindigkeit des HSI Oszillator ein bisschen erhöhen bzw. verringern.
Das werde ich heute Abend mal versuchen.
Stefan U. schrieb: > Das man ihn kalibrieren kann ist mir klar, ich denke da aber eher an > eine fortlaufend automatisch ablaufende Funktion der PLL. Dann könnte > man auf den zweiten Quarz verzichten, selbst mit USB - denke ich > jedenfalls. Nein das geht nicht, der HSI kann nur auf 1% genau eingestellt werden - auch über den Abgleich über den LSE. 1% ist für USB zu ungenau. Aber du kannst einen STM32 mit HSI48 verwenden, die haben dann im USB-Core eine Clock-Recovery aus den USB-Frames. Dann kannst du dir den zweiten Quarz tatsächlich sparen.
:
Bearbeitet durch User
> der HSI kann nur auf 1% genau eingestellt werden - auch über den Abgleich
Hmm schade. Aber nicht schlimm, auf die 50 Cent kommt es nicht wirklich
an.
Stefan U. schrieb: > der HSI kann nur auf 1% genau eingestellt werden - auch über den > Abgleich > > Hmm schade. Aber nicht schlimm, auf die 50 Cent kommt es nicht wirklich > an. Ergänzend: Hab jetzt hmm 2 Projekte die den HSI ohne Kalibrierung für die PLL verwenden, um die 48MHz für USB zu erzeugen - und es funktioniert problemlos und stabil xD Aber verkaufen würde ich das so nicht wollen :)
Zum "Abgleich" des HSI Taktes gibt es auch eine Application note http://www.st.com/resource/en/application_note/cd00221839.pdf
Einige der 'F0s können ihren HSI mit dem clock recovery system (CRS) auf den LSE synchronisieren..
> Zum "Abgleich" des HSI Taktes gibt es auch eine Application note
Demnach lässt sich der HSI Oszillator in 40kHz Schritten (0,5%)
einstellen. Reicht das (sicher) für USB aus?
Stefan U. schrieb: > Reicht das (sicher) für USB aus? Nein, es müssten +/-0,25% sein :) > High speed data is clocked at 480.00 Mb/s with a data signalling > tolerance of ± 500 ppm. > Full speed data is clocked at 12.000 Mb/s with a data signalling > tolerance of ± 0.25 % or 2,500 ppm. > Low speed data is clocked at 1.50 Mb/s with a data signalling tolerance > of ± 1.5 % or 15,000 ppm.
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.