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


von Mampf F. (mampf) Benutzerseite


Angehängte Dateien:

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)


Lesenswert?

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

von STM32 Experte (Gast)


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. (Gast)


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)


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


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


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)


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)


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. (Gast)


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)


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


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 :)

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.