Custom RP2040 board detection and uploading issues

I have designed and tested a custom rp2040 board for simple gpio ON/OFF functioning and everything worked just fine.
Now, we have ordered 30 more of the same circuits ( with same design and components ).

From the stack of 30, we are facing issues with 6-12 circuits for detecting the chip ( on windows ) and uploading code.

The design and the components even the manufacturer is the same for the components, we have not changed a single bit.

Currently for those 12 Circuits, we are able to detect pico as a mass storage device but whenever we upload a uf2 file ( in this case I am only trying to upload a simple blink program with a working GPIO on the circuit ) the chip acts unstable and every GPIO is at floating voltage of about 0.5V including DP DN pins.

When we try to upload code from an Arduino IDE, sometimes the chip gets detected and sometimes it does not, which is so strange.
While uploading through Arduino IDE we get an error saying "Device Descriptor Request Failed" or "Set address failed".
Sometimes the device does get detected too, and we can see Raspberry Pi Pico on the ports section of IDE, and the code gets uploaded as well but after re-plugging, it acts the same ( unstable and unable to detect ).
and sometimes ( 6 circuits from the 12 circuits ) got detected after showing the same errors before and now they work fine out of nowhere even after re-plugging it. I was unable to detect the issue, but the circuits now are working fine.

The voltage supplied to the chip is stable, the crystal we have used is according to the guidelines given. The dp dn resistor used is 27 ohm. Basically, the hardware design is tested before and is according to the requirements.
I have gone through many forums and issues posted, rechecked all the mistakes made from the hardware and the software side, but I am still not able to find the issue and the solution for this.

I have been struggling with this for the past few weeks and now I am in shock and curious to know what exactly is happening.

Can anyone please let me know where am I going wrong or what should I atleast do to debug this issue?

Any help will be appreciated regarding this.

Thank You.

Maybe the active flux is poorly washed and it's a matter of installation?

Can you post the schematic please

Basically you have designed your circuit incorrectly, or your PCB has a fault on it.

This is a low yield issue. I remember that Arduino had a low yield issue for a year or so, but it was not low enough to be much of an issue, about 1% would fail and they just tossed them to one side. However, when they investigated they found out that there should have been a diode in the reset circuitry, and this caused the low yield.

Schematic and PCB design :

PRSch1

PRSchUSB

I have gone through the design consideration for oscillator crystal.

Here in the schematic, it is not according to the consideration. But the circuits still worked good.

When it was not working, I tried replacing the resistors and capacitors according to the requirements, but still was not able to detect the chip.

If the design was/is the issue, why did it not work in both the situation and worked for some chips as it is.

Because all chips are not created equal.

The data sheets show a range of values for most parameters from a maximum to minimum. In the real chip you might get anywhere between these values. As a designer you have to make sure that the circuit will work with all values you are likely to get.

This can be complex especially when there are multiple combinations of chips. This can be simulated on a good circuit simulator by means of what is known as a Monte Carlo Simulation, which basically puts random values in the exact values for the parameters of a device. This is like spinning a roulette wheel, hence the name.

Have you ever got any board working from a none working board?

When I worked in mass production the crystal oscillator was one of the parts that the engineers would work closely on. In the past they had problems with getting the all the crystals to start up when making a lot of devices. They had a single crystal manufacturer they worked with and were very reluctant to change when the purchasing department wanted to bring in a new supplier. In fact that applied to all components they used. However, have you identified a board with the oscillator not running? If it runs it is fine, there is no need to worry once it starts up.

1 Like

Fair enough.

I am a fresher designing it all, trying to learn from my mistakes. Thanks for the hint, I will look into the design specific.

Yes, we actually did. We have got 6 boards working when they were showing detection issues.

I might have not paid enough attention to crystal then, when everything was working fine I sat back still. Should have taken a look.
Also, crystal does start up, but has floating voltage added to it. There is no issue for starting the crystal but there might be speed issues I feel. We are using a different crystal too ( of course it's of 12MHz but with different ESR and load capacitance ), as in not the one mentioned in the hardware design. So, some of the specifications are changing too.

I ain't sure, I mean the oscillator is running but maybe there might be an issue at start up time or speed of the oscillator, is what I feel.

What did you do to make these boards work?

Have you tried the "laying on of hands" technique? Take both hands and touch various parts of the board and see if it springs to life?

You won't believe it but we did nothing.

We were able to detect the pico as a mass storage device, but it was not appearing as a USB port. When we try to upload code from arduino IDE, it used to gave an error saying "device descriptor request failed" but eventually while trying it got detected out of nowhere and now we can see the port in arduino ide too without any error as a device too.

"laying on of hands" as in checking for static charges and see if it works by plugging in again?

Yes I can believe that it happens sometimes.

It could be the rise time on the power supply caused by not being firm enough plugging it in. This also happens to me when there is an intermittent fault on a USB cable. If flexing the USB cable seems to do something, then it is likely to be faulty. Also pressing the reset button can also help.

No.
Get the full powered up board and touching components on the board to see if it suddenly starts working.

This can detect loose connections and also adds a bit of random capacitance and feedback. It doesn't always work, but it is worth a try.

Okay,
It's a relief that you do believe it. For me it was like senseless and I was loosing my mind about being clueless of what was happening ( I still do though ).

Okay, I will try this and let you know.

I was planning to order the crystal given in the hardware documentation and try testing for about 5 circuits and see if every circuit gets detected or not.

"laying on of hands" method did not work for me. :frowning:

The circuits that I got working are throwing the same issues AGAIN.

We were able to detect the circuits, but now after few days I tried to work on it again and there's this same issue of "device descriptor request failed" while uploading from arduino ide.

We conducted many experiments to detect the issue, changed the crystal design and crystal itself.

But when we tried re-soldering the chip again the issue got resolved. We either needed to re-solder the chip again with precision or change the chip.

There was no design issue but soldering one.

The solder done before had no shorts and was done okay-ish.
But by pressing the chip and re-soldering it again worked for us.

Thank you @Grumpy_Mike @jim-p @ua6em for your response and help. It means a lot.

@Grumpy_Mike I will keep your points in mind for further designs.

I will close this issue for now. :slight_smile:

Often the hardest thing to spot on a forum. :slight_smile:

Anyway good for you getting it going. I wish you all the best going forward.

Just mark your last post as the solution. It will not stop other replies but will draw a sort of line under things.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.