Our company is developing a board using LPC2888. We configure its usb interface as the recommendation in its application notes.
Now we have such an odd problem. During the test of our production, we found that 60-70% of them can run properly at high-speed, but the left of them run only at full-speed. The phenomenon is when we plug them into windows 2.0 socket, windows will pop up a message “the device can perform faster if you connect it it into a hi-speed usb2.0 port”. And a few devices can’t be recognized by windows.
First I confirm my computer is good, it’s connected to a USB2.0 port. I believe the problem happens on our product.
I watch the handshake signal in a 300MHz oscillator. I can see the handshake is successful. For the devices can perform high speed, the oscillator shows it tries to run at high speed but go back to full speed as I see the signal level goes back to 3V. For the devices cant be recognized, I see the reset signal three times and then goes back to 3V, idle state I think. (I monitor the signal on D+ line only)
Because we don’t have experience in USB2.0 PCB layout before, we have a lot of mistakes. The impedance is not correct, even the device can run at high speed, I watch the impedance between D+ and GND is 19 Ohm. The signal track is placed in 3rd layer and have two VIAS. The conncetor we use is not surface mountain, its pin crosses the board.
My question is if this problem is due to windows can’t read effective information from device, then it said can’t recognize. And there’re too many data corruptions in high speed, so it goes back to full speed?
If so, what will cause the signal corrupt? How can I find out the souce of the problem?
I’ve struggled in usb2 for one and half weeks, any one can save me?
Many thanks