ISP1807 (nRF52840) – Bootloader + Arduino app does not run on custom board, but works when hex is copied from a working board

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
    https://www.switch-science.com/products/6100
  • 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.

Parents Reply Children
Related