Forum: Mikrocontroller und Digitale Elektronik STM32F407-DISC1 Board defekt


von Christoph K. (chriskuku)


Lesenswert?

Hatte mir durch eine Fehlpolung (0-5V) mein STM32F407-DISC1 Board 
geschlachtet. Da sich danach die MCU noch programmieren ließ 
(STM32-STLINK-Utility), das Programm selbst aber nicht lief (eine 
UART-Ausgabe wäre das einzige Lebenszeichen gewesen, aber die kam 
nicht), habe ich auf den STM32F407VGT6 getippt und diesen ausgewechselt.

Effekt ist aber nach wie vor derselbe. Neuer Chip läßt sich auch 
programmieren, aber Programm selbst scheint nicht zu laufen.

Der SWDIO-Teil ist weitgehend abgeklemmt (ich programmiere den Chip mit 
der ST-LINK SWD-Sektion eines Nucleo-Boards). Ich will die Hoffnung noch 
nicht aufgeben, das Board irgendwie wieder zum Laufen zu bekommen.

Hat jemand vielleicht noch ein paar Ideen? Spannungen (3V, 5V) sind 
jeweils alle da. Werde jetzt mal den STM32F103 aus der ST-LINK Sektion 
auslöten.

von Verstehichnich (Gast)


Lesenswert?

Christoph K. schrieb:
> Hat jemand vielleicht noch ein paar Ideen?

Nur eine. Du steckst da Stunden, Tage, Wochen an Arbeit rein
(hab schon einiges darüber gelesen ....). Hirnrissig sich da
hineinzusteigern.
Dabei könntest du für geschätzte 20 Euro ein neues Board kaufen.

Discovery-compatible Boards (ohne den ganzen Klimbim den man
nicht braucht) bekommt man bei ebay für 15-20 Euro.

von Christoph K. (chriskuku)


Lesenswert?

Ich habe ja auch hier schon nach einem gebrauchten gleichen Board 
gesucht.
Weil das Board in einen vorhandenen Aufbau gesteckt wird, muß es genau 
dieser Typ sein. Auch sind an dem Board schon einige Modifikationen 
gemacht, so daß ich es lieber erhalten würde.

von Walter T. (nicolas)


Lesenswert?

Christoph K. schrieb:
> aber Programm selbst scheint nicht zu laufen.

Das lässt sich ja mit dem ST-Link prüfen. Und wann er aussteigt. Schuß 
ins Blaue: Taktsignal da?

von Stefan F. (Gast)


Lesenswert?

Christoph K. schrieb:
> Auch sind an dem Board schon einige Modifikationen
> gemacht, so daß ich es lieber erhalten würde.

Wie sollen wir dir denn gute Ratschläge geben, was kaputt sein könnte, 
ohne die Modifikationen zu kennen?

von Fragenhagel (Gast)


Lesenswert?

Christoph K. schrieb:
> eine
> UART-Ausgabe wäre das einzige Lebenszeichen gewesen, aber die kam
> nicht

Hat das Board keine LEDs sonst versuch doch darüber mal Lebenszeichen zu 
bekommen? Ich glaube auch nicht, dass es den Aufwand wert ist.

Christoph K. schrieb:
> ich programmiere den Chip mit
> der ST-LINK SWD-Sektion eines Nucleo-Boards

Warum nicht über den eigenen ST-Link?

Wenn du das Board unbedingt retten möchtest kannst du dir ja auch mal 
den Schaltplan angucken und überlegen wo die falsche Spannung schaden 
könnte. Da du ja einiges modifiziert hattest und nicht allzuviel 
Informationen genannt hast ist es aus der Ferne schwer abzuschätzen was 
es zerbraten hat ;)

von Christoph K. (chriskuku)


Lesenswert?

Stefan ⛄ F. schrieb:
> Christoph K. schrieb:
>> Auch sind an dem Board schon einige Modifikationen
>> gemacht, so daß ich es lieber erhalten würde.
>
> Wie sollen wir dir denn gute Ratschläge geben, was kaputt sein könnte,
> ohne die Modifikationen zu kennen?

Es sind ein Haufen Lötbrücken, und trace cuts im Bereich des OTG . Das 
würde jetzt auch nichts beitragen. Hatte es in einem anderen Thread mal 
alles aufgeführt. Man muß sich vorstellen, daß das Discovery so 
verändert wurde, daß alle Pins der extenen Schaltung zur Verfügung 
stehen.

Die Verpolung ist mir passiert, als das Board in der Luft war, also nur 
mit Power- und Programmierleitungen am Nucleo hing.

von Christoph K. (chriskuku)


Lesenswert?

Walter T. schrieb:
> Christoph K. schrieb:
>> aber Programm selbst scheint nicht zu laufen.
>
> Das lässt sich ja mit dem ST-Link prüfen. Und wann er aussteigt. Schuß
> ins Blaue: Taktsignal da?

PH0/PH1 8MHz?

von Christoph K. (chriskuku)


Lesenswert?

Verstehichnich schrieb:
...
> Discovery-compatible Boards (ohne den ganzen Klimbim den man
> nicht braucht) bekommt man bei ebay für 15-20 Euro.

Wahrscheinlich muß ich dann 4 Wochen drauf warten (China). Und letztlich 
weiß man nicht genau, was man bekommt (gefälschter Chip mit Mängeln).

Alternative wäre, jetzt ein neues Board zu kaufen. 35 Eur ist im Moment 
das Günstigste, was ich finden konnte.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Christoph K. schrieb:
> Man muß sich vorstellen, daß das Discovery so
> verändert wurde, daß alle Pins der extenen Schaltung zur Verfügung
> stehen.

Wenn das so ist, dann ist da also kein Bauteil mehr übrig, dass für die 
Funktion relevant ist. Dann hätte der Austausch des Mikrocontroller 
klappen müssen.

Irgend etwas ist anders. Ich würde dringend empfehlen, das in Form eines 
Schaltplanes zu dokumentieren.

von J. -. (Gast)


Lesenswert?

Christoph K. schrieb:
> Hat jemand vielleicht noch ein paar Ideen? Spannungen (3V, 5V) sind
> jeweils alle da. Werde jetzt mal den STM32F103 aus der ST-LINK Sektion
> auslöten.
Wenn Du Dir damit nicht noch mehr Fehler reinholst ... der STM32F103 
hängt mit ein paar Pins am STM32F407, die man leichter auftrennen kann 
als den 103er auszulöten.
https://circuit-diagramz.com/wp-content/uploads/2016/12/schematics_SWD_only-1.jpg
SWDIO und SWDCLK sind sowieso gejumpert und müssen nicht getrennt 
werden.

Probier doch stattdessen, den STM32103 in seiner ursprünglichen Funktion 
als STLink zu enutzen, um einen anderen STM zu flashen. Wenn er das 
kann, ist er wahrscheinlich nicht kaputt.

von Verstehichnich (Gast)


Lesenswert?


von Verstehichnich (Gast)


Lesenswert?

Christoph K. schrieb:
> Und letztlich
> weiß man nicht genau, was man bekommt (gefälschter Chip mit Mängeln).

Käse.

Hab schon viele solche Boards bestellt, waren alle in Ordnung.
F407 Chips sind bisher nicht als Fakes bekannt.

mimimimimi .....

von Verstehichnich (Gast)


Lesenswert?

Wenn sich jemand so im Kreis dreht dann muss man sich
echd uffregge über soviel Kleinkariert.

von Rolf M. (rmagnus)


Lesenswert?

Christoph K. schrieb:
> Alternative wäre, jetzt ein neues Board zu kaufen. 35 Eur ist im Moment
> das Günstigste, was ich finden konnte.

Für zwei? ;-)

https://www.digikey.de/product-detail/de/stmicroelectronics/STM32F407G-DISC1/497-16287-ND/5824404

von Christoph K. (chriskuku)


Lesenswert?

Für 1, Versand kostenlos. Bei Digikey kommen noch 18,00€ Versand hinzu.

Allen, die mir hier irgendwas anderes als STM32F407-DISC1 empfohlen 
haben, sollten vorher besser lesen. Ich habe immer gesagt, ich brauche 
genau dieses Board.

Danke an Rolf.M (rmagnus) für den Digikey-Tip. Immerhin interessant.

von Verstehichnich (Gast)


Lesenswert?

Christoph K. schrieb:
> Ich habe immer gesagt, ich brauche
> genau dieses Board.

Brauchst du nicht, hast du indirekt auch schon zugegeben indem
du ein anderes Board in Betracht gezogen hast.

So lange wie du an der Reparatur deines Boards herumgepfuscht
hast hättest du längst ein neues anderes Board in deinem
Aufbau verdrahtet und wärst wieder am Laufen.

von Rolf M. (rmagnus)


Lesenswert?

Christoph K. schrieb:
> Danke an Rolf.M (rmagnus) für den Digikey-Tip. Immerhin interessant.

Gibt's auch z.B. bei RS oder Reichelt. Bei letzterem wird's aber mit 
Versand schon auf die 35 € rauslaufen.

von Ralf X. (ralf0815)


Lesenswert?

Rolf M. schrieb:
> Christoph K. schrieb:
>> Danke an Rolf.M (rmagnus) für den Digikey-Tip. Immerhin interessant.
>
> Gibt's auch z.B. bei RS oder Reichelt. Bei letzterem wird's aber mit
> Versand schon auf die 35 € rauslaufen.

Toll, das hatte der TE schon selber festgestellt:

Christoph K. schrieb:
> Alternative wäre, jetzt ein neues Board zu kaufen. 35 Eur ist im Moment
> das Günstigste, was ich finden konnte.

Warum lesen viele Foristen den Thread nicht durch, bevor sie eine 
Antwort geben?

@ Christoph K.,
es wirkt etwas befremdlich, wenn Du an einem ganz bestimmten Board 
suchts, das sogar gebraucht, an dem Du selber "rumlötest", also z.B. die 
Schaltung veränderst, aber meckerst, wenn es nicht genau DAS Board ist, 
was jemand ggf. anführt.
Oder die Lieferzeit aus China bemängels, aber versuchst, den 
Gebrauchtwarenmarkt abzugrasen, wo gerade Du dort auch keine Garantie 
hast, dass da noch alles läuft?

von J. -. (Gast)


Lesenswert?

Christoph K. schrieb:
> Effekt ist aber nach wie vor derselbe. Neuer Chip läßt sich auch
> programmieren, aber Programm selbst scheint nicht zu laufen.
Hat zwar nichts mit der 5V-Verpolung zu tun, aber dieses Fehlerbild 
könnte beim Umschalten von HSI auf HSE erscheinen, wenn der Quarz nicht 
läuft.
Programmier doch mal einen Blinky mit HSI.

von Rolf M. (rmagnus)


Lesenswert?

Ralf X. schrieb:
> Rolf M. schrieb:
>> Christoph K. schrieb:
>>> Danke an Rolf.M (rmagnus) für den Digikey-Tip. Immerhin interessant.
>>
>> Gibt's auch z.B. bei RS oder Reichelt. Bei letzterem wird's aber mit
>> Versand schon auf die 35 € rauslaufen.
>
> Toll, das hatte der TE schon selber festgestellt:
>
> Christoph K. schrieb:
>> Alternative wäre, jetzt ein neues Board zu kaufen. 35 Eur ist im Moment
>> das Günstigste, was ich finden konnte.

Rate mal, worauf ich mich mit "die 35 €" bezogen habe!

> Warum lesen viele Foristen den Thread nicht durch, bevor sie eine
> Antwort geben?

Warum kritisieren so viele Foristen Antworten, die sie gar nicht richtig 
erfasst haben?

von Christoph K. (chriskuku)


Lesenswert?

Jürgen S. schrieb:
> Christoph K. schrieb:
>> Effekt ist aber nach wie vor derselbe. Neuer Chip läßt sich auch
>> programmieren, aber Programm selbst scheint nicht zu laufen.
> Hat zwar nichts mit der 5V-Verpolung zu tun, aber dieses Fehlerbild
> könnte beim Umschalten von HSI auf HSE erscheinen, wenn der Quarz nicht
> läuft.
> Programmier doch mal einen Blinky mit HSI.

Muß ich bei funktionierendem 8.000 MHz Quarz an PH0 am Chip eine Clock 
sehen? Bei meinem funktionierenden Anwendungsboard (das mit der 
Anwendungsfirmware geladen ist) sehe ich da keine Oszillation. Bei 
meinem "reparierten" Board auch nicht. Bei einem fabrikneuen mit 
Standard- Jumpersettings und der Standard-App sehe ich an R25(=PH0) die 
8MHz.

Ich weiß aber nicht, was man sehen muß, wenn die MCU auf 168MHz 
eingestellt ist.

von Stefan F. (Gast)


Lesenswert?

Christoph K. schrieb:
> Muß ich bei funktionierendem 8.000 MHz Quarz an PH0 am Chip eine Clock
> sehen?

Wenn du den Quarz Oszillator durch dein Messgerät belastest, könnte er 
dadurch anhalten.

Bei AVR konnte ich mit meinem Oszilloskop den Takt sichtbar machen, aber 
nur an XTAL2 (das würde PH1 entsprechen) und nur wenn der Tastkopf auf 
1/10 eingestellt ist. Ansonsten belastet wer den Oszillator zu stark.

Für solche Kontrollen gibt es den MCO Pin, den man per Software 
aktivieren kann. Schau dir das Clock-Tree Diagramm im Refence Manual an, 
dann siehst du, welche Taktsignale man auf den MCO Ausgang legen kann.

> Ich weiß aber nicht, was man sehen muß, wenn die MCU auf
> 168MHz eingestellt ist.

Die Frequenz des Quarz, ganz sicher keine 168 MHz.

von m.n. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Wenn du den Quarz Oszillator durch dein Messgerät belastest, könnte er
> dadurch anhalten.

Das macht er erfahrungsgemäß nicht.

> Bei AVR konnte ich mit meinem Oszilloskop den Takt sichtbar machen,

Kann man ihn auch riechen?
AVR != STM32

Christoph K. schrieb:
> Bei einem fabrikneuen mit
> Standard- Jumpersettings und der Standard-App sehe ich an R25(=PH0) die
> 8MHz.

Das ist das MCO-Signal vom F103.

von J. -. (Gast)


Lesenswert?

m.n. schrieb:
> Das ist das MCO-Signal vom F103.
Wer weiß, welche Lötbrücken aufgetrennt wurden...

Aus dem Usermanual:
If PH0 and PH1 are used as GPIOs instead of being used as a clock, then 
SB13 and SB14 are closed and R24, R25 and R68 are removed.

•MCO from ST-LINK. From MCO of the STM32F103. This frequency cannot be 
changed, it is fixed at 8 MHz and connected to PH0-OSC_IN of the 
STM32F407VG. Configuration needed:–SB13, SB14 OPEN–R25(a) removed–R68(a) 
soldered

•Oscillator on board. From X2 crystal. For typical frequencies and its 
capacitors and resistors, refer to the STM32F407VG datasheet at 
www.st.com. Configuration needed:–SB13, SB14 OPEN–R25(a) soldered–R68(a) 
removed

•Oscillator from external PH0. From external oscillator through pin 7 of 
the P2 connector. Configuration needed:–SB13 closed–SB14 closed–R25 and 
R68 removed



Für den Blinky (mit HSE) gibt es hier ein Beispiel
https://www.mikrocontroller.net/articles/STM32F4-Discovery
Wenn das nicht geht, HSI probieren.

Und bevor kein Blinky getestet wurde, sage ich hier garnix mehr.

von m.n. (Gast)


Lesenswert?

Jürgen S. schrieb:
> m.n. schrieb:
>> Das ist das MCO-Signal vom F103.
> Wer weiß, welche Lötbrücken aufgetrennt wurden...

Christoph K. schrieb:
> Bei einem fabrikneuen mit
> Standard- Jumpersettings und der Standard-App sehe ich an R25(=PH0) die
> 8MHz.

Alles klar?

von Walter T. (nicolas)


Lesenswert?

Christoph K. schrieb:
> Muß ich bei funktionierendem 8.000 MHz Quarz an PH0 am Chip eine Clock
> sehen?

Christoph K. schrieb:
> Bei meinem funktionierenden Anwendungsboard (das mit der
> Anwendungsfirmware geladen ist) sehe ich da keine Oszillation.

Dann wäre es jetzt wohl interessant, ob beim "funktionierenden" Board 
die MCU auch mit der richtigen Taktfrequenz läuft.

Deine Taktquelleneinstellung kennst immer noch nur Du (hoffentlich). Sie 
erfolgt üblicherweise in SystemInit().

von J. -. (Gast)


Lesenswert?

m.n. schrieb:
> Alles klar?
Hä? Wenn interessiert, was auf dem fabrikneuen Board passiert?
> Christoph K. schrieb:
> Bei meinem funktionierenden Anwendungsboard (das mit der
> Anwendungsfirmware geladen ist) sehe ich da keine Oszillation. Bei
> meinem "reparierten" Board auch nicht.

Ich glaube, das Copy & Pasten sowie Testen eines Blinkys löst 
Kastrationsängste aus.

von m.n. (Gast)


Lesenswert?

Jürgen S. schrieb:
> Hä? Wenn interessiert, was auf dem fabrikneuen Board passiert?

Der TO hatte danach gefragt und ich denke, zumindest er hat meine 
Antwort auch verstanden. Um Dich geht es hier nicht.

von Christoph K. (chriskuku)


Lesenswert?

Jürgen S. schrieb:
...
>
> Für den Blinky (mit HSE) gibt es hier ein Beispiel
> https://www.mikrocontroller.net/articles/STM32F4-Discovery
> Wenn das nicht geht, HSI probieren.
>
> Und bevor kein Blinky getestet wurde, sage ich hier garnix mehr.

Ich versuche gerade, das besagte Blinky-Beispiel zum Laufen zu bekommen.

Leider funktioniert das Beispiel 
https://www.mikrocontroller.net/articles/STM32F4-Discovery nicht auf 
Anhieb.

Man sehe es mir nach, daß ich noch keine funktionierende 
C/C++-Entwicklungsumgebung parat habe. (meine heißt 'vi' und 'make' und 
meine Anwendung ist in Assembler geschrieben. Ich will jetzt nicht 
wiederholen, warum es Assembler sein muß, aber daran ist nicht zu 
rütteln)

Der Versuch, das unter dem Link befindliche main.c zu kompilieren, 
scheitert an einer fehlenden Datei stm32f4xx_gpio.h, nachdem ich das in 
main.c befindliche falsche #include "stm32f4xx.h" in #include 
"stm32f4xx_conf.h" abgeändert hatte. Vielleicht habe ich auch etwas 
übesehen/überlesen?

Blinky Erfolgsmeldung kommt hoffentlich jetzt schnell.

: Bearbeitet durch User
von jo mei (Gast)


Angehängte Dateien:

Lesenswert?

Christoph K. schrieb:
> Blinky Erfolgsmeldung kommt hoffentlich jetzt schnell.

Vielleicht geht's mit dem Code im Anhang noch etwas schneller.

von Christoph K. (chriskuku)


Lesenswert?

jo mei schrieb:
> Christoph K. schrieb:
>> Blinky Erfolgsmeldung kommt hoffentlich jetzt schnell.
>
> Vielleicht geht's mit dem Code im Anhang noch etwas schneller.

Danke. Habe zunächst das fabrikneue Board mit Deinem HEX-File geflasht.
Es blinkt nichts. Danach wieder die Standard-App zurückgeflasht und Leds 
blinken in der gewohnten Manier.

von jo mei (Gast)


Lesenswert?

Christoph K. schrieb:
> Es blinkt nichts.

Stimmt. Da muss ich nochmal "nachhaken".

Christoph K. schrieb:
> Danach wieder die Standard-App zurückgeflasht und Leds
> blinken in der gewohnten Manier.

Warum benutzt du nicht diese zum Testen deines zweiten Boards?

von Christoph K. (chriskuku)


Lesenswert?

jo mei schrieb:
> Christoph K. schrieb:
>> Es blinkt nichts.
>
> Stimmt. Da muss ich nochmal "nachhaken".
>
> Christoph K. schrieb:
>> Danach wieder die Standard-App zurückgeflasht und Leds
>> blinken in der gewohnten Manier.
>
> Warum benutzt du nicht diese zum Testen deines zweiten Boards?


Erst mal die App selbst testen an einem funktionierenden Board.

Noch einmal zur Übersicht:

Board A: nagelneues Board (MB997-D01, blauer Lötstopp)
Board B: mein repariertes Board, wo Blinky-App.HEX aber nicht 
funktioniert
Board C: "heiliges" Board mit der funktionierenden Anwendung

B und C haben die Widerstände R36,R40,R41,R42 entlötet, weshalb ich nur 
mit dem Scope "gucken" kann, ob's blinkt.

Board "B" und "C" funktionieren auch nicht mit Deiner Blinky-App.HEX
Board "C" funktioniert auch nicht mit der Standard-App.
B u. C sind ja speziell gejumpert.

: Bearbeitet durch User
von jo mei (Gast)


Angehängte Dateien:

Lesenswert?

jo mei schrieb:
> Stimmt. Da muss ich nochmal "nachhaken".

Hier nochmal ein Testcode, der sollte aber funktionieren.

Auf die Schnelle unerklärliche Ursache: Im Debugger lief der
Code, wenn man ihn direkt ohne Debugger flashte dann nicht.

von Christoph K. (chriskuku)


Lesenswert?

jo mei schrieb:
> jo mei schrieb:
>> Stimmt. Da muss ich nochmal "nachhaken".
>
> Hier nochmal ein Testcode, der sollte aber funktionieren.
>
> Auf die Schnelle unerklärliche Ursache: Im Debugger lief der
> Code, wenn man ihn direkt ohne Debugger flashte dann nicht.

Erst mal im Board A (blaues, gutes):

Blinkt - 'n bißchen anders als die Standard app - gn/or 4 mal.
Im "guten" Board C aber kein Blinken.

Hier die Jumperung meines STM32F407G-DISC1:
(||= offen,  X = ausgelötet/entfernt, gold=unberührt, offen)

SB2 || gold
SB3 ||
SB4 || gold
SB5 ||
SB6 || gold
SB7 ||
SB8 || gold
SB10 ||
SB11 ||
SB12 ||
SB13 || gold
SB14 || gold
SB15 ||
SB16 ||
SB17 || gold
SB18 ||
SB19 ||
SB20 ||

R22 X
R21 X
R42 X
R48 X
R46 X
R48 X
R49 X
R50 X

R68 X (trennt MCO vom STM32F103 ab)

U6 X
LD1 X
C61 N/A gold
C49 X


Nachtrag:

Hier ist der verwendete Clock-Initialisierungscode, den mein Vorgänger 
benutzt hat. Er benutzt den PLL-Clockgenerator. Was für eine Funktion 
hat in dem Falle überhaupt noch der Quarz? Dient er zum Einlocken der 
PLL?
;---------------------------------------------------------------
;               Clocks
;---------------------------------------------------------------
.set    HSECLK, 8000000             ; HSE crystal oscillator frequency
.set    SYSCLK, 168000000           ; main PLL output frequency
.set    RCLK,   48000000            ; RNG/USB clock frequency

;---------------------------------------------------------------
;               PLL configuration
;
; The critical PLL parameters are checked for validity.
;---------------------------------------------------------------
; PLL input divider PLLM (allowed range: 2 - 63)
; PLLM must be chosen so that the PLL input frequency falls in the 
allowed
; range 1 - 2 MHz
.set    PLLM, 8
.if     PLLM < 2 || PLLM > 63
.error  "PLLM out of range"
.endif

; PLL input frequency (allowed range: 1 - 2 MHz)
.set    f_PLLin, HSECLK / PLLM
.if     f_PLLin < 1000000 || f_PLLin > 2000000
.error  "f_PLLin out of range"
.endif

; PLL output divider DIVP (allowed values: 2, 4, 6, or 8)
; DIVP must be chosen so that f_VCO falls in the range 192 - 432 MHz
.set    DIVP, 2
.if     DIVP != 2 && DIVP != 4 && DIVP != 6 && DIVP != 8
.error  "DIVP out of range"
.endif

; VCO frequency (allowed range: 192 - 432 MHz)
.set    f_VCO, SYSCLK * DIVP
.if     f_VCO < 192000000 || f_VCO > 432000000
.error  "f_VCO out of range"
.endif

; PLL multiplier PLLN (allowed range: 192 - 432)
.set    PLLN, f_VCO / f_PLLin
.if     PLLN < 192 || PLLN > 432
.error  "PLLN out of range"
.endif

; PLL divider PLLQ for RNG clock (allowed range: 2 - 15)
.set    PLLQ, f_VCO / RCLK
.if     PLLQ < 2 || PLLQ > 15
.error  "PLLQ out of range"
.endif

.set    PLLP, (DIVP - 2) / 2       ; PLLP is a 2-bit encoding for DIVP
.set    PLLSRC, 1                  ; PLL clock source (0 = HSI, 1 = HSE)

; PLL configuration word to be loaded into RCC_PLLCFGR register
.set    PLLCONF, PLLQ << 24 | PLLSRC << 22 | PLLP << 16 | PLLN << 6 | 
PLLM

;--------------------------------------------------------------
;               Clock configuration for AHB, APB1 and APB2 peripherals
;--------------------------------------------------------------
.set    HPRE, 0                ; AHB clock prescaler = 1
.set    HCLK, SYSCLK           ; AHB clock
.set    PPRE1, 5               ; APB low-speed clock prescaler = 4
.set    PCLK1, HCLK / 4        ; APB low-speed clock
.set    PPRE2, 4               ; APB high-speed clock prescaler = 2
.set    PCLK2, HCLK / 2        ; APB high-speed clock

.set    SW,     2              ; clock source (0 = HSI, 1 = HSE, 2 = 
PLL)

;.set   LSE_fitted, 0              ; set to 1 if 32-KHz crystal fitted

;.if    LSE_fitted
;.set   LSEON, 1                   ; enable LSE oscillator
;.set   RTCSEL, 1                  ; select LSE as RTC clock source
;.set   RTCPRE, 0                  ; RTC clock prescaler off
;.else
;.set   LSEON, 0                   ; disable LSE oscillator
;.set   RTCSEL, 3                  ; select HSE as RTC clock source
;.set   RTCPRE, HSECLK / 1000000   ; RTC clock must be 1 MHz
;.endif
;.set   RTCEN, 1                        ; enable RTC clock

; clock configuration word to be loaded into RCC_CFGR register
.set    CLKCONF, PPRE2 << 13 | PPRE1 << 10 | HPRE << 4 | SW

;; clock configuration word to be loaded into RCC_BDCR register
;.set   RTCCONF, RTCEN << 15 | RTCSEL << 8 | LSEON

: Bearbeitet durch User
Beitrag #6608058 wurde vom Autor gelöscht.
von J. -. (Gast)


Lesenswert?

In dem Bild siehst Du den Clock Konfigurator
https://i.stack.imgur.com/gfzsT.png
Du siehst auf der linken Seite 'HSI RC' (16 MHz), das ist der interne 
Taktgeber. Und 'HSE', das ist der externe 8MHz-Quarz mit einer 
drangehängten Oszillatorschaltung.
Sowohl HSI als auch HSE können direkt als Systemtakt gewählt werden (am 
'System Clock Mux', oder über die PLL laufen. Wenn über PLL, muß 'System 
Clock Mux' auf PLLCLK eingestellt sein, und mit dem 'PLL Source Mux' 
entscheidet man, ob man die PLL mit dem HSI oder dem HSE füttert.
Die PLL multipliziert einfach Deine Eingangsfrequenz (HSI oder HSE), so 
daß Du eine ganze Bandbreite an Systemfrequenzen wählen kannst. Insofern 
brauchst Du den Quarz nicht, wenn Du HSI wählst, kannst aber trotzdem 
die PLL verwenden.

In Deinem Sourcecode steht
a) .set    PLLSRC, 1                  ; PLL clock source (0 = HSI, 1 = 
HSE)
b) .set    SW,     2              ; clock source (0 = HSI, 1 = HSE, 2 =
PLL)
c) .set    PLLM, 8

Die 3 Einstellungen brauchst Du.

a) bezieht sich dabei auf den 'PLL Source Mux'
b) auf den 'System Clock Mux'
c) auf den Eingangstakt (Quarzfrequenz HSE 8MHz bzw. Oszillator HSI 
16MHz)

PLLM ist auf 8 eingestellt, weil das Discovery einen 8MHz Quarz hat.

Du mußt nur 2 Parameter verändern, wenn Du auf HSI umschalten willst und 
über die PLL gehst:
a) .set    PLLSRC, 0                  ; PLL clock source (0 = HSI, 1 = 
HSE)
c) .set    PLLM, 16

Mit c) teilst Du eingangsseitig nicht mehr durch 8 wie bei HSE, sondern 
durch 16 wie bei HSI. Und mit a) wählst Du HSI aus. b) wird nicht 
geändert, weil der Pfad für HSI und HSE der gleiche ist.

Wenn Du das so machst, müßtest Du ungefähr die gleiche Blinkfrequenz 
sehen, ob HSE oder HSI. Wenn Du mit HSI die doppelte Blinkfrequenz sehen 
möchtest, kannst Du c) auf ".set    PLLM, 8" stehenlassen.

Ich wußte nicht, daß Du keine Entwicklungsumgebung hast bzw. dbzgl. 
unerfahren bist. Und hoffe, Du kannst Deine eigene Codevorlage mit den 
vorhandenen Mitteln und mit den Parameteränderungen compilieren.
Wenn nicht, vielleicht erbarmt sich 'jo mei' auch dazu, einen Code für 
HSI zu schreiben :)

Edit: Ab
;.set   LSE_fitted, 0              ; set to 1 if 32-KHz crystal fitted
bezieht sich Dein Quelltext auf einen anderen Quarz, den 32.768kHz-Quarz 
für die Echtzeituhr. Der Teil spielt für den Blinky keine Rolle.

von Christoph K. (chriskuku)


Lesenswert?

Danke, Jürgen, für die Erläuterungen. Das Clock-Blockschaltbild war mir 
bekannt - es vollständig zu verstehen oder es zu benutzen (CubeMX) ist 
etwas Lernkurve.

Zwei Fragen hätte ich:

Wird der externe, an PH0/PH1 angeschlossene, 8.000 MHz  im HSI Falle 
überhaupt gebraucht?

Was sorgt für die Präzision der intern erzeugten 168MHz (PLL)?

Ich dachte immer, die interne Clock sei (wegen RC) ungenau.

Grüße
Christoph

von J. -. (Gast)


Lesenswert?

Christoph K. schrieb:
> Wird der externe, an PH0/PH1 angeschlossene, 8.000 MHz  im HSI Falle
> überhaupt gebraucht?
Nein.
> Was sorgt für die Präzision der intern erzeugten 168MHz (PLL)?
Nichts. Selbst mit HSE kann es für Ethernetanwendungen zuviel Jitter 
geben.
Mit HSI dürfte die Absolutfrequenz zudem nicht sehr genau 16MHz sein, 
damit auch die PLL-Frequenz nicht genau 168MHz sein.

Mit HSI habe ich nie gearbeitet, weil bei mir auch immer ein UART in 
Aktion ist, und zur Sicherheit möchte ich dessen Baudrate quarzgenau 
einstellen können.

von Christoph K. (chriskuku)


Lesenswert?

Jürgen S. schrieb:
> Christoph K. schrieb:
>> Wird der externe, an PH0/PH1 angeschlossene, 8.000 MHz  im HSI Falle
>> überhaupt gebraucht?
> Nein.
>> Was sorgt für die Präzision der intern erzeugten 168MHz (PLL)?
> Nichts. Selbst mit HSE kann es für Ethernetanwendungen zuviel Jitter
> geben.
> Mit HSI dürfte die Absolutfrequenz zudem nicht sehr genau 16MHz sein,
> damit auch die PLL-Frequenz nicht genau 168MHz sein.
>
> Mit HSI habe ich nie gearbeitet, weil bei mir auch immer ein UART in
> Aktion ist, und zur Sicherheit möchte ich dessen Baudrate quarzgenau
> einstellen können.

Das wundert mich sehr. Wie kriegt man denn dann physikalisch exakte 
Aussagen/Anwendungen hin, wenn die Zeitbasis nicht zuverlässig ist?

Oder kann ich die interne PLL mit dem externen Quarz locken?

von m.n. (Gast)


Lesenswert?

Jürgen S. schrieb:
>> Was sorgt für die Präzision der intern erzeugten 168MHz (PLL)?
> Nichts. Selbst mit HSE kann es für Ethernetanwendungen zuviel Jitter
> geben.

Wie bitte?
Um die PLL-Frequenz instabil zu bekommen, muß man sich schon sehr 
"bemühen". Vielleicht klappt das, wenn man alle Abblock-Cs wegläßt.

Christoph K. schrieb:
> Oder kann ich die interne PLL mit dem externen Quarz locken?

Was denn sonst? Was bedeutet denn PLL? Soll die etwa freilaufend 
agieren?

von J. -. (Gast)


Lesenswert?

m.n. shrieb im Beitrag #6608716:
> Wie bitte?
> Um die PLL-Frequenz instabil zu bekommen, muß man sich schon sehr
> "bemühen". Vielleicht klappt das, wenn man alle Abblock-Cs wegläßt.
Blabber keinen Stuß. Da gabe es schon 2012 immer wieder Probleme.
Beitrag "STM32F207 Ethernet + RMII"
http://lwip.100.n7.nabble.com/Low-Iperf-performance-of-lwip-1-4-1-on-STM32-and-FreeRTOS-td21579.html
https://studio.segger.com/packages/STM32F2xx/CMSIS/Documents/DM00027213.pdf, 
Kapitel 2.8.6
Letzteres ist zwar für den F207, aber es war fraglich, ob der F407 da 
geändert wurde. Folglich hat das überhaupt nichts mit 
Abblockkondensatoren zu tun.
Ich selbst betreibe ein Board mit F4, LAN8720 und RMII mit 150MHz, da 
paßt das mit den 50MHz, die aus der PLL nach Teilen durch 3 
herauskommen. Aber viele benutzen lieber einen separaten Quarz, um nicht 
diese Probleme zu bekommen.

Es empfiehlt sich also, sinnerfassend zu lesen: Wenn ich schreibe 
"Selbst mit HSE kann es für Ethernetanwendungen zuviel Jitter geben", 
dann ist das keine generelle Aussage, sondern das Wörtchen KANN hat hier 
eine einschränkende Bedeutung. Verstanden?

Christoph K. schrieb:
> Das wundert mich sehr. Wie kriegt man denn dann physikalisch exakte
> Aussagen/Anwendungen hin, wenn die Zeitbasis nicht zuverlässig ist?
Gar nicht.

von Christoph K. (chriskuku)


Lesenswert?

m.n. schrieb:

> Christoph K. schrieb:
>> Oder kann ich die interne PLL mit dem externen Quarz locken?
>
> Was denn sonst? Was bedeutet denn PLL? Soll die etwa freilaufend
> agieren?

War ja auch meine ursprüngliche Annahme. Nur wunderte mich jetzt die 
Aussage von Jürgen S., ich könne den Quarz weglassen.

Wenn er aber am PLL Kreis mitwirkt, wieso sehe ich keine Oszillation an 
PH0/PH1?

von Stefan F. (Gast)


Lesenswert?

Christoph K. schrieb:
> Wie kriegt man denn dann physikalisch exakte
> Aussagen/Anwendungen hin, wenn die Zeitbasis nicht zuverlässig ist?

Gar nicht. Deswegen hat der Chip Anschlüsse für einen Quarz.

Es gibt aber Anwendungen, wo die Genauigkeit eines Quarzes nicht 
gebraucht wird.

von m.n. (Gast)


Lesenswert?

Jürgen S. schrieb:
> Letzteres ist zwar für den F207, aber es war fraglich, ob der F407 da
> geändert wurde.

F407 != F207

> Folglich hat das überhaupt nichts mit
> Abblockkondensatoren zu tun.

Es empfiehlt sich also, sinnerfassend zu lesen: Wenn ich schreibe
"Vielleicht klappt das, wenn man alle Abblock-Cs wegläßt.",
dann ist das keine generelle Aussage, sondern das Wörtchen VIELLEICHT 
hat hier eine einschränkende Bedeutung. Verstanden?

Jürgen S. schrieb:
> Ich selbst betreibe ein Board mit F4, LAN8720 und RMII mit 150MHz, da
> paßt das mit den 50MHz, die aus der PLL nach Teilen durch 3
> herauskommen.

Geht doch ! ;-)

von J. -. (Gast)


Lesenswert?

m.n. schrieb:
> Es empfiehlt sich also, sinnerfassend zu lesen: Wenn ich schreibe
> "Vielleicht klappt das, wenn man alle Abblock-Cs wegläßt.",
> dann ist das keine generelle Aussage, sondern das Wörtchen VIELLEICHT
> hat hier eine einschränkende Bedeutung. Verstanden?
Das hättest Du wohl gerne: Der Jitter im F207 (und vielleicht auch F407) 
hat mit der PLL intern zu tun und nichts mit fehlenden oder vorhandenen 
"Abblockkondensatoren". So ein Quatsch.

Christoph K. schrieb:
> War ja auch meine ursprüngliche Annahme. Nur wunderte mich jetzt die
> Aussage von Jürgen S., ich könne den Quarz weglassen.
?
Entweder bist Du ein Troll oder Du hast noch nie was von Fehleranalyse 
gehört. Dazu würde auch passen, "auf Verdacht" den F103 auszulöten. Was 
soll das bezwecken?

Ich habe überhaupt kein Interesse daran, daß Du mit dem HSI arbeitest. 
Eine Deiner Feststellungen war, daß Du ein Programm auf den F407 flashen 
kannst, das Programm dann aber nicht läuft. Aus diesem Grund ist es 
sinnvoll, zu testen, ob es an der Quarzbeschaltung liegt. Dazu ist ein 
Blinky ausreichend.
Denn: Falls der Quarz oder Deine externe Clockerzeugung/-leitungsführung 
einen Schaden hat, würde das erklären, weshalb bei dem F407, den Du mit 
5V malträtiert hattest, und bei dem neuen F407, denn Du nun draufgelötet 
hast, das Programm nicht läuft. Mit dem HSI müßte das dann gehen.
Das ist alles. Einen Blinky zu programmieren, ist weniger Aufwand, als 
einen F103 abzulöten. Keiner will, daß Du auf den Quarz verzichtest. 
Warum Du zwanghaft noch immer an den PH0/PH1 rummessen willst, anstatt 
jeweils kurz einen Blinky mit HSI und einen Blinky mit HSE 
auszuprobieren, bleibt Dein Geheimnis.
> Wenn er aber am PLL Kreis mitwirkt, wieso sehe ich keine Oszillation an
> PH0/PH1?
OMG. Was hat die PLL mit den Pins PH0/PH1 zu tun? Man sieht doch am 
Clockgenerator, daß da nichts auf PH0/PH1 zurückgeführt wird.

von Christoph K. (chriskuku)


Angehängte Dateien:

Lesenswert?

Jürgen S. schrieb:

>> Wenn er aber am PLL Kreis mitwirkt, wieso sehe ich keine Oszillation an
>> PH0/PH1?
> OMG. Was hat die PLL mit den Pins PH0/PH1 zu tun? Man sieht doch am
> Clockgenerator, daß da nichts auf PH0/PH1 zurückgeführt wird.

Ich meinte nicht PH0/PH1 auf der Steckerleiste, sondern PH0/PH1 am 
Chip(12/13). Wenn PLL mit Source=HSE arbeitet, dachte ich, da eine 
Oszillation sehen zu müssen, aber wahrscheinlich fließt nur ein kleiner 
Strom quer durch den Quarz und ich sehe keinen Spannungshub.

Habe jetzt inzwischen eine Blinky-App mit STM32CubeIDE laufen. Clock so 
eingestellt wie Bild. Sie läuft im fabrikneuen, unmodifizierten Board, 
aber nicht in Boards B und C.

Zur Erinnerung:
Board A: nagelneues Board (MB997-D01, blauer Lötstopp)
Board B: mein repariertes Board, wo Blinky-App.HEX aber nicht 
funktioniert
Board C: "heiliges" Board mit der funktionierenden Anwendung

Also Fazit im Moment:

Board B: nach wie vor - auch nach Chipwechsel defekt.
Board C: läuft nicht mit dem Blinky_HSE_PLL_168, läuft aber mit der 
Anwendung.


Kann man STM32CubeIDE-Projekte hier posten oder exportieren?

von Stefan F. (Gast)


Lesenswert?

Christoph K. schrieb:
> Wenn PLL mit Source=HSE arbeitet, dachte ich, da eine
> Oszillation sehen zu müssen, aber wahrscheinlich fließt nur ein kleiner
> Strom quer durch den Quarz und ich sehe keinen Spannungshub.

Stefan ⛄ F. schrieb zuvor im Beitrag #6606011:
> Bei AVR konnte ich mit meinem Oszilloskop den Takt sichtbar machen, aber
> nur an XTAL2 (das würde PH1 entsprechen) und nur wenn der Tastkopf auf
> 1/10 eingestellt ist. Ansonsten belastet wer den Oszillator zu stark.

Wollte mir ja keiner glauben. Stattdessen wurde ich blöd angemacht, hier 
meine Erfahrung mit AVR einfließen zu lassen.

von Johannes S. (Gast)


Lesenswert?

Christoph K. schrieb:
> Clock so
> eingestellt wie Bild.

was man auf dem Bild leider nicht sieht, ist die Einstellung ob xtal 
oder externer Clock. Das wird in Pinout Config // System Core // RCC 
ausgewählt.
Wenn hier Bypass eingestellt ist, dann muss ein externer Clock kommen, 
auf den Nucleos vom F103 wenn die Brücken original sind. Wenn die Brücke 
auf ist, dann würde das Blinky bei den modifizierten Boards nicht 
laufen.
Zum Gegentest das Blinky mit HSI bauen, das sollte dann auch bei den 
modifizierten Boards laufen.

von m.n. (Gast)


Lesenswert?

Jürgen S. schrieb:
> Das hättest Du wohl gerne: Der Jitter im F207 (und vielleicht auch F407)
> hat mit der PLL intern zu tun und nichts mit fehlenden oder vorhandenen
> "Abblockkondensatoren". So ein Quatsch.

Es ist etwas lästig, aber damit sich hier keine Gerüchte verbreiten, muß 
ich Dir erneut widersprechen.
Ein Blick ins Datenblatt zeigt, daß die interne PLL beim F407 von VDDA 
und VSSA versorgt wird. Sofern diese Spannung nicht sehr "sauber" ist, 
wird zwangsläufig Jitter in der PLL-Regelung entstehen.
Für eine stabile PLL sind daher gerade an diesen Versorgungspins 
hinreichend Abblockkondensatoren vorzusehen.

von Christoph K. (chriskuku)


Lesenswert?

Johannes S. schrieb:
> Christoph K. schrieb:
>> Clock so
>> eingestellt wie Bild.
>
> was man auf dem Bild leider nicht sieht, ist die Einstellung ob xtal
> oder externer Clock. Das wird in Pinout Config // System Core // RCC
> ausgewählt.
> Wenn hier Bypass eingestellt ist, dann muss ein externer Clock kommen,
> auf den Nucleos vom F103 wenn die Brücken original sind. Wenn die Brücke
> auf ist, dann würde das Blinky bei den modifizierten Boards nicht
> laufen.
> Zum Gegentest das Blinky mit HSI bauen, das sollte dann auch bei den
> modifizierten Boards laufen.

Es ist Crystal/Ceramic Resonator eingestellt, also nicht Bypass. Also 
müßte das Blinky_HSE_PLL_168 eigentlich laufen. R68 ist entfernt, es 
kommt also keine Clock vom MCO an.

von J. -. (Gast)


Lesenswert?

m.n. schrieb:
> Es ist etwas lästig, aber damit sich hier keine Gerüchte verbreiten, muß
> ich Dir erneut widersprechen.
Wenn Du Dich nicht entblöden kannst, ist das Dein Problem. Du willst 
also behaupten, daß man die PLL bei Vorhandensein der 
Abblockkondenstoren, die im Datenblatt angegeben sind, für Ethernet in 
jedem Fall verwenden kann?

Dann täuschst Du Dich und andere, denn Du verbreitest Quatsch. Erstens 
hängt es davon ab, wie fehlertolerant der PHY hinsichtlich der clock 
(und hier war der DP83848 etwas zickig) ist, und zweitens, ob der PHY in 
RMII oder MII betrieben wird. RMII ist bezüglich der clock anfälliger. 
All das kann man nachlesen. Es gibt Leute, die gefiltert und abgeblockt 
haben bis zum Abwinken, die ein gutes Layout hatten, und trotzdem war 
der Jitter zu hoch.

Deine Wortklauberei, Ehrenkäsigkeit und Rechthaberei kannst Du Dir 
übrigens dorthin stecken, wo es am dunkelsten ist. Du hast es nicht 
verkraftet, daß Dein Hinweis, daß der F407 die Clock im fabrikneuen 
Board vom MCO des F103 bekommt, so notwendig war wie ein Kropf -> "Herr 
Lehrer, ich weiß was". Doof, nichts dazugelernt und das wenige 
vergessen, sagt der Lehrer zu sowas.

Johannes S. schrieb:
> Zum Gegentest das Blinky mit HSI bauen, das sollte dann auch bei den
> modifizierten Boards laufen.
Vergiss es. Das macht der nicht, denn "es müßte ja mit dem Resonator 
laufen."

Zum Glück kann man diesen bescheuerten Thread einfach links liegen 
lassen :)

von Christoph K. (chriskuku)



Lesenswert?

Jürgen S. schrieb:

>
> Johannes S. schrieb:
>> Zum Gegentest das Blinky mit HSI bauen, das sollte dann auch bei den
>> modifizierten Boards laufen.
> Vergiss es. Das macht der nicht, denn "es müßte ja mit dem Resonator
> laufen."

Das würde ich gerne machen, aber dazu müßte ich verstehen, warum die 
gepostete Einstellung nicht funktionieren kann. Es ist doch eine gültige 
Clock-Einstellung. PLL-Clocksource mit Hilfe des Quarzes an PH0/PH1, 
HSE, so, wie die Einstellung von Board C (Anwendung), die ich ja auch in 
Assembler gepostet hatte.

Grüße
Christoph

von Johannes S. (Gast)


Lesenswert?

Christoph K. schrieb:
> Das würde ich gerne machen, aber dazu müßte ich verstehen, warum die
> gepostete Einstellung nicht funktionieren kann.

die gepostete Einstellung ist richtig, vorausgesetzt der µC ist ok und 
es ist ein Quarz angeschlossen. Quarz ist nach deiner Beschreibung ja 
vorhanden.
Für HSI einfach den PLL Source Mux auf HSI stellen und Teiler M von 8 
auf 4 runtersetzen.

von Christoph K. (chriskuku)


Angehängte Dateien:

Lesenswert?

Nachtrag: habe jetzt HSI programmiert(Siehe Bild), Led blinkt auch 
nicht.
Und blinkt auch nicht im Board A (Fabrikeinstellungen).

1
void SystemClock_Config(void)
2
{
3
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
4
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
5
6
  /** Configure the main internal regulator output voltage
7
  */
8
  __HAL_RCC_PWR_CLK_ENABLE();
9
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
10
  /** Initializes the RCC Oscillators according to the specified parameters
11
  * in the RCC_OscInitTypeDef structure.
12
  */
13
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE;
14
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
15
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
16
  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
17
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
18
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
19
  RCC_OscInitStruct.PLL.PLLM = 8;
20
  RCC_OscInitStruct.PLL.PLLN = 336;
21
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
22
  RCC_OscInitStruct.PLL.PLLQ = 4;
23
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
24
  {
25
    Error_Handler();
26
  }
27
  /** Initializes the CPU, AHB and APB buses clocks
28
  */
29
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
30
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
31
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
32
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
33
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
34
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV4;
35
36
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
37
  {
38
    Error_Handler();
39
  }
40
  HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_PLLCLK, RCC_MCODIV_1);
41
}


(Hatte Beitrag von Johannes noch nicht gelesen, als ich das postete)

: Bearbeitet durch User
von Christoph K. (chriskuku)



Lesenswert?

So? Was bringt da der Teiler M, wenn nicht rot markierte Felder?


Sorry, meine Posts hinsichtlich nicht funktionierenden Blinkens bitte 
ignorieren. Ich hatte beim Projektkopieren übersehen, daß der User-Code 
im main.c vom IDE gelöscht wurde.

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

Sorry, ist noch zu früh zum Rechnen. Doppelte f bedeutet natürlich auch 
doppelt so großer Teiler, also 16 wenn es erlaubt ist.

von Christoph K. (chriskuku)



Lesenswert?

Stand im Moment der (obige Clock-Konfiguration):
Board A (fabrikneu, unmodifiziert): Blinky läuft
Board B (vermeintlich repariert und modifiziert): Led geht an und bleibt 
an. nach Reset aus.
Board C (intakt und modifiziert): gleiches Verhalten wie B

(habe R42 bei den modifizierten Boards wieder eingelötet, damit ich was 
"sehe") in der Anwendung hängt da auch eine LED dran). Ich betreibe die 
Boards aber im Moment "in der Luft", also nicht in die Schaltung 
eingesteckt.

Übrigens, interessante Beobachtung: Wenn ich ins Programm hineinsteppe, 
crasht es im HAL_DELAY(500). (s.Bild)

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

dann würde ich sagen liegt es am schon oft diskutierten Boot0, SB18. 
Wenn der offen ist, dann läuft der nach dem Start in den Bootloader und 
nicht in dein Blinky.

von Christoph K. (chriskuku)


Lesenswert?

Johannes S. schrieb:
> dann würde ich sagen liegt es am schon oft diskutierten Boot0, SB18.
> Wenn der offen ist, dann läuft der nach dem Start in den Bootloader und
> nicht in dein Blinky.

Steppt aber ins main.c bis hinter das 1. Setzen der LED und verschwindet 
dann im HAL_DELAY.

von Harry L. (mysth)


Lesenswert?

Ich weis ja nicht, ob das bei den Discery-Boards anders gelöst ist 
(würde mich aber wundern), aber bei allen mir bekannten Nucleo-Boards 
haben die MCU keinen eigenen Quarz, und beziehen ihren Takt (i.d.R. 
8MHz) aus dem Debugger.

HSE muß in dem Fall also auf "Bypass" gestellt werden.

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

das ist bei den Discos anders, die haben ihren eigenen Quarz, wurde 
schon geklärt.

von Stefan F. (Gast)


Lesenswert?

Faszinierend finde ich, dass hier immer noch modifizierte Boards 
diskutiert wird, ohne die Modifikationen zu kennen. Das Thema läuft ja 
schon länger, nicht erst seit 26. Februar.

Da muss ich mich schon fragen, ob das ganze mutwillige Trollerei ist 
oder ob hier jemand wirklich ein Problem lösen will.

von Christoph K. (chriskuku)


Lesenswert?

Stefan ⛄ F. schrieb:
> Faszinierend finde ich, dass hier immer noch modifizierte Boards
> diskutiert wird, ohne die Modifikationen zu kennen. Das Thema läuft ja
> schon länger, nicht erst seit 26. Februar.
>
> Da muss ich mich schon fragen, ob das ganze mutwillige Trollerei ist
> oder ob hier jemand wirklich ein Problem lösen will.

Ich habe die Modifikationen hier in diesem Thread schon lange gepostet.
(3.3.2021, 17.17). Und auch in dem anderen Thread hatte ich sie 
gepostet.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Christoph K. schrieb:
> Ich habe die Modifikationen hier in diesem Thread schon lange gepostet.

In kaum nachvollziehbarer Form. Vor allem weil du die ganze Zeit vom HSE 
Oszillator und Quarz geschrieben hast, ohne einen Quarz eingesetzt zu 
haben. Da passen schon deine eigenen Infos nicht zusammen.

Ein Schaltplan wäre hier wesentlich hilfreicher.

von Christoph K. (chriskuku)


Lesenswert?

Stefan ⛄ F. schrieb:
> Christoph K. schrieb:
>> Ich habe die Modifikationen hier in diesem Thread schon lange gepostet.
>
> In kaum nachvollziehbarer Form. Vor allem weil du die ganze Zeit vom HSE
> Oszillator und Quarz geschrieben hast, ohne einen Quarz eingesetzt zu
> haben. Da passen schon deine eigenen Infos nicht zusammen.
>
> Ein Schaltplan wäre hier wesentlich hilfreicher.

Schaltplan ist der aus dem ST UM1472 mit den beschriebenen Mods.
Wieso nicht nachvollziehbar? Ich habe die Clockkonfiguration der 
Anwendung gepostet. Die ist HSE/PLL. Dann sagt mir jemand, er sage 
nichts, bevor ich nicht ein Blinky mit HSI zum Laufen gebracht habe. Da 
sind wir jetzt.

von Stefan F. (Gast)


Lesenswert?

Christoph K. schrieb:
> Schaltplan ist der aus dem ST UM1472 mit den beschriebenen Mods.

Soll ich mit den jetzt ausdrucken und dann die Textuellen Anmerkungen 
einzeichnen? Was mit dem Quarz ist (um den sich hier alles dreht), weiß 
ich dann immer noch nicht.

Abgesehen davon: Das ist deine Hausaufgabe.

> Ich habe die Clockkonfiguration der
> Anwendung gepostet. Die ist HSE/PLL.

Ohne Quarz, ohne Bypass -> Kann nicht funktionieren. Gehen sie zurück 
aus Los.

von Christoph K. (chriskuku)


Lesenswert?

Johannes S. schrieb:
> dann würde ich sagen liegt es am schon oft diskutierten Boot0, SB18.
> Wenn der offen ist, dann läuft der nach dem Start in den Bootloader und
> nicht in dein Blinky.

Danke, das war's tatsächlich, daß jetzt der Blinky nicht lief.
Habe BOOT0 auf GND gelegt und das Blinky läuft jetzt.

Stand der: Board B (das mit dem ausgewechselten Chip) läuft mit 
HSI-Blinky.

von Johannes S. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ohne Quarz -> Kann nicht funktionieren.

du nervst und müllst den Thread voll. Das Disco1 hat einen Quarz. Und 
trotzdem wird gerade erstmal HSI getestet.

Habe hier gerade an einem F411 Blackpill getestet, wenn ich Boot0 auf 
high halte kann ich auch nicht debuggen.
Das Disco hat den Boot0 rausgeführt, Brücke nach GND dran und probieren, 
nicht wieder neuen Nebenkriegsschauplatz aufmachen.
-> ok, geklärt.

von Johannes S. (Gast)


Lesenswert?

nächster Schritt wäre dann wieder mit HSE (evtl. erst ohne PLL). Aber 
vermutlich war dann auch hier Boot0 das 'Problem'.

von Christoph K. (chriskuku)


Lesenswert?

Johannes S. schrieb:
> Stefan ⛄ F. schrieb:
>> Ohne Quarz -> Kann nicht funktionieren.
>
> du nervst und müllst den Thread voll. Das Disco1 hat einen Quarz. Und
> trotzdem wird gerade erstmal HSI getestet.
>

Sag' mal, liest Du eigentlich nicht?
Ausgangpunkt dieses Threads war doch der, daß ich ein Board repariert 
habe,
das aber jetzt nicht so läuft, wie es soll.
Da es auf HSE/PLL programmiert ist, war die Vermutung, daß was mit dem 
Quarz sein könne oder mit der Schaltung in dem Bereich.
Es sollte also erst einmal ein Blinky mit HSI zum Laufen gebracht 
werden.

Das ist jetzt - mit ein paar Hindernissen - erreicht. Jetzt kann ich 
mich wieder der Frage zuwenden, ob mein repariertes Boar vielleicht noch 
einen Fehler hat, der bewirkt, daß der UART beim Starten der Anwendung 
nichts ausgibt, während das Board C (heiliges Anwendungsboard) 
diesbezüglich funktioniert.

So, da sind wir jetzt.

: Bearbeitet durch User
von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Johannes S. schrieb:
> Das Disco1 hat einen Quarz.

Kritik angenommen, ich habe es mit den Nucleo Board verwechselt.

von Christoph K. (chriskuku)


Lesenswert?

Christoph K. schrieb:
> Johannes S. schrieb:
>> Stefan ⛄ F. schrieb:
>>> Ohne Quarz -> Kann nicht funktionieren.
>>
>> du nervst und müllst den Thread voll. Das Disco1 hat einen Quarz. Und
>> trotzdem wird gerade erstmal HSI getestet.

> Sag' mal, liest Du eigentlich nicht?


Hatte den Autor verwechselt. Sorry.


HSE 8MHz (no PLL) -> Blinky läuft

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

dann würde ich den verdächtigen USART in das Blinky einbauen und da 
etwas ausgeben. Geht für einen quick&dirty Test auch einfach mit CubeMX.
Beim Umlöten der Chips könnte da auch eine Verbindung Chip-Header kaputt 
sein.

von Christoph K. (chriskuku)


Lesenswert?

8MHz HSE-PLL läuft auch. Mache jetzt den UART Test.

: Bearbeitet durch User
von Christoph K. (chriskuku)


Lesenswert?

Christoph K. schrieb:
> 8MHz HSE-PLL läuft auch. Mache jetzt den UART Test.
UART3 Tx läuft- Kann "hello world" rausschreiben. Muß jetzt sehen, ob Rx 
auch funktioniert, denn die Anwedungssoftware wartet erst auf ein 
Zeichen, bevor sie was ausgibt.

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.