Forum: Mikrocontroller und Digitale Elektronik Internen Takt beim STM32F031 verwenden


von Tim K. (timkl94)


Lesenswert?

Hallo Leute,

kann mir jemand dabei helfen, wie ich bei dem STM32F031C6 Controller den 
internen Takt programmieren kann?

von Bimbo. (Gast)


Lesenswert?

Der Controller startet von Anfang an mit dem internen Takt, ohne das du 
etwas tun musst. Was willst du genau ändern?

von Tim K. (timkl94)


Lesenswert?

Ich teste gerade das Steval-Spin3202 Board mit dem STSPIN32F0 
Controller, bei dem ein STM32F031F6 integriert ist.
Mein Problem ist, dass der STSPIN32F0 nicht eigenständig läuft. Auf dem 
Board gibt es noch einen STM32F103, mit dem man den STSPIN32F0 
programmiert. Das Board funktioniert nur, wenn der STM32F013 versorgt 
wird.

von Stefan F. (Gast)


Lesenswert?

Alle STM32 starten mit internem Takt. Wenn da jemand etwas dran ändert, 
dann das Programm das im Flash liegt. Das musst du anpassen. Im 
einfachsten Fall die Konfigurationsroutine für die Taktversorgung 
auskommentieren, dann gilt wieder der Reset-Default.

von Tim K. (timkl94)


Lesenswert?

Stefan F. schrieb:
> Alle STM32 starten mit internem Takt. Wenn da jemand etwas dran
> ändert,
> dann das Programm das im Flash liegt. Das musst du anpassen. Im
> einfachsten Fall die Konfigurationsroutine für die Taktversorgung
> auskommentieren, dann gilt wieder der Reset-Default.

Wo finde ich die Konfigurationsroutine in meinem Projekt? Ich nutze eine 
generierte Firmware.

von Prost (Gast)


Lesenswert?

Tim K. schrieb:
> Ich nutze eine
> generierte Firmware.

Disassemblieren ist die einzige Möglichkeit, wenn du keinen Source-Code 
hast.

von Tim K. (timkl94)


Lesenswert?

Sorry, ich habe mich falsch ausgedrückt. Ich habe schon einen 
Source-Code.

Ist das die SystemClock_Config() Routine?

von Dennis (Gast)


Lesenswert?

ja

von pegel (Gast)


Lesenswert?

Hast Du auch eine Datei mit der Endung ioc?

Dann ist das ein CubeMX Projekt. Damit geht das sogar graphisch.

von Tim K. (timkl94)


Lesenswert?

Ja, die CubeMX Projekt Datei habe ich auch.

von Stefan F. (Gast)


Lesenswert?

Tim K. schrieb:
> Wo finde ich die Konfigurationsroutine in meinem Projekt?

Schau doch mal, welche Infos du vor dieser Frage zu deinem Projekt 
bereitgestellt hast. Und dann lies nochmal deine Frage.

Das können wir nicht wissen. Wir sind keine Hellseher!

von Stefan F. (Gast)


Lesenswert?

Tim K. schrieb:
> Ja, die CubeMX Projekt Datei habe ich auch.

Die Taktkonfiguration kannst du dann wohl wahrscheinlich in Cube MX 
ändern.

von Tim K. (timkl94)


Angehängte Dateien:

Lesenswert?

Stefan F. schrieb:
> Tim K. schrieb:
>> Wo finde ich die Konfigurationsroutine in meinem Projekt?
>
> Schau doch mal, welche Infos du vor dieser Frage zu deinem Projekt
> bereitgestellt hast. Und dann lies nochmal deine Frage.
>
> Das können wir nicht wissen. Wir sind keine Hellseher!

Ich benutze die MotorControl Workbench Software, um die Firmware für das 
Board zu generieren.

Ich habe mal ein Beispiel beigefügt, wie so eine Firmware aussieht.

von Stefan F. (Gast)


Lesenswert?

Tim K. schrieb:
> Ich habe mal ein Beispiel beigefügt, wie so eine Firmware aussieht.

Und damit so viel Speicherplatz belegt, wie sonst in einer ganzen Woche 
zusammen kommt.

von Ingo L. (corrtexx)


Lesenswert?

Also das sollte funktionieren, damit läuft der µC auf 48MHz aus dem 
internen Oszillator:
1
  // Enable PLL as Clocksource
2
  FLASH_SetLatency( FLASH_Latency_1 );
3
  RCC_DeInit();
4
  RCC_PLLConfig( RCC_PLLSource_HSI_Div2, RCC_CFGR_PLLMUL12 );
5
  RCC_PLLCmd( ENABLE );
6
  while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET );
7
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  // Select the PLL as clock source.
8
  SystemCoreClockUpdate();

von Tim K. (timkl94)


Lesenswert?

Ingo L. schrieb:
> Also das sollte funktionieren, damit läuft der µC auf 48MHz aus
> dem
> internen Oszillator:  // Enable PLL as Clocksource
>   FLASH_SetLatency( FLASH_Latency_1 );
>   RCC_DeInit();
>   RCC_PLLConfig( RCC_PLLSource_HSI_Div2, RCC_CFGR_PLLMUL12 );
>   RCC_PLLCmd( ENABLE );
>   while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET );
>   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  // Select the PLL as clock
> source.
>   SystemCoreClockUpdate();

Das schreibe ich dann in die SystemClock_Config?

von Stefan F. (Gast)


Lesenswert?

Ich würde das lieber in CubeMX ändern, weil dieser Codeabschnitt von 
CubeMX überschrieben wird, wenn du irgend etwas an den 
Projekteinstellungen (in CubeMX) änderst.

von Tim K. (timkl94)


Lesenswert?

Stefan F. schrieb:
> Ich würde das lieber in CubeMX ändern, weil dieser Codeabschnitt
> von
> CubeMX überschrieben wird, wenn du irgend etwas an den
> Projekteinstellungen (in CubeMX) änderst.

Da bräuchte ich allerdings auch nochmal Hilfe, was ich genau in der 
Clock Configuration ändern muss.

von Tim K. (timkl94)


Lesenswert?

Reicht es wenn ich die Einstellung bei System Clock Mux auf HSI ändere?

von Ingo L. (corrtexx)


Lesenswert?

Tim K. schrieb:
> Das schreibe ich dann in die SystemClock_Config?
Nein, anstelle der SystemClock_Config

Stefan F. schrieb:
> Ich würde das lieber in CubeMX ändern, weil dieser Codeabschnitt von
> CubeMX überschrieben wird,
Keine Ahnung was Cube da veranstaltet, versuch macht kluch

Tim K. schrieb:
> Reicht es wenn ich die Einstellung bei System Clock Mux auf HSI ändere?
Dann läuft er vermutlich halt nur auf 8MHz (HSI)

von Stefan F. (Gast)


Lesenswert?

Tim K. schrieb:
> Reicht es wenn ich die Einstellung bei System Clock Mux auf HSI ändere?

Das würde ich an deiner Stelle erstmal versuchen. Und dann mal schauen, 
was rot wird (wenn etwas rot wird).

von Tim K. (timkl94)


Lesenswert?

Also rot wird nichts.

von Stefan F. (Gast)


Lesenswert?

Na dann, lass ihn laufen

von pegel (Gast)


Lesenswert?

Aus Spaß habe ich mir mal das "Motor Control Workbench" angesehen.

Auf dem Übersichtsbildchen gibt es "Control Unit" mit einen Knopf
"MCU und Clock Freq.".

Mit 2 Clicks kannst Du dort alles einstellen, fertig.

von Tim K. (timkl94)


Lesenswert?

pegel schrieb:
> Aus Spaß habe ich mir mal das "Motor Control Workbench" angesehen.
>
> Auf dem Übersichtsbildchen gibt es "Control Unit" mit einen Knopf
> "MCU und Clock Freq.".
>
> Mit 2 Clicks kannst Du dort alles einstellen, fertig.

Das habe ich total übersehen. Anscheinend ist da der interne Oszi schon 
eingestellt. Dann verstehe ich aber nicht, warum der Chip nicht 
eigenständig läuft.

von pegel (Gast)


Lesenswert?

Hast Du auch mit "Generate" das Projekt comiliert und übertragen?

von Cyblord -. (cyblord)


Lesenswert?

Tim K. schrieb:

> Das habe ich total übersehen. Anscheinend ist da der interne Oszi schon
> eingestellt. Dann verstehe ich aber nicht, warum der Chip nicht
> eigenständig läuft.

Ich würde sagen, er läuft. Er tut nur nicht das was du denkst.
Schon mal die SysClock auf nem Pin ausgegeben und gemessen?

von pegel (Gast)


Lesenswert?

"Generation" heißt das. Und dann muss CubeMX und eine Toolchain 
vorhanden sein.

von Tim K. (timkl94)


Lesenswert?

pegel schrieb:
> Hast Du auch mit "Generate" das Projekt comiliert und übertragen?

Ja, habe ich und das Board funktioniert auch. Mir geht es darum, dass 
das Board nur funktioniert, solange eine USB Verbindung besteht. Ich 
möchte das Board auch ohne USB Verbindung betreiben können.

von Cyblord -. (cyblord)


Lesenswert?

Tim K. schrieb:
> Ja, habe ich und das Board funktioniert auch. Mir geht es darum, dass
> das Board nur funktioniert, solange eine USB Verbindung besteht. Ich
> möchte das Board auch ohne USB Verbindung betreiben können.

Und was hat das mit der Taktquelle zu tun?

von Tim K. (timkl94)


Lesenswert?

Cyblord -. schrieb:
> Tim K. schrieb:
>> Ja, habe ich und das Board funktioniert auch. Mir geht es darum, dass
>> das Board nur funktioniert, solange eine USB Verbindung besteht. Ich
>> möchte das Board auch ohne USB Verbindung betreiben können.
>
> Und was hat das mit der Taktquelle zu tun?

Weil ich noch nicht verstehe, warum das Board nicht läuft, wenn ich nur 
den STSPIN32F0 eigenständig mit einer Spannung von 8-45 V versorge.

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

bist du denn sicher das der µC komplett nicht läuft? Baue doch mal eine 
blinkede LED an den Anfang des main vom STSPIN32F0.
Wenn der µC läuft und nur der Motor nicht kann es noch an den 
Schutzmassnahmen in der SW liegen. Habe das nur überflogen, aber in 
mc_tasks.c ist z.B. eine Safety Task drin. Auch hier wäre sinnvoll einen 
Fehler durch eine LED anzeigen zu lassen.

von Tim K. (timkl94)


Lesenswert?

Johannes S. schrieb:
> bist du denn sicher das der µC komplett nicht läuft? Baue doch mal
> eine
> blinkede LED an den Anfang des main vom STSPIN32F0.
> Wenn der µC läuft und nur der Motor nicht kann es noch an den
> Schutzmassnahmen in der SW liegen. Habe das nur überflogen, aber in
> mc_tasks.c ist z.B. eine Safety Task drin. Auch hier wäre sinnvoll einen
> Fehler durch eine LED anzeigen zu lassen.

Ich werde es gleich mal testen.

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

das ist doch schonmal eine gute Erkenntniss.
Dann ist da eine Kommunikation via RS232 mit einem PC Programm zur 
Parametrierung vorgesehen? Ist die eine serielle Schnittstelle 
angeklemmt über die der PC mit dem Board kommunizieren kann? Hoffentlich 
nicht über die virtuelle COM im STM32F103...

von Tim K. (timkl94)


Lesenswert?

Also der Chip läuft überhaupt nicht.

von Johannes S. (Gast)


Lesenswert?

das ist schlecht. Also langsam schrittweise voran, Spannungen am Chip 
prüfen, Pegel am Resetpin. Eigenes einfaches Blinky flashen.

von Dennis (Gast)


Lesenswert?

Immer diese Anfänger :-)

Also versuchen wir es mal wie Profis:

Wie werden die 3V3 des Mikrocontrollers "hergestellt"? -> Schaltplan 
anschauen, danach wieder hier zurückmelden.

Deine Hausaufgaben musst du schon selber machen...

von Cyblord -. (cyblord)


Lesenswert?

Johannes S. schrieb:
> das ist schlecht. Also langsam schrittweise voran, Spannungen am Chip
> prüfen, Pegel am Resetpin. Eigenes einfaches Blinky flashen.

Das liegt an den ganzen fertigen Boards mit Programmer. Da geht jeder 
talentfreie Frickler her, steckt USB an und klickt sich was zusammen.
Aber dann scheitert es an den elementarsten Dingen, wenn das Teil mal 
produktiv laufen soll, wie Spannungsversorgung, Resetbeschaltung, 
BOOT-Pin usw.
Und man hat ein Realtime OS am laufen bevor man auch nur mal ein Blinky 
gesehen hat. Bei der Fehlersuche steht man dann dumm da. Keinerlei 
logisch strukturierte Vorgehensweise. Grundlagenwissen fehlt an 
kritischen stellen.

Da wird das Pferd halt mal wieder falsch rum aufgezäumt. Die Basics 
sollte man zuerst betrachten.

: Bearbeitet durch User
von Tim K. (timkl94)


Angehängte Dateien:

Lesenswert?

Du H

Dennis schrieb:
> Immer diese Anfänger :-)
>
> Also versuchen wir es mal wie Profis:
>
> Wie werden die 3V3 des Mikrocontrollers "hergestellt"? -> Schaltplan
> anschauen, danach wieder hier zurückmelden.
>
> Deine Hausaufgaben musst du schon selber machen...

Es gibt zwei Controller auf dem Board. Einmal den STSTPIN32F0A Chip mit 
einem integrierten STM32F031, der die 3,3 V über einen DC/DC-Wandler aus 
der Eingangsspannung zwischen 8 und 45 V bekommt und den STM32F013, mit 
dem man den STSPIN32F0A programmieren kann. Dieser bekommt die 3,3 V 
über die USB-Verbindung.

von Stefan F. (Gast)


Lesenswert?

Hat der Mikrocontroller eine Spannungsversorgung? Messe direkt am Chip.
Welchen Pegel hat der Reset Pin?

von Tim K. (timkl94)


Lesenswert?

Das Problem lag am Reset. Ich habe einen Jumper entfernt und jetzt geht 
es.

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.