Hi,
I’m having trouble getting an ISP1807 (nRF52840) to run on a custom PCB, and I’m hoping someone here might recognize what I’m missing.
Hardware / setup
- Module: ISP1807 REV3 (nRF52840)
- Custom-designed PCB using ISP1807
- Reference board: Switch Science ISP1807 Breakout Board
スイッチサイエンス ISP1807搭載 nRF52840開発ボード - Programmer / debugger: SEGGER J-Link
- IDE: Arduino IDE
- Flashing tool: nRF Connect Programmer
J-Link connection, power, and basic wiring are confirmed to be OK.
What I want to do
- Write applications using Arduino IDE
- Flash the compiled hex using J-Link / nRF Connect Programmer
- Use SEGGER RTT for debug logs
- RTT should keep working after reset or power cycle
- The application itself is simple:
- control a few SPI devices
- basic BLE communication
Bootloader
I am using the bootloader provided on the Switch Science ISP1807 breakout board product page (link above).
I am not using any other third-party bootloaders.
Problem
Custom board: nothing runs
On my custom PCB, I tried flashing:
- the Switch Science bootloader
- an application hex built with Arduino IDE
using J-Link / nRF Connect Programmer.
Result:
- LED on P0.06 never turns on
- No visible sign that the MCU is running code
The LED and power wiring are fine (the LED lights if I pull the MCU pin to GND manually).
Breakout board: works fine
The same Arduino sketch, when written to the Switch Science breakout board via Arduino IDE, works perfectly:
- application runs
- RTT output works as expected
Manually flashing bootloader + app still fails
Even when I use:
- the Switch Science bootloader
- the exact same Arduino-built application hex
and flash both manually to the custom board, it still does not run.
but.
Arduino IDE → breakout board → extract hex → custom board → works
If I:
- Write the sketch to the Switch Science breakout board using Arduino IDE
- Use nRF Connect Programmer to save the full flash contents as a hex file
- Flash that hex file to my custom board
→ the application runs correctly on the custom board.
So the hardware itself seems OK.
It looks like there is some difference between:
- “bootloader + app flashed manually”
- and “a full flash image that originally came from Arduino IDE”
Questions
- On ISP1807 / nRF52840, are there any common reasons why:
- manually flashing a known-good bootloader + Arduino app does not run
- but copying a hex from a working board does run?
- When using Arduino as the development environment, what is the recommended way to:
- flash with J-Link
- use RTT reliably
- keep things working after reset and power cycling?
- If this cannot be solved by simply flashing “bootloader + app”:
- is it technically possible to reuse or reconstruct a bootloader-equivalent state based on a known-good board?
- for example, reusing everything except the application area, or using the working image as a baseline
- are there any major pitfalls or things I should be careful about?
This is purely for personal, non-commercial hobby use.
I’m just trying to avoid throwing away a custom PCB that took a lot of time and money to make.
Sorry if my English is strange — I used a translation tool.
Please let me know if anything is unclear or incorrectly written.
Thanks in advance for any advice or hints.
