STM32F405 CDC USB isn't enumerated by the host
I have a new STM32F405 based board design. It is USB powered. In cube IDE I have the STM USB section configured as 'device only', 'no vbus sensing', and I have the middleware set to CDC and 'USBD_SELF_POWERED' is disabled (although I have tried both settings).
When I plug the board in to a host the host wont even attempt to enumerate it. I have also checked this with wireshark. I have tried several known-good cables and USB ports. The fact that the host won't try to enumerate makes me think that the STM is not pulling the D+ pin high.
As a test I powered the board from a bench supply, with no USB cable attached, and measured the D+ and D- pins. I expected to see 3.3V on D+ but instead I see about 500mV on each pin. This is suspiciously close to a diode breakdown voltage, so I double checked the orientation of my USB ESD package and it appears to be correct.
Before I remove this package, does anyone have any suggestions for things I can test in hardware or software?
EDIT #1 - I removed the ESD chip and D+ and D- continue to float around 500mV (when not attached to a host) and the host does not attempt to enumerate.
EDIT #2 - The chip is STM32F405VGT6. I believe this chip has integrated USB pull-up resistors.
