Forum: Mikrocontroller und Digitale Elektronik STM32F1 Verständnis mit Registerbits


von fugchen (Gast)


Lesenswert?

Ich arbeite mich gerade in den STM32F1 ein und habe dabei mit dem 
Verständnis von einigen Bits Probleme:
- HSEBYP: wenn man dieses Bit setzt, dann wird der interne Oszillator 
übergangen und es wird HSE genommen, verstehe ich das richtig? Wie habe 
ich dann aber z.B. folgenden Satz zu verstehen: "The HSEBYP bit can be 
written only if the HSE oscillator is disabled"? Widerspricht sich das 
nicht irgendwie? Und sollte ich dieses Bit setzen, wenn ich einen 
externen Quarz verwende oder ist das üblicherweise überflüssig, wenn man 
sowieso den internen Takt deaktiviert? (S. 131, Ref. Man.)
- PLLXTPRE: dieses aktiviert eigentlich einfach nur den PREDIV1 
prescaler, oder? Wofür braucht man dieses Bit aber? Man kann ja auch 
einfach PREDIV1 auf 0000 setzen. (S. 134, Ref. Man.)

Ich hoffe, das war es.

Danke schon einmal für alle Antworten.

von Andreas Müller (Gast)


Lesenswert?

fugchen schrieb:
> Ich arbeite mich gerade in den STM32F1 ein und habe dabei mit dem
> Verständnis von einigen Bits Probleme:


Du musst Dir angewöhnen, präzise zu schreiben. Es gibt mehrere F1 
Controller von ST. Der F100 hat ein anderes Ref-Manual als z.B. der sehr 
verbreitete F103.
Welchen nutzt Du?


> - HSEBYP: wenn man dieses Bit setzt, dann wird der interne Oszillator
> übergangen und es wird HSE genommen, verstehe ich das richtig? Wie habe
> ich dann aber z.B. folgenden Satz zu verstehen: "The HSEBYP bit can be
> written only if the HSE oscillator is disabled"? Widerspricht sich das
> nicht irgendwie? Und sollte ich dieses Bit setzen, wenn ich einen
> externen Quarz verwende oder ist das üblicherweise überflüssig, wenn man
> sowieso den internen Takt deaktiviert? (S. 131, Ref. Man.)


Häh?
HSEBYP musst Du setzen, wenn Du einen externen Oszillator anschließt, 
das macht man z.B. wenn man den Takt für mehrere Einheiten in der 
Schaltung braucht.
Wenn Du einen Quarz anschließt, darfst Du das Bit nicht setzen, da der 
externe Quarz dann mit der internen Logic die Taktschaltung bildet.
Also beim Startup ganz normal den HSE aktivieren und die PLL, wenn die 
Frequenz höher als die des Quarzes sein soll.


> - PLLXTPRE: dieses aktiviert eigentlich einfach nur den PREDIV1
> prescaler, oder? Wofür braucht man dieses Bit aber? Man kann ja auch
> einfach PREDIV1 auf 0000 setzen. (S. 134, Ref. Man.)


Das ist nur der Vorteiler für die PLL. Den brauchst Du, wenn Du andere 
Frequenzen als die des Quarzes brauchst. Kannst Du aber leicht 
ausrechnen.
Oder Du schreibst kurz, welchen Controller Du nutzt, welchen Quarz und 
mit welcher Frequenz der Controller laufen soll.

von fugchen (Gast)


Lesenswert?

Andreas Müller schrieb:
> fugchen schrieb:
>> Ich arbeite mich gerade in den STM32F1 ein und habe dabei mit dem
>> Verständnis von einigen Bits Probleme:
>
> Du musst Dir angewöhnen, präzise zu schreiben. Es gibt mehrere F1
> Controller von ST. Der F100 hat ein anderes Ref-Manual als z.B. der sehr
> verbreitete F103.
> Welchen nutzt Du?

Ich dachte ehrlich gesagt, dass die gleich wären, da man auch dieselben 
Header-Files benutzt. Es geht um einen STM32F103.

>> - HSEBYP: wenn man dieses Bit setzt, dann wird der interne Oszillator
>> übergangen und es wird HSE genommen, verstehe ich das richtig? Wie habe
>> ich dann aber z.B. folgenden Satz zu verstehen: "The HSEBYP bit can be
>> written only if the HSE oscillator is disabled"? Widerspricht sich das
>> nicht irgendwie? Und sollte ich dieses Bit setzen, wenn ich einen
>> externen Quarz verwende oder ist das üblicherweise überflüssig, wenn man
>> sowieso den internen Takt deaktiviert? (S. 131, Ref. Man.)
>
> Häh?
> HSEBYP musst Du setzen, wenn Du einen externen Oszillator anschließt,
> das macht man z.B. wenn man den Takt für mehrere Einheiten in der
> Schaltung braucht.
> Wenn Du einen Quarz anschließt, darfst Du das Bit nicht setzen, da der
> externe Quarz dann mit der internen Logic die Taktschaltung bildet.
> Also beim Startup ganz normal den HSE aktivieren und die PLL, wenn die
> Frequenz höher als die des Quarzes sein soll.

Das heißt, dieses Bit ist nur für externe Oszillatoren und ansonsten 
vernachlässigbar, richtig?

>> - PLLXTPRE: dieses aktiviert eigentlich einfach nur den PREDIV1
>> prescaler, oder? Wofür braucht man dieses Bit aber? Man kann ja auch
>> einfach PREDIV1 auf 0000 setzen. (S. 134, Ref. Man.)
>
> Das ist nur der Vorteiler für die PLL. Den brauchst Du, wenn Du andere
> Frequenzen als die des Quarzes brauchst. Kannst Du aber leicht
> ausrechnen.
> Oder Du schreibst kurz, welchen Controller Du nutzt, welchen Quarz und
> mit welcher Frequenz der Controller laufen soll.

Tatsächlich. Da gibt es in der Ref. Man. zwei Erklärungen, einmal auf S. 
101 und auf S. 134. Ich habe nur die auf S. 134 gesehen und die fand ich 
ehrlich gesagt ziemlich verwirrend.

von John Doe (Gast)


Lesenswert?

fugchen schrieb:
> Das heißt, dieses Bit ist nur für externe Oszillatoren und ansonsten
> vernachlässigbar, richtig?


Präzise: "ansonsten nicht zu setzen"!


> Tatsächlich. Da gibt es in der Ref. Man. zwei Erklärungen, einmal auf S.
> 101 und auf S. 134. Ich habe nur die auf S. 134 gesehen und die fand ich
> ehrlich gesagt ziemlich verwirrend.


Schön zu sehen, dass hier mal jemand das Ref.-Manual durcharbeitet. Wird 
ja leider immer seltener.
Also bleib dran und bei Fragen nicht scheuen, hier zu schreiben :)

von neuer PIC Freund (Gast)


Lesenswert?

> Es geht um einen STM32F103.

Immer noch nicht präzise.

Stocher mal bei den Medium-density auf S. 101.

Ansonsten sind die uC hierzu doch eh alle ähnlich aufgebaut. Irgendwo 
ein Bit, was man einschalten kann, oder über Modi kodiert, aktiviert den 
Verstärker. Auslassen spart Strom. Eventuell wird der OSC_OUT frei für 
GPIO.

von Carl D. (jcw2)


Lesenswert?

Das Ref.Man. beschreibt die ganze Familie. Auf S.40 beginnt eine 
"Übersicht" was für wen gedacht ist. F103 ist ein "Mediumdensity 
Device".
Beim Lesen versuche ich immer mal wieder auf der Seitenüberschrift 
meinen Devicetype zu finden.

fugchen schrieb:
> Tatsächlich. Da gibt es in der Ref. Man. zwei Erklärungen, einmal auf S.
> 101 und auf S. 134. Ich habe nur die auf S. 134 gesehen und die fand ich
> ehrlich gesagt ziemlich verwirrend.

S.134 ist für die "Communication Device"-Linie, die sich offenbar im 
Bereich Clock von den anderen unterscheidet.

von Nico W. (nico_w)


Lesenswert?

> F103 ist ein "Mediumdensity Device".

Das ist pauschal falsch.

von Stefan F. (Gast)


Lesenswert?

> da man auch dieselben Header-Files benutzt

Die enthalten aber bedingte Abschnitte - abhängig vom Controller Typ. 
Schau sie Dir mal genauer an.

> Beim Lesen versuche ich immer mal wieder auf der
> Seitenüberschrift meinen Devicetype zu finden.

Guck mal, das habe ich für die STM32F1 Serie zusammen gestellt:

http://stefanfrings.de/stm32/index.html#models
http://stefanfrings.de/stm32/index.html#doku

Da hast du 1 Reference Manual aber insgesamt 13 Datenblätter, die sind 
alle irgendwo unterschiedlich.

von Carl D. (jcw2)


Lesenswert?

Nico W. schrieb:
>> F103 ist ein "Mediumdensity Device".
>
> Das ist pauschal falsch.

Es ist aber sicher kein "Connectivity Device".

Pauschal war meine Annahme, daß Leute wie der TO und ich an so ein Ding 
am einfachsten via BluePill kommen. Ich hatte nicht den Eindruck, daß 
der TO professionell mit einer nicht so typischen Variante arbeiten 
könnte.
Immerhin weiß er ja nun, wen er zu den ganz tiefen Details fragen 
könnte.

: Bearbeitet durch User
von fugchen (Gast)


Lesenswert?

Carl D. schrieb:
> Das Ref.Man. beschreibt die ganze Familie. Auf S.40 beginnt eine
> "Übersicht" was für wen gedacht ist. F103 ist ein "Mediumdensity
> Device".
> Beim Lesen versuche ich immer mal wieder auf der Seitenüberschrift
> meinen Devicetype zu finden.
>
> fugchen schrieb:
>> Tatsächlich. Da gibt es in der Ref. Man. zwei Erklärungen, einmal auf S.
>> 101 und auf S. 134. Ich habe nur die auf S. 134 gesehen und die fand ich
>> ehrlich gesagt ziemlich verwirrend.
>
> S.134 ist für die "Communication Device"-Linie, die sich offenbar im
> Bereich Clock von den anderen unterscheidet.

Tatsächlich.
Überschriften lesen hätte in diesem Fall wohl einiges erleichtert. 
Ansonsten scheint das aber größtenteils übereinzustimmen, da ich die 
ganze Zeit mit den RCC-Registern von der CL gearbeitet habe.
Danke euch.

von fugchen (Gast)


Lesenswert?

Und als Anmerkung noch:
es geht (ganz präzise) um zwei STM32F103:
einmal den STM32F103RB auf einem Nucleo-Board und einmal um den 
STM32F103C8T6 auf einem Bluepill-Board.
Es stimmt, dass ich so etwas nicht so schnell freiwillig selbst designen 
und löten werde.

von Nico W. (nico_w)


Lesenswert?

Es gibt ja auch noch andere Boards außer Bluepill und co.

Ich habe mir vor einiger Zeit nen Eval-Board mit einem STM32F103ZET 
bestellt. Und das ist halt eines mit nem High-density.

Das zeigt aber wieder, dass man einfach nur genauer beschreiben sollte 
um was es genau geht. Allgemeine Überschriften führen dann gerne für 
alle möglichen Annahmen.

Hat der TO aber ja in seinem letzten Beitrag nun korrigiert.

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.