RP2040 Custom PCB – Troubleshooting BOOTSEL Issues

hardwarepcb

I designed a PCB that uses the RP2040 microcontroller. I just received it and wanted to power it up and put my code onto it, but it doesn't seem to work fine. I am struggling to find out what could be the reason, since there are so many possibilities. Here's the schematic and a screenshot from KiCad with the PCB:

Schematic

PCB

(I used a power plane on the top layer to get the power everywhere, I removed it here so it is clear how the traces were made. This is my first design, so any advices regarding the layout would also be greatly appreciated.)

It seems to be powered just fine, I verified it with a multimeter and components are getting power, but when I try to go into BOOTSEL mode (by connecting FLASH_BOOT in J4 to ground and restarting), it doesn't show up on my PC as a USB mass storage device. I have a special connector with USB- and USB+ pins exposed (J4), which I connect to my PC through a breakout board with an USB-A plug (like this one: https://www.pololu.com/product/2585). I think maybe this is the part where I got something wrong – I think the microcontroller is working fine, but the USB connection is not working properly.

Any help would be greatly appreciated.

Best Answer

Just a few comments on your design, which may or may not be the root cause of your problem.

I'll refer to the official guide.

  • you've exiled the decoupling capacitors (C1-C11) to a corner of the board, which sort of defeats the purpose: each decoupling capacitor is supposed to serve one specific pin of the RP2040, maybe two adjacent pins if space is tight. They're not meant to graze all together in the shadow of a tree at the other end of the field ;-) This means the VCC trace between each capacitor and its corresponding pin should be direct (not taking any detours through vias or around another part) and short (2-3 millimetres max, ideally). Refer to section 2.1.2 and 2.1.3, and note the comments re: pin 44 and 45 on figure 5.

  • The "debug reset" section doesn't look right. How can the RESTART signal affect the RUN signal when that one is directly tied to VCC? It looks like R8 and C15 where meant to be some sort of debouncing filter, but the schematic is probably incorrect and these two parts (R and C) are also located at different ends of the board when they should be next to each other.

  • There is no impedance control on the USB data lines (see section 2.4.1). This is potentially problematic although it's hard to say whether it's fatal on this particular design. Cabling between J2 and the pololu breakout board could also be an issue if D+ and D- are not twisted together.

  • Crystal oscillator: is the part ref (TXC 7M1200044) correct? According to the datasheet, the crystal is between pins 1 and 3, not 1 and 2. KiCad has several generic crystal symbols depending on the pin configuration, you may have picked the wrong one. That would definitely be fatal ;-)

Related Topic