While debugging an EmberOne/00 board that wouldn't boot reliably (which turned out to be a soldering issue on the CC resistors), I started looking at the power-up sequencing and noticed a potential boot race between the RP2040 and its SPI flash.
The RP2040's power-on reset releases at ~1V1, at which point the bootrom immediately tries to read from the external SPI flash. But the W25Q16JV flash needs at least 2.7V to operate2. During a slow 3V3 ramp, the RP2040 could come out of reset and attempt a flash read well before the flash is ready, leading to a failed boot or unpredictable behavior.
Consider adding a voltage supervisor to hold the RP2040's RUN pin low until the 3V3 rail has stabilized.
Hardware version: v5 (9f75f0c)
While debugging an EmberOne/00 board that wouldn't boot reliably (which turned out to be a soldering issue on the CC resistors), I started looking at the power-up sequencing and noticed a potential boot race between the RP2040 and its SPI flash.
The RP2040's power-on reset releases at ~1V1, at which point the bootrom immediately tries to read from the external SPI flash. But the W25Q16JV flash needs at least 2.7V to operate2. During a slow 3V3 ramp, the RP2040 could come out of reset and attempt a flash read well before the flash is ready, leading to a failed boot or unpredictable behavior.
Consider adding a voltage supervisor to hold the RP2040's RUN pin low until the 3V3 rail has stabilized.
Hardware version: v5 (9f75f0c)
Footnotes
RP2040 datasheet, section 2.12.2.1 ↩
W25Q16JV datasheet, section 10.2 ↩