Hallo Forum, ich möchte gern auf dem STM32F4 den DMA-fähigen HighSpeed-USB-Core zusammen mit dem internen PHY im FullSpeed-Modus verwenden. Mir gelingt aber leider nicht die Portierung meines lauffähigen Projektes vom FullSpeed-Core auf den HighSpeed-Core. Hat jemand von euch den HighSpeed-Core schonmal in Betrieb genommen und kann mir den entscheidenden Tip geben? Hardware: Ich verwende ein modifiziertes STM32DiscoveryF4-Board, bei dem die USB-Buchse zwischen FullSpeed- und HighSpeed-Core umgesteckt werden kann. Pinrichtige Beschaltung ist elektrisch geprüft, nach Initialisierung des HighSpeed-Core sind die USB-Pullups an der Buchse messbar. Firmware: Ausgangspunkt ist aus der "STM32 USB on-the-go Host and device library" V2.1.0 das Beispielprojekt der CDC-Klasse (virtueller COM-Port). Ich habe entsprechend der Lib-Doku das Board Support Package in usb_bsp.c auf das Discovery-Board angepasst und in usb_conf.h die Settings auf USE_USB_OTG_HS und USE_EMBEDDED_PHY umgestellt. Nach Initialisierung des Stacks sind dann zwar die richtigen Pullups gesetzt und der Core im Device-Mode, allerdings ist er Suspended und genieriert keinen einzigen Interrupt. Nichtmal den USB-Reset-Interrupt, weswegen bereits die Enumeration fehlschlägt. Das Fehlerbit OTG_HS_DSTS.ERRR ist aber auch nicht gesetzt. Fragen: 1) Muss abgesehen von den GPIO/AF und den Lib-Settings noch was anderes für den HS-Core umgestellt werden? Gibt es Clock-Vorgaben? Datenblatt und ReferenceManual schweigen sich zur Clock des Embedded PHY ein wenig aus, er verwende nicht die 48MHz-PLL, einzige Bedingung wäre AHB-Clock >30MHz. Reicht das wirklich? 2) Zu früheren Versionen der STM32-USB-OTG-Lib sind immer wieder Bugs bekannt geworden. Ist denn die V2.1.0 jetzt stabil? Hat jemals jemand mit dieser Lib den HS-Core mit Embedded PHY zum Laufen gebracht? Gibt es ein bekanntes Beispielprojekt damit? 3) Kennt ihr empfehlenswerte alternative USB-Libs für die STM32-Plattform, die Verwendung des HS-Core mit Embedded PHY und DMA gestatten? Library (STSW-STM32046): http://www.st.com/web/en/catalog/tools/PF257882]STSW-STM32046 STM32F4Discovery: http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419
Hallo Michael, ist es Dir bereits gelungen, den HS Core im FullSpeed Modus laufen zu lassen? Ich hänge gerade am gleichen Problem. Vielleicht die Lösung zu deinem Problem: Hast du in der Datei "usb_bsp.c" folgende Zeilen hinzugefügt:
1 | void OTG_HS_IRQHandler(void) |
2 | { |
3 | USBD_OTG_ISR_Handler(&USB_OTG_dev); |
4 | } |
Ich bekomme soweit alles zum Laufen und kann auch über den Control EP Daten verschicken. Jedoch bekomme ich am PC die Meldung, dass die momentane Configuration 0x00 ist und die Anzahl der geöffneten Endpunkte ebenfalls 0. Merkwürdig ist nur, dass die SET_CONFIGURATION Requests durchkommen und auch ausgeführt werden (laut Debugger). Im gleichen Zug wird auch ein Bulk Endpunkt initialisiert. Ich würde mich freuen, wenn mir jemand bei dem STM32F4 helfen kann. Wichtig ist: HS Core im FullSpeed Modus, da ich später über ULPI ein HS PHY anschließen möchte. Viele Grüße
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.