Forum: Mikrocontroller und Digitale Elektronik STM32 USB Bootloader Pull-Up Problem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Mampf F. (mampf) Benutzerseite


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

in einem Projekt wollte ich den STM32F302 einsetzen, da er einen 
internen USB-Bootloader hat (im Gegensatz zum F103).

In der Application Note AN2606 heißt es, dass an USB_DP ein Pull-Up 
angeschlossen sein muss.

Bei mir ist dieser vom µC schaltbar (ebenso wie bei vielen anderen 
Projekten auch), aber der Bootloader wird den nicht einschalten, da er 
ihn nicht kennt.

Die damaligen Atmel SAM7Sxxx benutzten dafür einen festen Pin, aber STM 
hat das wohl nicht vorgesehen?

Hat jemand Ideen?

Viele Grüße,
Mampf

von A. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Da steht doch, dass du einen externen Pullup anbringen musst, ist das 
nicht verständlich genug?

von STM32 Experte (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Warum wegen des internen Bootloaders einen anderen Controller benutzen? 
Kauf Dir ein beliebiges Nucleo-Board für 20 Euro und benutze den darauf 
befindlichen ST-Link zum programmieren ALLER STM32 Controller.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Brauchst du den Widerstand überhaupt schaltbar?
Ich verbinde ihn meisten fest mit VCC, dann muss ich natürlich das USB 
kabel kurz abstecken, um die Schnittstelle auf PC Seite neu zu 
initialisieren.

Oder ändere die Schaltung so, dass der Widerstand initial (bei 
hochohmigem I/O Pin) eingeschaltet ist und von der Software 
ausgeschaltet werden kann. Ein simpler Pull-Down Widerstand reicht dazu 
eventuell schon (ich kenne deine konkrete Schaltung nicht).

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Man kann auch den Widerstand mit dem Pin abschalten anstatt zuschalten.
Wie z.B.

http://stm32circle.com/resources/download.php?schema_stm32_primer2_1_2.PDF

Seite 7

von Mampf F. (mampf) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
STM32 Experte schrieb im Beitrag #5461860:
> Warum wegen des internen Bootloaders einen anderen Controller
> benutzen?
> Kauf Dir ein beliebiges Nucleo-Board für 20 Euro und benutze den darauf
> befindlichen ST-Link zum programmieren ALLER STM32 Controller.

Es ist geplant, dass das Board nicht von mir sondern vom "Endbenutzer" 
geflasht werden kann.

Ich könnte einen eigenen Bootloader in das Board flashen, das möchte ich 
mir aber sparen.

Die STM32s haben einen USB Bootloader und der soll (gefälligst^^) auch 
funktionieren.


Gerade gesehen ... WTF: die F0, F1 und F4 brauchen keinen externen 
Pull-Up ... Nur die F3. Unglaublich ...

von Mampf F. (mampf) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Stefanus F. schrieb:
> Brauchst du den Widerstand überhaupt schaltbar?
> Ich verbinde ihn meisten fest mit VCC, dann muss ich natürlich das USB
> kabel kurz abstecken, um die Schnittstelle auf PC Seite neu zu
> initialisieren.

Beim Debuggen ist das echt blöd, wenn der Pull-Up nicht richtig 
geschalten wird.

Aber stimmt,  ich könnte für die maschinell-bestückte Version einfach 
die Teile zum Schalten weglassen und einen festen 1,5k PUP bestücken 
lassen.

Zum Entwickeln, würde ich die paar Teile noch drauflöten und den PUP 
entfernen.

> Oder ändere die Schaltung so, dass der Widerstand initial (bei
> hochohmigem I/O Pin) eingeschaltet ist und von der Software
> ausgeschaltet werden kann. Ein simpler Pull-Down Widerstand reicht dazu
> eventuell schon (ich kenne deine konkrete Schaltung nicht).

Das ist dann nicht mehr USB-konform :)

von geier99 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mampf F. schrieb:
> Gerade gesehen ... WTF: die F0, F1 und F4 brauchen keinen externen

Zur Info, z.B.:
STM32F105 - braucht keinen externen Widerstand
STM32F103 - braucht einen externen Widerstand

von Dr. Sommer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mampf F. schrieb:
> Gerade gesehen ... WTF: die F0, F1 und F4 brauchen keinen externen
> Pull-Up ... Nur die F3. Unglaublich ...

Das liegt am verwendeten USB-Block. Die F103 nutzen die simple "USB 
Device"-Peripherie, welche bei den älteren Controllern keinen Pull-Up 
hat (bei einigen neueren aber schon, iirc STM32L0/1). Die größeren 
Controller mit der "OTG_FS/HS"-Peripherie (F105,F4,...) haben immer 
einen eingebauten Widerstand.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
> die F0, F1 und F4 brauchen keinen externen Pull-Up

Genau genommen "brauchen" die Mikrocontroller den alle nicht, aber dein 
PC. Damit erkennt der PC, dass ein Gerät angesteckt wurde.

> Aber stimmt, ich könnte für die maschinell-bestückte Version einfach
> die Teile zum Schalten weglassen und einen festen 1,5k PUP bestücken
> lassen.

Oder einen Jumper parallel zum Transistor schalten, oder einen Pull-Down 
Widerstand hinzufügen, der den Transistor einschaltet, solange der I/O 
Pin hochohmig ist.

Jumper finde ich am besten, denn damit kann man den Bootloader bei 
Nichtgebrauch blockieren. Ist sicherheitstechnisch bestimmt keine 
schlechte Idee.

von Johnny B. (johnnyb)


Bewertung
0 lesenswert
nicht lesenswert
Stefanus F. schrieb:
>> die F0, F1 und F4 brauchen keinen externen Pull-Up
>
> Genau genommen "brauchen" die Mikrocontroller den alle nicht, aber dein
> PC. Damit erkennt der PC, dass ein Gerät angesteckt wurde.

Ja genau so ist es.
Nebst Plug&Play dient er auch noch dazu dem PC mitzuteilen, ob es sich 
um ein Low- oder Full-Speed USB Gerät handelt.
Hängt der Pull-Up an D+ sagt man dem Host, man ist ein Full-Speed Gerät 
und hängt man ihn an D-, dann ist man ein Low-Speed Gerät.

von Mampf F. (mampf) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Johnny B. schrieb:
> Stefanus F. schrieb:
>>> die F0, F1 und F4 brauchen keinen externen Pull-Up
>>
>> Genau genommen "brauchen" die Mikrocontroller den alle nicht, aber dein
>> PC. Damit erkennt der PC, dass ein Gerät angesteckt wurde.
>
> Ja genau so ist es.
> Nebst Plug&Play dient er auch noch dazu dem PC mitzuteilen, ob es sich
> um ein Low- oder Full-Speed USB Gerät handelt.
> Hängt der Pull-Up an D+ sagt man dem Host, man ist ein Full-Speed Gerät
> und hängt man ihn an D-, dann ist man ein Low-Speed Gerät.

Hmm ja, das ist mir bekannt :)

Ohne PullUp gibt es keine Enumerierung :)

Aber ich denke, ich behalte den F302, da er Preislich in etwa so teuer 
ist wie der F103 aber einen USB-Bootloader hat und verwende den 
schaltbaren PUP nur für Entwicklungsarbeiten.

Und ansonsten einen festen PUP.

Denke, damit kann ich gut leben :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.