I am using the HS USB port of the STM32F207 with the internal FS PHY. My environment is uVision 5 with the latest Middleware.
My settings in the USBD_Config_0 are: Connect to HW driver #1, HS off, the rest is pretty much irrelevant... In the RTE_Device.h I selected the FS internal PHY
The rest of my code is reduced to the bare minimum
int main (void) { osKernelInitialize (); osKernelStart (); usbstat = USBD_Initialize (0); usbstat = USBD_Connect (0); }
This code works just fine when I use the FS port(#0). Also it works with the eval board and the external ULPI. The computer recognizes the device. If I use the HS port I get an enumeration failed error.
I noticed that I don't get any interrupts in the OTG_HS_GINTSTS register after the detection of USBRST interrupt. Especially the ENUMDNE bit, which indicates the end of the reset initiated by the host(PC). Note that the USBRST interrupt also occurs when the usb cable is disconnected. So I'm probably not detecting any reset signals on the DP line, therefor no interrupts.
An analysis with the oscilloscope didn't tell me much. After VBUS detection the D+ line is set to high by the MC an after this, the host pulls it 10 ms to ground. This seems to go by unnoticed by the MC.
Am I missing something? The settings seem pretty straight forward to me. I walked through the ISRs but eventually it comes down to not getting any interrupts.