Forum: Mikrocontroller und Digitale Elektronik STM32 HSI mit LSE synchronisieren?


von Stefan F. (Gast)


Lesenswert?

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.

von Christian J. (Gast)


Lesenswert?

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,..

von Stefan F. (Gast)


Lesenswert?

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.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

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...

von Stefan F. (Gast)


Lesenswert?

> 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.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

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
von Stefan F. (Gast)


Lesenswert?

> 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.

von Mampf unterwegs (Gast)


Lesenswert?

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 :)

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Zum "Abgleich" des HSI Taktes gibt es auch eine Application note 
http://www.st.com/resource/en/application_note/cd00221839.pdf

von 23mts (Gast)


Lesenswert?

Einige der 'F0s können ihren HSI mit dem clock recovery system (CRS) auf 
den LSE synchronisieren..

von Stefan F. (Gast)


Lesenswert?

> 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?

von Mampf F. (mampf) Benutzerseite


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

Ok, dann war das klar eine Schnapsidee.

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
Noch kein Account? Hier anmelden.