How did you solder the RP2040?
I ask because it has one ground connection and its the big square pad under the chip.
Did you use paste and hot air for that?
Hmm, OK, do your trust the fab!?
The odd behaviour you describe could possibly be a grounding issue. Current normal 10mA but actual ground being used could be through an io pin or suchlike, if they didn't solder the RP2040 ground pad. Check your footprint has that pad, with copper exposed.
Other than that, I'm out of ideas.
Hmm, OK, do your trust the fab!?
The odd behaviour you describe could possibly be a grounding issue. Current normal 10mA but actual ground being used could be through an io pin or suchlike, if they didn't solder the RP2040 ground pad. Check your footprint has that pad, with copper exposed.
Other than that, I'm out of ideas.
I think my trust reduced a bit just now. I hit the board with my Hot-Air station at 350 for a few seconds and instantly, the board upon connecting is giving the not recognised error. I should possibly pull it up and reflow it once again. Thanks for the suggestion.
Maybe try interfacing with the board using SWCLK and SWDIO. Use it to check the clocks. You could upload a small program that outputs a frequency to a pin and then measure that for accuracy and stability.
I suppose your problem could also be the flash chip. Use the debugger to check that reading from flash is ok. Does the flash need to be preloaded with something for windows to recognize the device?
You are currently lacking enough information to debug, so these ideas are mostly for you to get more data points.
Maybe try interfacing with the board using SWCLK and SWDIO. Use it to check the clocks. You could upload a small program that outputs a frequency to a pin and then measure that for accuracy and stability.
I suppose your problem could also be the flash chip. Use the debugger to check that reading from flash is ok. Does the flash need to be preloaded with something for windows to recognize the device?
You are currently lacking enough information to debug, so these ideas are mostly for you to get more data points.
Since the CLK and DIO are part of the USB to serial protocol, I was wondering whether I could use the STLink since it seems to allow communication through that protocol. I may be wrong but that is a though that crossed my mind. Any thoughts?
A 12 MHz oscillator in a package is less than 1 USD and much easier to get running than using a crystal. But if you don't have one on hand, you might want to try something different? You could use another rp2040 to generate a 12 MHz signal. That is by the way also how you debug using the two debug pins. It is all open source and free. Requires only a second rp2040 board to act as the debugger.
Since the CLK and DIO are part of the USB to serial protocol, I was wondering whether I could use the STLink since it seems to allow communication through that protocol. I may be wrong but that is a though that crossed my mind. Any thoughts?
No, it's SWD, which is a 2-wire variant of JTAG for ARM Cortex MCUs. What you need is a SWD probe. And if you have a STLink probe, it actually supports SWD. You should be able to use it for the RP2040, but certainly not with ST software tools. You'll need to use OpenOCD with it, select STLink as an interface and the RP2040 as the target. You'll find resources online for that. Teaching how to use OpenOCD and GDB (for debugging) is kinda beyond the scope of this thread about oscillator issues, and even beyond any kind of thread IMO, it's more like blog material.
Note that from your schematic, you haven't connected the 2 relevant SWD pins of the RP2040, so you're completely out of luck with this one anyway. Sorry.
Something not clear (to me at least): does the MCU appear to run properly *only* when you touch around the crystal area, or does it run alright when left alone, but stops to when you touch the crystal area?
Conclusion: USB C maybe good for consumers. But bad for my hardware development. I am never going to use it again.
Conclusion: USB C maybe good for consumers. But bad for my hardware development. I am never going to use it again.
USB C is quite good IMHO.
If I avoided everything that didn't work first time for me, there is a lot I wouldn't know!
Don't let a mistake put you off it, just learn from the experience, that is the important thing.
A 12 MHz oscillator in a package is less than 1 USD and much easier to get running than using a crystal.
It's a proper step to debug the problem at hand, but I'm wondering about the general statement. I have little experience in this regard, but most everyone who used Parallax P8X32A (Propeller) on a breadboard did so using a crystal (and two capacitors). Not 12MHz, but typically 5 to 6.25MHz, but if it works on a solderless breadboard (with all its ill defined parasitary capacitances) it can't be that critical.
In regards to the stated problem: having the 'board' (the USB connection is established by the MCU alone) recognized by Windows is perhaps a too high level criteria. All kinds of things could go wrong. I'd try to define some smaller steps in order to be in a better position to tell what went wrong. Have the MCU blink an LED or output a square wave of a given frequency on one of its pins. I mean, one needs to determine whether the MCU is working at all or just marginally or is the timing just off or the clock instable ...
Ah, part of the problem is the TVS diode SM712 that you have on the USB data lines. It has >70pF capacitance, way too much. You need to use low capacitance TVS, like 0.4pF or so. Search for USB TVS there are many to choose from e.g. USBLC6-2 for USB2 speeds.
Also the SM712 here is being used for ESD protection. So, I wonder what kind of effect it actually has since when i replaced the C port with a USB cable hard soldered, I just connected the data lines directly to the 27Ohm resistors bypassing it.
Seems that I forgot to connect B6 and B7 pins of the 16 pin USB C connector and hence, I think it contributes to the issue as well. I cannot possibly solder wires to it. So, I now have 2 queries, Since I have effectively designed the board in such a way that the USB C only works in one configuration of the cable, should I get rid of the SM712 and interchange the data lines?
Yes it's a 12V TVS so not that well adapted here. But note that regarding the highish capacitance (as it was mentioned earlier), it was unlikely the issue. The RP2040 is USB Full-Speed only and from the specs, you're allowed up to 100pF of capacitance on the data lines in FS (AFAIR) - actually you may sometimes see recommendations of adding some small capacitors on D+/D- for USB FS to limit EMI, although the series resistors should be enough for that purpose.
A very low capacitance is only required for USB HS and above.
Yes it's a 12V TVS so not that well adapted here. But note that regarding the highish capacitance (as it was mentioned earlier), it was unlikely the issue. The RP2040 is USB Full-Speed only and from the specs, you're allowed up to 100pF of capacitance on the data lines in FS (AFAIR) - actually you may sometimes see recommendations of adding some small capacitors on D+/D- for USB FS to limit EMI, although the series resistors should be enough for that purpose.
A very low capacitance is only required for USB HS and above.
Seems that I forgot to connect B6 and B7 pins of the 16 pin USB C connector and hence, I think it contributes to the issue as well. I cannot possibly solder wires to it. So, I now have 2 queries, Since I have effectively designed the board in such a way that the USB C only works in one configuration of the cable, should I get rid of the SM712 and interchange the data lines?