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
wenn niemand das selbe Problem hat, dann wäre ich über einen übersichtlichen (nicht das Beispiel von ST), funktionierenden Code sehr erfreut :)
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...
Noch ein Vorschlag: Da es sich höchstwahrscheinlich um ein low-speed device handelt (1.5 MBit/s), kann man relativ leicht an den USB-Leitungen mitlesen. Wenn kein Logikanalyzer vorhanden ist, tut's auch ein AVR mit 12MHz-Quarz. Wie es auf den Leitungen ausschauen sollte, ist hier beschrieben: http://www.beyondlogic.org/usbnutshell/usb1.shtml
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).
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.
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
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.