Forum: Mikrocontroller und Digitale Elektronik STM32F4, DMA-fähigen HighSpeed-USB-Core mit internem PHY verwenden? (USB_OTG_HS, EMBEDDED_PHY)


von Michael H. (Gast)


Lesenswert?

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

von Tarek T. (tarek_t)


Lesenswert?

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
Noch kein Account? Hier anmelden.