NRF52840: Difference between revisions

From RevSpace
Jump to navigation Jump to search
No edit summary
No edit summary
Line 15: Line 15:
* built-in support for quadrature counting
* built-in support for quadrature counting
* looks like it can run arduino too
* looks like it can run arduino too
However the eco-system of inexpensive boards is a complicated landscape:
* AliExpress sellers offer "promicro" and "supermini" board with unclear characteristics
* LEDs are often swapped (blue = hardware charge, red = software led?)
* Various firmware upload interface options (which one to use?):
** Using nrfutil, sends a .zip file containing various parts
** Serial DFU, used by nrfutil?
** Mass storage UF2, possibly activated using the double-reset
** SWD debug interface (requires soldering!)
* Confusing situation regarding bootloaders:
** Most boards seem to come with a modified version of a bootloader meant for another type of board
** Type of bootloader depends on type of firmware you want to run, "ZMK", Arduino using Arduino IDE, Arduino using platformio
** Space for "SoftDevice" needs to be reserved, what is this?
** Risk of accidentally overwriting the bootloader, with UF2 flash offsets sometimes being absolute, sometimes being relative
** Even multiple levels of bootloader? Like the normal one during application and another one using the double-reset method?


== Hardware ==
== Hardware ==
The boards I have are the "promicro" and "supermini".
The boards I have are the "promicro" and "supermini".
There is a 4-pad connector to program it using SWD (VDD/SWD/SDC/GND).
This can be used to write the bootloader for example.
The pads have a spacing of 1.5mm.
== Software ==


Links:
Links:
Line 25: Line 47:
* See also https://github.com/pdcook/nRFMicro-Arduino-Core
* See also https://github.com/pdcook/nRFMicro-Arduino-Core
* https://github.com/ICantMakeThings/Nicenano-NRF52-Supermini-PlatformIO-Support
* https://github.com/ICantMakeThings/Nicenano-NRF52-Supermini-PlatformIO-Support


My promicro board currently has bootloader 0.6.0:
My promicro board currently has bootloader 0.6.0:
Line 39: Line 63:
   SoftDevice: not found
   SoftDevice: not found
   Date: Jun 19 2021
   Date: Jun 19 2021
However the eco-system of inexpensive boards is a complicated landscape:
* AliExpress sellers offer "promicro" and "supermini" board with unclear characteristics
* LEDs are often swapped (blue = hardware charge, red = software led?)
* Various firmware upload interface options (which one to use?):
** Using nrfutil, sends a .zip file containing various parts
** Serial DFU, used by nrfutil?
** Mass storage UF2, possibly activated using the double-reset
** SWD debug interface (requires soldering!)
* Confusing situation regarding bootloaders:
** Most boards seem to come with a modified version of a bootloader meant for another type of board
** Type of bootloader depends on type of firmware you want to run, "ZMK", Arduino using Arduino IDE, Arduino using platformio
** Space for "SoftDevice" needs to be reserved, what is this?
** Risk of accidentally overwriting the bootloader, with UF2 flash offsets sometimes being absolute, sometimes being relative
** Even multiple levels of bootloader? Like the normal one during application and another one using the double-reset method?


Getting 'circuitpython' to work:
Getting 'circuitpython' to work:

Revision as of 19:59, 29 November 2025

Project NRF52840
File:Nopicture.jpg
Investigating Arduino on inexpensive NRF52840 boards
Status In progress
Contact bertrik
Last Update 2025-11-29

Intro

NRF52840 is potentially a very nice platform:

  • low-power. quick wake-up
  • inexpensive
  • decent amount of flash (1024k), RAM (256k) and CPU cycles (64 MHz)
  • support various radio protocols like zigbee, ble, thread, matter, enhanced shockburst
  • built-in support for quadrature counting
  • looks like it can run arduino too

However the eco-system of inexpensive boards is a complicated landscape:

  • AliExpress sellers offer "promicro" and "supermini" board with unclear characteristics
  • LEDs are often swapped (blue = hardware charge, red = software led?)
  • Various firmware upload interface options (which one to use?):
    • Using nrfutil, sends a .zip file containing various parts
    • Serial DFU, used by nrfutil?
    • Mass storage UF2, possibly activated using the double-reset
    • SWD debug interface (requires soldering!)
  • Confusing situation regarding bootloaders:
    • Most boards seem to come with a modified version of a bootloader meant for another type of board
    • Type of bootloader depends on type of firmware you want to run, "ZMK", Arduino using Arduino IDE, Arduino using platformio
    • Space for "SoftDevice" needs to be reserved, what is this?
    • Risk of accidentally overwriting the bootloader, with UF2 flash offsets sometimes being absolute, sometimes being relative
    • Even multiple levels of bootloader? Like the normal one during application and another one using the double-reset method?


Hardware

The boards I have are the "promicro" and "supermini".

There is a 4-pad connector to program it using SWD (VDD/SWD/SDC/GND). This can be used to write the bootloader for example. The pads have a spacing of 1.5mm.

Software

Links:


My promicro board currently has bootloader 0.6.0:

 UF2 Bootloader 0.6.0 lib/nrfx (v2.0.0) lib/tinyusb (0.10.1-41-gdf0cda2d) lib/uf2 (remotes/origin/configupdate-9-gadbb8c7)
 Model: nice!nano
 Board-ID: nRF52840-nicenano
 SoftDevice: not found
 Date: Jun 19 2021

My supermini board came with bootloader 0.6.0:

 UF2 Bootloader 0.6.0 lib/nrfx (v2.0.0) lib/tinyusb (0.10.1-41-gdf0cda2d) lib/uf2 (remotes/origin/configupdate-9-gadbb8c7)
 Model: nice!nano
 Board-ID: nRF52840-nicenano
 SoftDevice: not found
 Date: Jun 19 2021

Getting 'circuitpython' to work: