Hallo Leute, kann mir jemand dabei helfen, wie ich bei dem STM32F031C6 Controller den internen Takt programmieren kann?
Der Controller startet von Anfang an mit dem internen Takt, ohne das du etwas tun musst. Was willst du genau ändern?
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.
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.
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.
Tim K. schrieb: > Ich nutze eine > generierte Firmware. Disassemblieren ist die einzige Möglichkeit, wenn du keinen Source-Code hast.
Sorry, ich habe mich falsch ausgedrückt. Ich habe schon einen Source-Code. Ist das die SystemClock_Config() Routine?
Hast Du auch eine Datei mit der Endung ioc? Dann ist das ein CubeMX Projekt. Damit geht das sogar graphisch.
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!
Tim K. schrieb: > Ja, die CubeMX Projekt Datei habe ich auch. Die Taktkonfiguration kannst du dann wohl wahrscheinlich in Cube MX ändern.
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.
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.
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(); |
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?
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.
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.
Reicht es wenn ich die Einstellung bei System Clock Mux auf HSI ändere?
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)
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).
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.
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.
Hast Du auch mit "Generate" das Projekt comiliert und übertragen?
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?
"Generation" heißt das. Und dann muss CubeMX und eine Toolchain vorhanden sein.
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.
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?
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
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.
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
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...
das ist schlecht. Also langsam schrittweise voran, Spannungen am Chip prüfen, Pegel am Resetpin. Eigenes einfaches Blinky flashen.
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...
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
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.
Hat der Mikrocontroller eine Spannungsversorgung? Messe direkt am Chip. Welchen Pegel hat der Reset Pin?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.