I'm still learning USB here, so please bear with me if I am leaving out vital info.
I am trying to implement a HS USB HID-class device on a STM32F427 from STMicro using a SMSC USB3300 external PHY IC. I have succesfully implemented a similar setup previously, except it was based on an STM32F205. I have this device handy for comparison.
Using my Beagle USB protocol analyzer, when I plug in the HS USB cable there appears to be MOST of the traffic I would expect: HS handshaking, setting an address, get config descriptors, etc. I have compared this against my working device, and all is fine until just after the host does a Set Config = 1 (configured). Both devices do a brief Set Idle, then there is a Get Report Descriptor. What I expect next is a Get Feature Report; on my "working" device I see multiple Get Feature Reports. However, on my new device, the next packet I get is the host doing another Set Configuration, but this time to 0. This is then followed by a Suspend, and is the last transmission.
My question is: why would the host come through and unconfigure my device?