Releases: dunknowcoding/ArduinoNRF
v0.1.0
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
NrfRtcdriver 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 ONsleep()/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
NrfNfcTagdriver 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 correctorNrfTemp— internal die temperature sensorNrfWdt— watchdog with pause-on-CPU-haltNrfQdec— quadrature decoder for rotary encodersNrfTimer— TIMER0..TIMER4 with 6 compare channels eachNrfNvmc— direct flash page-erase + word-writeNrfPpi— Programmable Peripheral InterconnectNrfEgu— software event generator + SWI on 6×16 channelsNrfComp— analog comparator vs VDD*fraction referenceNrfMwu— memory watch unit for buffer-overflow detectionNrfGpioteOut— 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.pydrivesadafruit-nrfutilcross-platform, and
usb_gdbstub_bridge.pyis 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 stacklibraries/CC310/— Nordic CryptoCell 310 binary cryptolibraries/Zigbee/— Zboss + nrf-802154 Zigbee 3.0 stacklibraries/Thread/— OpenThread + nrf-802154 Thread mesh (Matter target)
Roadmaps live under docs/platform/:
NIMBLE_INTEGRATION_PLAN.mdCC310_INTEGRATION_PLAN.mdZIGBEE_INTEGRATION_PLAN.mdTHREAD_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 userSerialon 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
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)
- File -> Preferences -> Additional Boards Manager URLs, add:
https://raw.githubusercontent.com/dunknowcoding/ArduinoNRF/main/package_arduinonrf_index.json - Tools -> Board -> Boards Manager, search ArduinoNRF, click Install.
- 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 through0-10-20-...-100with live KB counts, e.g.
NIUS ==========>........... 50% Uploading 40/79.5 KB. - The 1200 bps touch runs on a runspace (not a cold
Start-Jobprocess) and
COM-presence polling uses the instantGetPortNames()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
NiusRobotLabbanner 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-nrfutilships a Windows binary in this release;
the macOS/Linux binary will be added in a later release (on those hosts,
installadafruit-nrfutilvia pip and pointNIUS_ADAFRUIT_NRFUTIL_EXE
at it for now). - Tool dependencies (arm-none-eabi-gcc, dfu-util, openocd) are fetched
automatically by Boards Manager.