It seems like this question is quite common in this forum, but nonetheless I'm having the same problem with no solution online resolving it. I'm more inclined now to say that this is now a fault of my own design, but there's one thing I'm still a bit suspect on.
Context: RP2040 custom board, it powers on, receives ~3.3V and generates ~1.1V. Oscillator (ABM8-272-T3) outputs consistent 12MHz. Flash chip I'm using (W25Q128JVSIQ TR) successfully shows the standard initial files (.htm file redirecting to raspberrypi.com, and a .txt file giving information about the chip). My input voltage source is constant with no fluctuations. I've reflowed my board, changed out the chips, still same issue. When I try to load on any uf2 file (both using Windows drag-and-drop and picotool on ubuntu), the board "flashes", reboots and goes back into BOOTSEL mode.
The thing I'm suspect on is the flash chip itself. This is supposed to be a 128Mbit, 16MB chip which the RP2040 should be able to support. When I plug it into my Windows machine, it shows up as 128MB, which is a little suspicious, but maybe I'm misunderstanding something about the capacity. Through searching, it seems like changing the oscillator delay multiplier and/or using a generic (03h) second stage bootloader should help for this specific chip. But when I build a simpler blinker.c file with and without those parameter changes, my board flashes at the same speed. I should think that using the generic second stage bootloader should make it slower to flash, so maybe I'm not building my project properly? Anyways I'm hoping my issue is the flash chip is incompatible.
I've included my schematic, PCB art and my CMakeLists.txt below. Re: the design itself, what I'm worried is my flash chip is too far away from the RP2040 itself. But given that it still boots and shows as a drive, I'm not sure it killed my design? The oscillator itself may also be far away, but it delivers a consistent oscillation. Maybe it's wishful thinking
. Note my board is much more complex than just the RP2040; there are a few other ICs and subsystems on the board which aren't included; I'm just focusing on the RP2040.
![Image]()
![Image]()
![Image]()
Context: RP2040 custom board, it powers on, receives ~3.3V and generates ~1.1V. Oscillator (ABM8-272-T3) outputs consistent 12MHz. Flash chip I'm using (W25Q128JVSIQ TR) successfully shows the standard initial files (.htm file redirecting to raspberrypi.com, and a .txt file giving information about the chip). My input voltage source is constant with no fluctuations. I've reflowed my board, changed out the chips, still same issue. When I try to load on any uf2 file (both using Windows drag-and-drop and picotool on ubuntu), the board "flashes", reboots and goes back into BOOTSEL mode.
The thing I'm suspect on is the flash chip itself. This is supposed to be a 128Mbit, 16MB chip which the RP2040 should be able to support. When I plug it into my Windows machine, it shows up as 128MB, which is a little suspicious, but maybe I'm misunderstanding something about the capacity. Through searching, it seems like changing the oscillator delay multiplier and/or using a generic (03h) second stage bootloader should help for this specific chip. But when I build a simpler blinker.c file with and without those parameter changes, my board flashes at the same speed. I should think that using the generic second stage bootloader should make it slower to flash, so maybe I'm not building my project properly? Anyways I'm hoping my issue is the flash chip is incompatible.
I've included my schematic, PCB art and my CMakeLists.txt below. Re: the design itself, what I'm worried is my flash chip is too far away from the RP2040 itself. But given that it still boots and shows as a drive, I'm not sure it killed my design? The oscillator itself may also be far away, but it delivers a consistent oscillation. Maybe it's wishful thinking




Code:
cmake_minimum_required(VERSION 3.13)set(PICO_BOARD_HEADER_DIRS ${CMAKE_SOURCE_DIR})set(CMAKE_C_STANDARD 11)set(CMAKE_CXX_STANDARD 17)# initialize the SDK based on PICO_SDK_PATH# note: this must happen before project()include(pico_sdk_import.cmake)project(blink VERSION 1.0.0)# initialize the Raspberry Pi Pico SDKset(PICO_CXX_ENABLE_EXCEPTIONS 1)pico_sdk_init()add_executable(blink src/blink.cpp)# Add pico_stdlib library which aggregates commonly used featurestarget_link_libraries(blink pico_stdlib)pico_add_extra_outputs(blink)target_compile_definitions(blink PUBLICPICO_XOSC_STARTUP_DELAY_MULTIPLIER=128)# pico_set_boot_stage2(blink boot2_generic_03h)# DO NOT REMOVE - Pi Pico Reset Backdoorpico_enable_stdio_usb(blink 1)
Statistics: Posted by bzzt_ — Tue Jan 21, 2025 9:54 pm