Forum: Mikrocontroller und Digitale Elektronik STM32F207ZGT und DFU


von Thomas W. (thomas100)


Lesenswert?

Hallo zusammen,

ich bin gerade am entwickeln eines Boards für einen STM32F207ZGT.
Die Firmware soll per DFU auf das Board gebracht werden.

Mir ist jetzt eine Sache noch nicht klar beim Anschluss des 1.5k Pull-Up 
an D+.

Laut AN4879 von ST ist der Pull-Up erst nach erkennen von VBus (an A9) 
einzuschalten, um die Enumeration am Host zu starten.
Das kann ich in der SW problemlos erkennen.

Aber wer handelt mir das im DFU-Bootloader?
Der Bootloader? Wenn ja, welcher Pin ist dafür vorgesehen?

Der ST-Link-Adapter nutzt VBUS, um den Pull-Up über einen Transisor an 
3.3V zu schalten.

Was ich möchte:
Ähnlich dem ST-Link-Adapter den USB als VCP benutzen und per Kommando in 
den DFU-Modus wechseln.
Dort dann das Firmwareupdate machen und wieder in die Applikation 
wechseln, ohne den USB-Stecker ziehen zu müssen.

Danke für eure Antworten.

VG
Thomas

von Stefan F. (Gast)


Lesenswert?

Du könntest das so machen, dass der Pull-Up Widerstand per default 
eingeschaltet ist und durch dein eigenes Programm kurz unterbrochen 
werden kann, damit der PC das USB Gerät neu erkennt.

Ich habe irgendwo mal gelesen, dass man den Pull-Up Widerstand auch 
einfach fest mit 3,3V verbinden kann und die neue Erkennung dadurch 
auslöst, dass man den I/O Pin kurz als Ausgang mit LOW Pegel konfiguert. 
Quick and dirty.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

"Du koenntest" Und "ich habe irgendwo gelesen" ist doch nur wilde 
Raterei.

RM0033 sagt fuer den STM32F20x:
· integrated ID pull-up resistor used to sample the ID line for A/B 
device identification.
· DP/DM integrated pull-up and pull-down resistors controlled by the 
OTG_FS core
  depending on the current role of the device. As a peripheral, it 
enables the DP pull-up resistor to signal full-speed peripheral 
connections as soon as VBUS is sensed to be  a valid level (B-session 
valid). In host mode, pull-down resistors are enabled on both  DP/DM. 
Pull-up and pull-down resistors are dynamically switched when the 
device's  role is changed via the host negotiation protocol (HNP).

Und AN2606 sagt fuer STM32F2xxxx c Bootloader V3.x:

USB_DP pin  Input/Output PA12: USB DP line
            No external Pull-up resistor is required

von Stefan F. (Gast)


Lesenswert?

Ich habe gar nicht ins Datemnblatt geschaut. Dachte mir: Wenn der TO 
einen externen Pull-Up verwenden will, dann muss das wohl nötig sein. 
Bei einigen STM32 Modellen ist das ja auch so.

von Thomas W. (thomas100)


Angehängte Dateien:

Lesenswert?

Stefan ⛄ F. schrieb:
> Ich habe irgendwo mal gelesen, dass man den Pull-Up Widerstand auch
> einfach fest mit 3,3V verbinden kann und die neue Erkennung dadurch
> auslöst, dass man den I/O Pin kurz als Ausgang mit LOW Pegel konfiguert.
> Quick and dirty.

Das dürfte dann das sein, was ST beim ST-Link macht.
Per VBUS und Transistor auf 3.3V schalten und über den Pin die Erkennung 
machen und bei Bedarf die Enumeration starten.

von temp (Gast)


Lesenswert?

Ich mache das immer so, dass ich noch vor main() den Pin als OpenDrain 
definiere und auf Low ziehe. Da kann man dann auch im Debugmodus starten 
mit break in main() ohne dass sich gleich der Rechner verschluckt. Erst 
wenn der Pin später im Programm umkonfiguriert wird beginnt die 
Enumeration. Der Widerstand ist fest an 3,3V wie bei den BluePills u.ä. 
Das hat auch den Vorteil, dass auch sehr langsame Konfigurationsorgien 
laufen können und die USB Enumeration erst danach losgeht.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Zu "Du koenntest" und "ich habe irgendwo gelesen" kommt jetzt auch noch 
"Ich mache das immer so". Argh! F2 OTG != F1 USBFS.

von Stefan F. (Gast)


Lesenswert?

Uwe B. schrieb:
> Argh!

Ja ist gut, kriege dich wieder ein. Wenn du mich wirklich auslachen 
willst, dann komme vorbei und mache das vor meiner Haustüre.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Das soll kein auslachen sein, sondern ein Hinweis, moeglichst fundiert 
zu antworten. Bei manchen Problemen, zu denen man keine Doku im Web 
findet, koennen solche auch Ratschlaege helfen, auf die Spur zu kommen, 
aber hier leiten sie doc h nur in die Irre. Und fuer die BMP Probe mit 
dem F103 wird es so gemacht, wie Stefan es beschreibt.

@Thomas W. : Warum jetzt noch ein neues Boarddesign mit dem uralten F2? 
So preissensitive?

von Thomas W. (thomas100)


Lesenswert?

Uwe B. schrieb:
> "Du koenntest" Und "ich habe irgendwo gelesen" ist doch nur wilde
> Raterei.
>
> RM0033 sagt fuer den STM32F20x:
> · integrated ID pull-up resistor used to sample the ID line for A/B
> device identification.
> · DP/DM integrated pull-up and pull-down resistors controlled by the
> OTG_FS core
>   depending on the current role of the device. As a peripheral, it
> enables the DP pull-up resistor to signal full-speed peripheral
> connections as soon as VBUS is sensed to be  a valid level (B-session
> valid). In host mode, pull-down resistors are enabled on both  DP/DM.
> Pull-up and pull-down resistors are dynamically switched when the
> device's  role is changed via the host negotiation protocol (HNP).
>
> Und AN2606 sagt fuer STM32F2xxxx c Bootloader V3.x:
>
> USB_DP pin  Input/Output PA12: USB DP line
>             No external Pull-up resistor is required

Das würde ja bedeuten, ich brauche überhaupt keinen externen Widerstand 
mehr an den Datenleitungen? Alles wird intern abgehandelt?
Auch VBUS geht direkt ohne Spannungsteiler an PA9?

Uwe B. schrieb:
> @Thomas W. : Warum jetzt noch ein neues Boarddesign mit dem uralten F2?
> So preissensitive?
Was wäre denn eine alternative dazu? USB, viele I/O, RMII wird benötigt.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Thomas W. schrieb:
> Uwe B. schrieb:
>
> Das würde ja bedeuten, ich brauche überhaupt keinen externen Widerstand
> mehr an den Datenleitungen? Alles wird intern abgehandelt?
> Auch VBUS geht direkt ohne Spannungsteiler an PA9?
>
Dazu auch RM0033, 29.4 OTG dual role device (DRD)
               Figure 350. OTG A-B device connection

Kurz: Ja!
> Uwe B. schrieb:
>> @Thomas W. : Warum jetzt noch ein neues Boarddesign mit dem uralten F2?
>> So preissensitive?
> Was wäre denn eine alternative dazu? USB, viele I/O, RMII wird benötigt.

Schau Dir den Online oder PC STM32MCU -Finder an. Klicke an, was Du 
brauchst, dann sortiere nach (Grossmengen) Preise und vergleiche dann 
Preis und Verfuegbarkeit bei den ueblichen Verdaechtigen

von Thomas W. (thomas100)


Lesenswert?

Uwe B. schrieb:
> Kurz: Ja!

Ein Traum. Danke für die Info!

Uwe B. schrieb:
> Schau Dir den Online oder PC STM32MCU -Finder an. Klicke an, was Du
> brauchst, dann sortiere nach (Grossmengen) Preise und vergleiche dann
> Preis und Verfuegbarkeit bei den ueblichen Verdaechtigen

Danach bin ich auch vorgegangen.
Der STM32F429ZGT wäre noch günstiger und schneller. Ich habe mich dann 
aber für den STM32F207ZGT entschieden. Mehr ein Bauchgefühl.

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.