With SWD or JTAG you don't need to power the device for it to flash. But you do have to power the device somehow while flashing. I use JTAG and SWD and built a board with a jumper to either power it from the ST-link or use the power on the board (I think you might be able to buy these).
Its probably better to not use both to power because the regulators on the board and the flash tool are not going to be exactly the same voltage and you could get power flowing from one to the other. So put an option on the board or flash tool to select use.
![screenshot showing the USB C connector](https://i.stack.imgur.com/UdZTh.png)
The center four pins (highlighted), from top to bottom, are:
- B7 - Dn2
- A6 - Dp1
- A7 - Dn1
- B6 - Dp2
i.e: You've connected the first pair D+ and D- together, and the second pair's D+ and D- together.
I noticed I made a mistake where I accidentally connected my USB C data P1 to N1 and P2 to N2 but I managed to remove the connection by scratching off the copper trace between them then checking for continuity to verify the disconnection and seem to still have an issue with my USB communication.
I'm not fully clear on what you've done here, but it won't be possible to make this functional by only cutting traces - you'll at best end up with one leg or the other... don't forget that USB C will only connect one pair at a time, depending on the orientation, so you can't use A7 (Dn1) and B6 (Dp2) together as a pair. Please feel free to clarify if I've made a bad assumption!
I believe there might be an impedance mismatch
You should still see the host detect the device, even with a mismatch - you can do that with just a resistor. It's possible you'll see this with (what I presume to be) your one-leg-only connection if you rotate the USB C connector.
Separately, as feedback, note that your RP2040 has a poor ground connection... the thermals here are doing you a disservice - if you can't remove them, then definitely try to make them larger.
![screenshot showing very narrow connections to the wider ground plane](https://i.stack.imgur.com/xt1j6.png)
Best Answer
No, you don't need to use USB. The SWD pins (24, 25) can be used to load firmware into SRAM or external flash memory.
Strictly speaking, according to the documentation, you don't even need an external oscillator or external flash memory. The RP2040 has quite a bit of SRAM which can be used for data and code. SRAM is volatile though, so the applications are limited. Also it has an internal oscillator. Of course an external clock can be necessary, depending what you want to do.