Forum: Mikrocontroller und Digitale Elektronik STM32F072 USB Funktion gesucht


von Klaus (Gast)


Lesenswert?

Hallo,

ich versuche mich gerade an einem STM32F072.
Ich will die USB Schnittstelle zum laufen bringen.

Wenn ich in Datei usb_conf.h das Define "INTERNAL_PULLUP" aus mache 
fehlt mir eine Funktion.

In USBD_Core.c wird dann nach dem Define abgefragt.
1
/* Enable the pull-up */
2
#ifdef INTERNAL_PULLUP
3
  DCD_DevConnect(pdev);
4
#else
5
 USB_BSP_DevConnect(pdev);
6
#endif


Aber wo gibt es mal ein Beispiel zur Funktion "USB_BSP_DevConnect", bzw 
was da drin stehen sollte.

Irgendwie findet keine Suchmaschine diese Funktion.

Viele Grüße, Klaus

von hp-freund (Gast)


Lesenswert?

Rein logisch gesehen wird entweder der interne Pullup gesetzt, durch 
Registereintrag, siehe dazu die Funktion DCD_DevConnect(pdev); ,
oder eben ein auf dem Board befindlicher ext. Pullup durch 
initialisieren/setzen eines Ausgangspin.

von Klaus (Gast)


Lesenswert?

Der Widerstand ist fest eingelötet und lässt sich nicht schalten.
Den kann ich zwar raus bauen aber dann muss ich mir ganz genau ansehen 
ob der interne das selbe macht.

Ist schon Blöd da wird in einer Lib so was eingebaut, aber dann wird die 
Funktion vergessen.

Selbst wenn da nur drin steht mache nichts, wäre das wenigstens mal eine 
Aussage und der Compiler wäre nicht drüber gestolpert.

VG, Klaus

von Urban (Gast)


Lesenswert?

> Aber wo gibt es mal ein Beispiel zur Funktion "USB_BSP_DevConnect", bzw
> was da drin stehen sollte.

- ein 1,5 KOhm Widerstand ist mit einem Portpin und D+ (USB) verbunden
- der Portpin wird als Ausgang initialisiert, der int. PullUp 
abgeschaltet
- der Ausgang wir auf High (3,3 V) gesetzt, USB wird ein Gerät 
signalisiert

von STM32 Experte (Gast)


Lesenswert?

Leute, bevor Ihr hier antwortet und falsche Dinge schreibt, bitte 
erstmal das Datenblatt anschauen.

Der STM32F072 hat einen internen Pullup-Widerstand, es muss kein 
externer Widerstand eingebaut und mit irgendwelchen Portpins geschaltet 
werden.
Dieser ist sogar per Standard aktiviert und kann im Register USB->BCDR 
durch setzen von Bit 15 (DPPU, DP pull-up control) deaktiviert werden, 
um einen USB diconnect zu simulieren.

Wo das in einer der STM32-Libraries steht, kann ich nicht sagen, da ich 
grundsätzlich ohne Libraries programmiere.

von hp-freund (Gast)


Lesenswert?

STM32 Experte schrieb im Beitrag #4694494:
> Leute, bevor Ihr hier antwortet und falsche Dinge schreibt

Klaus schrieb:
> Der Widerstand ist fest eingelötet und lässt sich nicht schalten.

Da muß der Klaus dann selbst entscheiden was in seinem Fall das Beste 
ist.

von Klaus (Gast)


Lesenswert?

Also ist in dieser nicht vorhanden Funktion anscheined das setzen von 
einem Portpin drin. Dieser soll demnach den Widerstand einschalten.
Super Funktion, besonders weil sie nirgends zu finden ist.
Mehr braucht man dazu wohl nicht sagen.

Ich werfe den externen Widerstand raus und nehme den internen.
Dann kann die Lib damit machen was sie will.

VG, Klaus

von hp-freund (Gast)


Lesenswert?

BSP -> Board spezifisch

Kann es sein das es für das Board noch eine eigene lib gibt?
Welches ist es denn?

von hp-freund (Gast)


Lesenswert?

Wenn ich in die
STM32F072B-Discovery_FW_V1.0.1
schaue, sehe ich einige von den berühmten "vorbereiteten" Funktionen die 
vom Programmierer selbst zu erstellen sind :-)

von Klaus (Gast)


Lesenswert?

"vorbereiteten" Funktionen trifft es gut.

Ich habe ja nichts dagegen wenn man vom User speziellen Code erwartet, 
aber wenn ich schon Sachen Vorbereite dann wenigsten sauber und mit 
etwas Doku.
Aber die Jungs bei ST scheinen da nur auf schnell was raus geben zu 
arbeiten.
Schade.

Ohne Widerstand und mit den vorhandenen Funktionen arbeitet der USB nun.
Mit dem Widerstand werde ich die Tage mal testen.

VG, Klaus

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.