Electrical – USB device not recognized

usbusb device

I have been designing a usb device using a psoc 4L with integrated USB full speed capability. Yet for nearly all of my designs as soon as I plug the usb into the computer I get the following problem.

worst description of a problem ever

From the research I've been able to dig into, this suggests that there is something wrong on my physical layer (I'm using a generic starter project provided by cypress, and occasionally I have had it correctly connect)

I've measured the D+ and D- lines and here are the pictures from my o-scope
Zoomed out
Zoomed in oscope

My question is what appears to be the problem here?

My intuition suggests that D+(the blue trace) is taking too long (18 ns which is greater than 12 ns allowed) Therefore it has too much capacitive loading and I need to identify in the layout what could be adding to it. Is this correct intuition, or is something completely different going on?

EDIT *******

I redid the scope with measurements on. here it is. Looks like the voltage is consistently around 4.1V
enter image description here

EDIT # 2*******

I got it to work! I was originally powering the psoc 4 off of the miniprog. As soon as I switched to USB powered it worked. I'm talking with some cypress FAE's so as soon as I get an answer as to why that would be the problem, I'll post here

Best Answer

Your waveforms look OK IMO. You need to check how far you are getting in the enumeration process. You can do that by checking the unknown device in DeviceManager. Look to see if the VIP/PID is being detected in the initial negotiation.
If you have a VIP/PID, then you are getting quite far in the enumeration.
If the VIP/PID is zero then you are failing early in enumeration, or don't have a recognizable VIP/PID.
Your project should have a VIP/PID defined for a HID device which should be automatically resolved by Windows.

While there are commercial and free USB analyzers for Windows, you can also simply use the Microsoft Windows Message Analyzer to capture the USB traffic. For this to work the base Phy protocol (things like you USB levels and clocks) must be running OK. However it looks like you are fine here and should be able to capture the traffic successfully.
There are online videos within the MMA interface that will show you how to operate the MMA or use the ones here ....and the operating manual is here.
It's not a simple tool, but well worth getting to know.