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
Da steht doch, dass du einen externen Pullup anbringen musst, ist das nicht verständlich genug?
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.
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).
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
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 ...
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 :)
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
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.
> 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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.