Skip to content

Releases: dunknowcoding/ArduinoNRF

v0.1.0

29 May 00:27

Choose a tag to compare

ArduinoNRF v0.1.0

First minor-version release. Big additions across the board: a complete
multi-module PWM facade, RTC drivers, a full power-management surface, NFC-A
tag emulation, all the small nRF52840 peripherals (TRNG/Temp/WDT/QDEC/
TIMER/NVMC/PPI/EGU/COMP/MWU/GPIOTE-out), media-peripheral drivers (QSPI/
PDM/I2S), cross-platform Linux/macOS upload and debug paths, and corrected
real-board identities for every supported clone family. Plus skeleton
libraries + detailed integration roadmaps for the four big stacks
(NimBLE, CC310, Zigbee, Thread).

Peripherals

  • PWM: extended from 1 module / 4 channels to all 4 PWM modules / 16
    channels with independent frequency groups, per-pin polarity, and
    software-dead-time complementary pairing. New Tools → PWM speed menu
    selects the silent-default carrier (Auto / High-speed / Low-speed).
  • RTC: new NrfRtc driver for RTC0/1/2 with 4 compare channels each
    and overflow IRQ. LFCLK-clocked so it survives System ON sleep.
  • Power: full power-management API in NrfPower.h:
    System ON sleep() / sleepWfe() / sleepMs(), low-power vs constant-
    latency sub-modes, DCDC enable, RAM retention bitmap, SystemOFF with
    GPIO/NFC/USB wake source configuration, reset-reason diagnostics.
  • NFC-A Tag: new NrfNfcTag driver for NFC Forum Type 2 tag emulation.
    Auto-collision-resolution, beginUri(url) / beginText(text, lang) /
    beginRawNdef(ndef), factory-unique UID, read/field counters.
  • Small bottom-level drivers (all in NrfPeripherals.h):
    • NrfRng — hardware TRNG with bias corrector
    • NrfTemp — internal die temperature sensor
    • NrfWdt — watchdog with pause-on-CPU-halt
    • NrfQdec — quadrature decoder for rotary encoders
    • NrfTimer — TIMER0..TIMER4 with 6 compare channels each
    • NrfNvmc — direct flash page-erase + word-write
    • NrfPpi — Programmable Peripheral Interconnect
    • NrfEgu — software event generator + SWI on 6×16 channels
    • NrfComp — analog comparator vs VDD*fraction reference
    • NrfMwu — memory watch unit for buffer-overflow detection
    • NrfGpioteOut — GPIOTE output channels for PPI-driven pin transitions
  • Media peripherals (in NrfMediaPeripherals.h, API complete but
    unverified — needs external hardware): NrfQspi, NrfPdm, NrfI2s.

Cross-platform & compatibility

  • Linux + macOS are now first-class targets for the upload + debug paths:
    upload.py drives adafruit-nrfutil cross-platform, and
    usb_gdbstub_bridge.py is a Python port of the Windows PowerShell
    bridge. Linux udev rules + setup instructions in
    docs/COMPATIBILITY.md.
  • Board identities corrected against upstream sources. nice!nano /
    SuperMini / nRFMicro / XIAO / Pitaya Go USB VID:PIDs now match Adafruit /
    Seeed / Makerdiary / joric upstream; the nRF52840 USB Dongle is flagged
    as Nordic Open DFU (pipeline-incompatible); Mini and generic dev-board
    fall back to auto-detect.

Multi-session work skeletons + roadmaps

Each comes with a vendor README listing the source repos / SDK paths to
drop in, plus a roadmap doc sized at NimBLE-style milestones:

  • libraries/NimBLE/ — Apache Mynewt NimBLE BLE stack
  • libraries/CC310/ — Nordic CryptoCell 310 binary crypto
  • libraries/Zigbee/ — Zboss + nrf-802154 Zigbee 3.0 stack
  • libraries/Thread/ — OpenThread + nrf-802154 Thread mesh (Matter target)

Roadmaps live under docs/platform/:

  • NIMBLE_INTEGRATION_PLAN.md
  • CC310_INTEGRATION_PLAN.md
  • ZIGBEE_INTEGRATION_PLAN.md
  • THREAD_INTEGRATION_PLAN.md

Verified on hardware (AliExpress ProMicro nRF52840 clone, COM3 via J-Link)

  • Hands-free upload, no manual reset, multi-COM-cycle.
  • Single-USB-cable GDB-stub debug (breakpoints, step in/over/out,
    registers, memory, data watchpoints, pause / halt, peripheral SVD reads,
    concurrent user Serial on the second CDC).
  • Dual-CDC concurrency (debug + user-Serial on the same cable).
  • PWM multi-module allocation (caught m0 + m1 simultaneous via SWD).
  • All 8 example sketches compile clean on the verified target.

Upgrade notes

If you're upgrading from 0.0.1, no API-level breakage — all
existing analogWrite / Serial / Wire / SPI etc. surfaces are
backward-compatible. New optional features (multi-module PWM frequency,
per-pin polarity, complementary pairing) are additive. The Tools → PWM speed menu defaults to "Auto" which behaves like 0.0.1.

v0.0.1

20 May 16:32

Choose a tag to compare

Release Notes - v0.0.1

First public release of the ArduinoNRF board library for nRF52840 /
nRF52833 boards, with first-class support for the AliExpress ProMicro
nRF52840 clone.

Install (Arduino IDE 2.x)

  1. File -> Preferences -> Additional Boards Manager URLs, add:
    https://raw.githubusercontent.com/dunknowcoding/ArduinoNRF/main/package_arduinonrf_index.json
    
  2. Tools -> Board -> Boards Manager, search ArduinoNRF, click Install.
  3. Select Tools -> Board -> ArduinoNRF -> AliExpress ProMicro nRF52840.

Highlights

Button-less, one-shot reflash on a single USB cable

Two consecutive compile + upload cycles work on the same single SERVICE
CDC COM (e.g. COM3) without a manual reset between them. The clone shares
USB VID:PID 0x239A:0x00B3 between its runtime and bootloader, which used
to make the 1200 bps touch + serial DFU flow stall. The fix lives in three
coordinated firmware patches in NrfUsbd.cpp (EP0 OUT EasyDMA trigger, EP0
direction routing by internal state, and a sticky touch-confirm latch), plus
a wildcard serial-DFU FWID so the package matches the no-SoftDevice
bootloader on the first attempt. See
docs/platform/USB_1200_TOUCH_V1_FIX.md.

Fast, byte-accurate upload console

  • The progress bar tracks real transferred bytes (one DFU frame = 512 B)
    and steps through 0-10-20-...-100 with live KB counts, e.g.
    NIUS ==========>........... 50% Uploading 40/79.5 KB.
  • The 1200 bps touch runs on a runspace (not a cold Start-Job process) and
    COM-presence polling uses the instant GetPortNames() instead of slow WMI,
    so the board enters the bootloader on the first touch and the whole upload
    is ~30% faster end to end.
  • Output stays quiet by default: a slant NiusRobotLab banner once, the
    progress bar, then a short summary (total time + soft-reset confirmation).
    All internal diagnostics are gated behind verbose upload
    (NIUS_UPLOAD_VERBOSE=1). No double-printed lines, no Python tracebacks in
    the normal path. Pure ASCII, so it renders under any console codepage.

One-click Debug in Arduino IDE 2 (single USB cable)

Select Build Options -> USB CDC GDB stub for IDE 2 Debug and press the
Debug button. A native launcher EXE (usb_gdbstub_server.exe) stands in for
openocd - it must be a real .exe because modern Node refuses to spawn
.cmd/.bat files, so cortex-debug could never launch the old wrapper. It
parses the gdb port cortex-debug assigns and starts the host-side
TCP<->serial bridge on it; the bridge flushes its "Listening on port" line so
cortex-debug attaches without timing out, then forwards the firmware's GDB
stub. You get breakpoints (Cortex-M4 FPB, 6 hardware breakpoints),
single-step, and the Variables / Registers panes. A stale bridge from a
previous session is evicted automatically. See
docs/platform/ARDUINO_IDE2_USB_GDBSTUB.md.

Concise Tools menus

Menu Options
Bootloader Auto-detect, Serial DFU no BLE [promicroserialnosd], Serial DFU with BLE [promicroserial], UF2 drive ...
USB Serial (CDC) Enabled / Disabled
USB DFU Enabled / Disabled
Upload via USB bootloader / CMSIS-DAP SWD
Flash 1 MB internal
SRAM 256 KB
Build Options Release, Debug symbols, USB CDC GDB stub for IDE 2 Debug

Portable tooling

upload.ps1 hard-codes no developer-specific paths. adafruit-nrfutil is
bundled as a Boards-Manager tool (no Conda / pip needed); if you prefer your
own, it is also located from NIUS_ADAFRUIT_NRFUTIL_EXE, then PATH, then the
python.org per-user Scripts directories.

Supported boards

AliExpress ProMicro nRF52840 (reference), nice!nano v2, SuperMini
nRF52840, nRFMicro nRF52840, Mini nRF52840, XIAO-like nRF52840, Generic
nRF52840 / nRF52833 dev boards, Pitaya Go nRF52840, nRF52840 USB Dongle.

Requirements / notes

  • Arduino IDE 2.x (or arduino-cli).
  • The bundled adafruit-nrfutil ships a Windows binary in this release;
    the macOS/Linux binary will be added in a later release (on those hosts,
    install adafruit-nrfutil via pip and point NIUS_ADAFRUIT_NRFUTIL_EXE
    at it for now).
  • Tool dependencies (arm-none-eabi-gcc, dfu-util, openocd) are fetched
    automatically by Boards Manager.