2
\$\begingroup\$

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.5 V 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 Ω. 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 at least do to debug this issue?

Any help will be appreciated regarding this.

Thank You.

Schematic and PCB design:

enter image description here

enter image description here

enter image description here

enter image description here

\$\endgroup\$
5
  • 4
    \$\begingroup\$ Schematics and PCB layout needed to see if it is a problem in design of the boards or just manufacturing them. \$\endgroup\$
    – Justme
    Commented Mar 1, 2023 at 13:26
  • 1
    \$\begingroup\$ Is this powered from the USB-C connector? You don't have the CC sense pins connected. \$\endgroup\$
    – awjlogan
    Commented Mar 8, 2023 at 10:05
  • \$\begingroup\$ Powered from USB when battery is not connected. Voltage given to 3v3 rail is stable here. And I don't think CC sense pin will be necessary, it works fine without it too. \$\endgroup\$
    – Samiksha
    Commented Mar 8, 2023 at 10:25
  • \$\begingroup\$ Have you done any measurements what works and what doesn't? The USB connector is not required to give power to your device, is the reset/run floating or correct state, does crystal oscillate or not, are all pins properly soldered and measured for having correct voltages (supply and other important pins)? \$\endgroup\$
    – Justme
    Commented Mar 8, 2023 at 13:16
  • \$\begingroup\$ Yes. Not literally, we are stepping down the 5V to 3V3 volt and supplying this 3V3 to pico which is stable as we checked. Crystal oscillator works, as we are able to detect pico as a mass storage device. There's a voltage issue. The voltage is 1.9V at 1v1 rail. Every pin of the chip is at high voltage though, without external interference. Like dp (3V, this I guess is normal ) ,dn (0.47V) and all the GPIOs (0.8V) along with XIN, XOUT (2.5V). \$\endgroup\$
    – Samiksha
    Commented Mar 9, 2023 at 11:41

2 Answers 2

2
\$\begingroup\$

I see several problems in this designs layout, and one or a combination of them could very well be the reasons for your problems.

The first problem I see is with impedance matching of the usb line, I assume from your picture of the layout that this is a 2-layer board. If that's the case the USB data lines are not impedance matched, which might cause problems when communicating with the board due to reflections from the impedance mismatch, the vias on the data lines also does not help. However, this is not a huge problems on this slow USB standard but still something that should be corrected.

I also see other minor layout errors but the biggest problem with the layout is that you don't have any clear return path in the PCB for all your signals (check this video when you have time https://www.youtube.com/watch?v=ySuUZEjARPY, it will change your whole perspective of PCB layout). The short summary is that your design in its current state will have A LOT of crosstalk as the traces return in each other which could be ruining the USB signal enough to not work correctly.

I would also like to comment on the USB-C connector, in its current states it's technically violating the USB standard since you don't have any pull-down resistors on the CC pins. The only reason it still works is probably due to luck that the hosts usb port you are using allows it to pull the standard power or some other limited amount or that you are using a USB-C to USB-A cable or such because then the CCs are probably left unconnected.

To sum up, I would suggest redoing the layout of this design as I suspect that it might be the problem from the given information. I would also as @Justme sugest to further check on the boards what's working or not, to eliminate other possible issues.

\$\endgroup\$
9
  • 2
    \$\begingroup\$ I bet the memory chip ground pin is connected, the picture just does not contain a ground plane. \$\endgroup\$
    – Justme
    Commented Mar 8, 2023 at 13:13
  • 1
    \$\begingroup\$ Are you sure about the USB differential pair? From the layout it looks like you have used 0.3mm width for the differential pair then the spacing between them would have to be only 0.07mm to achieve a differential impedance of 90 ohms, (assuming its routed as a coupled differential pair which seems to be the case). 0.07mm spacing is beyond the capabilities of most low cost fabs, therefore, my doubt about the traces being impedance matched. Also since you don't have a solid ground plane under the diff pair their characteristic impedance will change throughout the trace. \$\endgroup\$ Commented Mar 9, 2023 at 14:55
  • 1
    \$\begingroup\$ Return path refers to where you signals current returns, I can try to explain it but I would suggest reading this article instead as I feel it gives a better explanation than I can: nwengineeringllc.com/article/… \$\endgroup\$ Commented Mar 9, 2023 at 15:01
  • 1
    \$\begingroup\$ And I agree with you that the CC pin is probably no the issue here as you get power to the board, but I would still fix it at least for the next iteration of the board. \$\endgroup\$ Commented Mar 9, 2023 at 15:02
  • 1
    \$\begingroup\$ Yes, I am sure. If that was the case then how come I am able to detect 2040 as a mass storage device with absolutely no error. USB routes are not the issue here too. :( \$\endgroup\$
    – Samiksha
    Commented Mar 10, 2023 at 4:39
2
\$\begingroup\$

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 everyone for responding and helping. It means a lot.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ Well done for finding it. It can be very difficult when you have manufacturing errors, but they are at least an explanation for why only some of the units works. Do you think there was any way to change the design to avoid manufacturing faults or it's just poor work? \$\endgroup\$
    – jonathanjo
    Commented Mar 29, 2023 at 9:37
  • \$\begingroup\$ Good point, there should be maybe. I mean we needed to re-solder the chip again and again to make it working. We would like to explore the design side to avoid such manufacturing faults, if this persist we will try experimenting on this side. \$\endgroup\$
    – Samiksha
    Commented Mar 30, 2023 at 10:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.