stm32f4discovery usb hid

OP #2739021
Lesenswert?

Hallo,

ich versuche gerade mit Hilfe der STM32_USB-Host-Device_Lib_V2.1.0 eine 
USB-Tastatur an meinem stm32f4discovery anzusteuern.
Ich habe bereits erfolgreich ein Projekt auf den µC flashen und 
ausprobieren können. Dabei ist mir aufgefallen, dass die angeschlossene 
Tastatur erkannt wird, weil die Funktionen USBH_USR_Init(), 
USBH_USR_DeviceAttached(), USBH_USR_ResetDevice() und 
USBH_USR_DeviceSpeedDetected(uint8_t DeviceSpeed) aufgerufen werden.
Danach bleibt phost->gState HOST_CTRL_XFER und phost->Control.state 
CTRL_SETUP_WAIT, sodass USBH_USR_EnumerationDone() nie aufgerufen wird.

Ich habe bereits google um eine Lösung bemüht, jedoch ohne Erfolg. 
Deshalb hoffe ich, dass ihr mir helfen könnt. Wenn trotz der 
Beschreibung ein Codeausschnitt benötigt wird bin ich gerne bereit ihn 
zu posten.
Vielen Dank

Thomas
Gast #2740179
Lesenswert?

Ist der USB-Takt bzw. die PLL richtig konfiguriert?  Ein Gerät
und dessen Geschwindigkeit wird durch Pullup-Widerstände an den
Datenleitungen erkannt, was auch "funktioniert", wenn der Takt
völlig daneben ist.  Erst bei der Enumeration geht es dann
schief...
OP #2740647
Lesenswert?

Erst einmal vielen Dank für die Antworten.
Die PLL ist mit 48MHz korrekt eingestellt.
Laut Verpackung braucht die Tastatur 50mA bei 5V.

Vor dem mitlesen an den Leitungen gibt es jetzt noch ein anderes 
"Problem":
Ich habe die Versorgungsspannung an der USB-Buchse (CN5 vom Board) 
gemessen. Es liegen nur knapp 3V, also die Versorgungsspannung des µC 
an, obwohl das Board mit einer 5V-Quelle gespeist wird. Nach meinem 
bisherigen Wissen müssen bei USB 5V anliegen, oder irre ich mich da?
Die Tastatur braucht ja auch 5V.

Im Quelltext der USB-Bibliothek steht noch:
"On-chip 5 V VBUS generation is not supported. For this reason, a charge 
pump or, if 5 V are available on the application board, a basic power 
switch, must be added externally to drive the 5 V VBUS line. The 
external charge pump can be driven by any GPIO output. When the 
application decides to power on VBUS using the chosen GPIO, it must also 
set the port power bit in the host port control and status register 
(PPWR bit in OTG_FS_HPRT)."
Aber eigentlich sollte ja hardwaremäßig alles auf dem Discovery-Board 
vorhanden sein (es ist schließlich sogar die Buchse verbaut).
Gast #2740688
Lesenswert?

Thomas W. schrieb:
> gemessen. Es liegen nur knapp 3V, also die Versorgungsspannung des µC
> an, obwohl das Board mit einer 5V-Quelle gespeist wird. Nach meinem
> bisherigen Wissen müssen bei USB 5V anliegen, oder irre ich mich da?
> Die Tastatur braucht ja auch 5V.

Ack, bei 3V würde es mich nicht wundern, dass die Tastatur nicht
antwortet.

> Im Quelltext der USB-Bibliothek steht noch:
> "On-chip 5 V VBUS generation is not supported. For this reason, a charge
> pump or, if 5 V are available on the application board, a basic power
> switch, must be added externally to drive the 5 V VBUS line. The
> external charge pump can be driven by any GPIO output. When the
> application decides to power on VBUS using the chosen GPIO, it must also
> set the port power bit in the host port control and status register
> (PPWR bit in OTG_FS_HPRT)."
> Aber eigentlich sollte ja hardwaremäßig alles auf dem Discovery-Board
> vorhanden sein (es ist schließlich sogar die Buchse verbaut).

Ja, als power switch ist auf dem Discovery ein STMPS2141STR verbaut, der
die 5V-Schiene des Discovery-Boards bei 500mA auf CN5 schalten kann.
Sein ¬EN hängt an PC0.  Solange er keinen ¬FAULT anzeigt (PD5 und rote
LED neben CN5), sollte deutlich mehr als 3V messbar sein.
OP #2741813
Lesenswert?

Vielen, vielen Dank, ansel!
Jetzt funktioniert es endlich. Das User Manual genauer anschauen hätte 
mir einiges erspart...
Nur schade, dass man den VBUS-Pin (PA9) auch nicht für andere Dinge 
verwenden kann.
Naja, damit ist das Problem erledigt, vielen Dank nochmal.

Thomas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren