Forum: Mikrocontroller und Digitale Elektronik STM32F407 - DFU USB BootMode


von WehOhWeh (Gast)


Lesenswert?

Hallo,

ich habe eine Frage zum USB DFU Bootloader.

Wir haben hier zwei Platinen mit STM32F407
Eine hat einen Oszillaor, 4MHz, die andere einen Quarz (12MHz). Die mit 
dem Quarz würde ich gerne über USB DFU programmieren.

Bei der mit 4MHz funktioniert USB DFU anscheinend, bei der mit dem 12MHz 
Quarz nicht. Er schafft die enumerierung nicht: "43 
(CM_PROB_FAILED_POST_START)" von Windows.

Neben dem Reference Manual habe ich da nachgesehen:
http://www.st.com/web/en/resource/technical/document/application_note/CD00264379.pdf

Da drin steht das:
"For Connectivity line USB DFU bootloader, the device first tries the 25 
MHz configuration, then, if it fails, the 14.7456 MHz configuration, and 
finally, if it fails, the 8 MHz configuration."

Nach dem dürfte das auch bei dem 4MHz nicht gehen.

Kennt jemand eine Quelle, wo beschrieben steht, welche Anforderungen an 
die Taktquelle der Bootloaders für USB besteht? Bei einem Quarz?
Gibt es außer den Pins Boot0 / Boot1 = LOW weitere Voraussetzungen für 
USB DFU?
Wäre super, wenn mir jemand einen Tipp geben könnte!

von Gerd E. (robberknight)


Lesenswert?

WehOhWeh schrieb:
> Neben dem Reference Manual habe ich da nachgesehen:
> 
http://www.st.com/web/en/resource/technical/document/application_note/CD00264379.pdf
>
> Da drin steht das:
> "For Connectivity line USB DFU bootloader, the device first tries the 25
> MHz configuration, then, if it fails, the 14.7456 MHz configuration, and
> finally, if it fails, the 8 MHz configuration."

Ich glaube die Info ist etwas älter und passt nicht auf Deinen µC.

Schau mal in die AN2606, die erklärt die Bootloader für jede einzelne 
Controllerserie.

Für die STM32F4-Serie schreiben die, daß der Controller alles von 4 bis 
26MHz in geraden MHz-Schritten akzeptiert.

Warum allerdings Dein 12MHz-Quarz nicht geht ist mir nicht ganz klar. 
Evtl. der Quarz defekt? Oder passen vielleicht dessen Kondensatoren 
nicht so daß er zu stark von 12MHz abweicht?

Das solltest Du mal genauer nachmessen. Aber nicht mit dem Oszi an die 
Quarz-Pins gehen, sondern einen Taktausgang vom Controller erzeugen 
lassen und den nachmessen.

von WehOhWeh (Gast)


Lesenswert?

Danke für den Tipp und vor allem für die Appnote!

Jetzt kenne ich das Problem:

Die Schaltung ist für USB-Konfiguration ungeeignet, weil VBUS nicht 
verdrahtet ist. Der Bootloader erkennt die Verbindung nicht und schaltet 
den Quarz nicht ein.
siehe AN2606 S93

Naja, es gibt andere Möglichkeiten zum Booten. Leider sind die 
langsamer.

von Micha (Gast)


Lesenswert?

WehOhWeh schrieb:
> Die Schaltung ist für USB-Konfiguration ungeeignet, weil VBUS nicht
> verdrahtet ist. Der Bootloader erkennt die Verbindung nicht und schaltet
> den Quarz nicht ein.
> siehe AN2606 S93

Aber was hindert dich daran das Programm entsprechend zu ändern? Die PLL 
kann ja unabhängig von allem anderen eingestellt werden. Das ändert 
natürlich nichts am Fehlen von VBUS...

von WehOhWeh (Gast)


Lesenswert?

Micha schrieb:
> Aber was hindert dich daran das Programm entsprechend zu ändern? Die PLL
> kann ja unabhängig von allem anderen eingestellt werden. Das ändert
> natürlich nichts am Fehlen von VBUS...

Das Problem ist, dass der Bootloader des STM32 bei der Produktion durch 
ST programmiert wird. D.h. es geht um einen unprogrammierten Prozessor 
von der Stange und den integrierten Bootloader von ST.
Und es geht um die Programmierung in der Produktion.

Aber die Programmierung ist ja über viele Quellen möglich, daher bringt 
mich das jetzt nicht direkt um. USB wäre eben nur elegant gewesen, weil 
das ohnehin draufhängen muss.

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.