Other Parts Discussed in Thread: MSP-FET
I've been trying to debug issues with USB on the MSP430F5510; the controller never sets SETUPIFG on a SETUP packet. I know the host sends them. I've scratched my head trying to figure out the issue here; it's not intermittent, but consistent. I've never seen a SETUP interrupt. Everything else works fine. I don't have a USB Protocol Analyzer unfortunately... I get no PLL interrupts unless I short the XT2 crystal briefly with a resistor, to verify they happen. They do happen! All at once when I abuse the clock.
The crystal is 12MHz, and I'm not using the UCS FLL. I run the DCO for some of the device errata suggesting the USB PLL can fail to start up otherwise, but it's not used during operation - MCLK is XT2 1:1, SMCLK and ACLK are divided by 4.
So I decided to check the crystal frequency. First verified it oscillates with a scope (with a LeCroy ZS1000 active probe, 0.9pF 1M). One crystal terminal is clean, the other a little noisy looking, but not terribly so. I didn't take note, but I assume it's XT2IN that's noisier due to its higher impedance.
Next, I routed ACLK to P1.0 (with ACLK dividing the XT2CLK by 4, for 3MHz) and probed it with a counter (Agilent 53131A). It measures 2.999966MHz, which is a deviation of ~11ppm.
But when I plug in the USB connector the frequency drops to 2.996200MHz, which is off by 0.12%! This exceeds the USB 0.1% clock spec. When the host gives up enumerating and suspends the device (at wihich point I shut off the USB PLL) ACLK climbs back up to the same as when not plugged in. The ACLK is stable at the weird frequency; it's not skipping around like one would assume with noise/jitter.
What is the likely root cause here?
Could this clock shift cause SETUP to always fail? It's only 2.0 Full Speed... I'd expect if it were so close to the limit of the spec it would intermittent and not consistent. I NEVER see a SETUPIFG.
It doesn't SEEM to be caused by noise over VBus. (I don't have a ferrite bead on it, but it does a Schottky.)
The USB cable shield is unattached.