armhub.dev
Vendors · 43 pages
Vendors

Nordic Semiconductor (nRF52, nRF53, nRF54)

The Bluetooth-first Cortex-M family — softdevice architecture, EasyDMA, the nRF Connect SDK / Zephyr migration.

3 min read · 680 wordsupdated · May 12, 2026

Nordic is the default for Bluetooth Low Energy. Their nRF52 and nRF53 families ship in essentially every BLE consumer device — earbuds, wearables, beacons, sensor tags. The hardware is excellent and uniquely BLE-oriented; the software story has gone through two generations (legacy "nRF5 SDK" → modern "nRF Connect SDK", aka Zephyr-based).

The chips

FamilyApplication coreNetwork coreNotable
nRF52810/811Cortex-M4sharedEntry BLE, no FPU
nRF52832Cortex-M4FsharedMainstream BLE 5 — most popular
nRF52833Cortex-M4Fshared+ Bluetooth Mesh, 802.15.4
nRF52840Cortex-M4FsharedTop of 52 line — BLE 5, USB, Thread/Zigbee
nRF5340Cortex-M33Cortex-M33Dual-core, TrustZone, BLE 5.2
nRF54L15/H20Cortex-M33RISC-V (54H) / shared (54L)New gen, lower power, RF improvements
nRF9160 / nRF91Cortex-M33modem (M33)Cellular LTE-M / NB-IoT
nRF7002(companion)—Wi-Fi 6 coprocessor

The nRF52840 has been the dominant chip in connected consumer products for the last 5+ years. The nRF5340 is its successor for new designs (dual-core architecture isolates the application from the BLE stack).

nRF52840-class SoC layout
corememoryradioperiph
SVCALLDMACortex-M4F64 MHz · FPU · DSPSoftdeviceBLE stack, lowest flash + RAM partition2.4 GHz radioBLE 5 / 802.15.4 / ThreadFlash1 MB (SD low, app above)SRAM256 KB (SD low, app above)EasyDMA + PPIevery peripheral does DMAUSB 2.0 FSnative on nRF52840UARTE / SPIM / TWIMEasyDMA endpointsCryptoCell 310AES / ECC / SHA accelerator
The softdevice owns the lowest flash and RAM partition plus the highest-priority IRQs; your application runs above it and reaches the BLE stack only through the SVCALL ABI. EasyDMA and PPI let peripherals run autonomously while the M4F sleeps.

The Softdevice — for nRF52

Nordic's BLE stack runs as a softdevice: a precompiled binary that occupies the lower portion of flash and the lower portion of RAM. Your application links against an API but doesn't see the softdevice's source. The softdevice gets the highest interrupt priorities; your code must use lower priorities.

0x00000000 ┌───────────────────┐
           │   Softdevice      │  ~150 KB BLE stack
0x00027000 ├───────────────────┤
           │   Your app code   │
           │   Your app data   │
0x20000000 ├───────────────────┤
           │   Softdevice RAM  │  ~8 KB
0x20002000 ├───────────────────┤
           │   Your app RAM    │
0x2003FFFF └───────────────────┘

It worked. It also tied every project tightly to Nordic's APIs.

nRF Connect SDK — the Zephyr migration

Around 2019 Nordic pivoted to Zephyr as the canonical SDK for new chips (53, 54, 91). The nRF Connect SDK is essentially Zephyr + Nordic-specific drivers + a Bluetooth host stack (BLE controller in firmware for the nRF53/54 network core, software stack on the app core).

For new designs:

  • nRF52 — still supported by the legacy nRF5 SDK, but Nordic recommends nRF Connect SDK (Zephyr).
  • nRF53 / nRF54 / nRF91 — nRF Connect SDK only.

If you're starting fresh, learn the Zephyr way. The legacy SDK gets bug fixes but no new features.

EasyDMA — every peripheral does DMA

Nordic's defining peripheral feature: every peripheral that benefits from DMA has DMA built in, not as a separate controller. You don't configure a DMA channel; you tell the peripheral the buffer address.

// UARTE — UART with EasyDMA
NRF_UARTE0->TXD.PTR = (uint32_t)tx_buf;
NRF_UARTE0->TXD.MAXCNT = sizeof(tx_buf);
NRF_UARTE0->TASKS_STARTTX = 1;
// Done. UARTE will DMA the buffer out.

Same for SPIM, TWIM (I²C), SAADC, PWM, RADIO. Simplifies code dramatically — no DMA controller setup, no request mapping table.

PPI / DPPI — peripheral interconnect

The Programmable Peripheral Interconnect lets you wire a peripheral event directly to another peripheral's task, with no CPU involvement:

// When TIMER0 hits compare 0, trigger SAADC sample
NRF_PPI->CH[0].EEP = (uint32_t)&NRF_TIMER0->EVENTS_COMPARE[0];
NRF_PPI->CH[0].TEP = (uint32_t)&NRF_SAADC->TASKS_SAMPLE;
NRF_PPI->CHENSET = (1 << 0);

CPU stays asleep. The timer fires the ADC sample. ADC's EVENT_END (via another PPI channel) triggers a UART transfer. Entire chains of behaviour without an ISR.

The successor on nRF53/54 is DPPI (Distributed PPI), which works the same conceptually but separates the event matrix per power domain.

The 2.4 GHz radio

A unique hardware block on every nRF52/53/54. Not just BLE — it can be configured for:

  • BLE 4.x and 5.x.
  • IEEE 802.15.4 (Thread, Zigbee, Matter).
  • Proprietary 2.4 GHz protocols (Nordic's Gazell / ESB).
  • Bluetooth Mesh.

A single nRF52840 can host Matter over Thread (802.15.4) and BLE provisioning at the same time by time-multiplexing the radio. The softdevice / network-core firmware handles the multiplexing.

Power consumption

Nordic chips are sold on low average power. Typical numbers (nRF52840):

  • System OFF: 0.3 µA — only retention RAM + RTC, full wake from RESET.
  • System ON, idle: 1.5 µA — RAM retained, RTC running.
  • Radio TX at 0 dBm: ~5 mA.
  • Radio RX: ~5 mA.
  • CPU active at 64 MHz: ~3 mA.

A coin-cell-powered beacon advertising every second can run for 2+ years on a CR2032. Sensor tags wake on accelerometer interrupts and stay below 10 µA average.

Boot and bootloader

Nordic's standard pattern:

  • MBR (Master Boot Record) — small immutable bootloader at flash start.
  • Bootloader — typically MCUboot (or Nordic's legacy DFU bootloader). Verifies signatures, swaps slots for A/B firmware update.
  • Softdevice (52-series) or network core firmware (53/54).
  • Application.

OTA DFU over BLE is well-supported and standardised across Nordic chips.

See also