The nRF52840 contains 1 MB of flash and 256 kB of RAM that can be used for code and data storage.

The CPU and the peripherals having EasyDMA can access memory via the AHB multilayer interconnect.

The CPU is also able to access peripherals via the AHB multilayer interconnect, as illustrated in Figure 1.

Figure 1. Memory layout

See AHB multilayer and EasyDMA for more information about the AHB multilayer interconnect and the EasyDMA.

The same physical RAM is mapped to both the Data RAM region and the Code RAM region. It is up to the application to partition the RAM within these regions so that one does not corrupt the other.

RAM - Random access memory

The RAM interface is divided into 9 RAM AHB slaves.

RAM AHB slave 0-7 is connected to 2x4 kB RAM sections each and RAM AHB slave 8 is connected to 6x32 kB sections, as shown in Figure 1.

Each of the RAM sections have separate power control for System ON and System OFF mode operation, which is configured via RAM register (see the POWER — Power supply).

Flash - Non-volatile memory

The flash can be read an unlimited number of times by the CPU, but it has restrictions on the number of times it can be written and erased and also on how it can be written.

Writing to flash is managed by the non-volatile memory controller (NVMC), see NVMC — Non-volatile memory controller.

The flash is divided into 256x4 kB pages that can be accessed by the CPU via both the ICODE and DCODE buses as shown in Figure 1. Each page is divided into 8 blocks.

Memory map

The complete memory map is shown in Figure 2. As described in Memory, Code RAM and the Data RAM are the same physical RAM.

Figure 2. Memory map


Table 1. Instantiation table
ID Base Address Peripheral Instance Description
0 0x40000000 CLOCK CLOCK

Clock control

0 0x40000000 POWER POWER

Power control

1 0x40001000 RADIO RADIO

2.4 GHz radio

2 0x40002000 UART UART0

Universal asynchronous receiver/transmitter


2 0x40002000 UARTE UARTE0

Universal asynchronous receiver/transmitter with EasyDMA, unit 0

3 0x40003000 TWIM TWIM0

Two-wire interface master 0

3 0x40003000 TWIS TWIS0

Two-wire interface slave 0

3 0x40003000 SPIS SPIS0

SPI slave 0

3 0x40003000 SPI SPI0

SPI master 0


3 0x40003000 SPIM SPIM0

SPI master 0

3 0x40003000 TWI TWI0

Two-wire interface master 0


4 0x40004000 TWI TWI1

Two-wire interface master 1


4 0x40004000 SPIM SPIM1

SPI master 1

4 0x40004000 SPI SPI1

SPI master 1


4 0x40004000 TWIM TWIM1

Two-wire interface master 1

4 0x40004000 TWIS TWIS1

Two-wire interface slave 1

4 0x40004000 SPIS SPIS1

SPI slave 1

5 0x40005000 NFCT NFCT

Near field communication tag

6 0x40006000 GPIOTE GPIOTE

GPIO tasks and events

7 0x40007000 SAADC SAADC

Analog to digital converter

8 0x40008000 TIMER TIMER0

Timer 0

9 0x40009000 TIMER TIMER1

Timer 1

10 0x4000A000 TIMER TIMER2

Timer 2

11 0x4000B000 RTC RTC0

Real-time counter 0

12 0x4000C000 TEMP TEMP

Temperature sensor

13 0x4000D000 RNG RNG

Random number generator

14 0x4000E000 ECB ECB

AES electronic code book (ECB) mode block encryption

15 0x4000F000 CCM CCM

AES counter with CBC-MAC (CCM) mode block encryption

15 0x4000F000 AAR AAR

Accelerated address resolver

16 0x40010000 WDT WDT

Watchdog timer

17 0x40011000 RTC RTC1

Real-time counter 1

18 0x40012000 QDEC QDEC

Quadrature decoder

19 0x40013000 COMP COMP

General purpose comparator

19 0x40013000 LPCOMP LPCOMP

Low power comparator

20 0x40014000 SWI SWI0

Software interrupt 0

20 0x40014000 EGU EGU0

Event generator unit 0

21 0x40015000 EGU EGU1

Event generator unit 1

21 0x40015000 SWI SWI1

Software interrupt 1

22 0x40016000 SWI SWI2

Software interrupt 2

22 0x40016000 EGU EGU2

Event generator unit 2

23 0x40017000 EGU EGU3

Event generator unit 3

23 0x40017000 SWI SWI3

Software interrupt 3

24 0x40018000 EGU EGU4

Event generator unit 4

24 0x40018000 SWI SWI4

Software interrupt 4

25 0x40019000 EGU EGU5

Event generator unit 5

25 0x40019000 SWI SWI5

Software interrupt 5

26 0x4001A000 TIMER TIMER3

Timer 3

27 0x4001B000 TIMER TIMER4

Timer 4

28 0x4001C000 PWM PWM0

Pulse width modulation unit 0

29 0x4001D000 PDM PDM

Pulse Density modulation (digital microphone) interface

30 0x4001E000 ACL ACL

Access control lists

30 0x4001E000 NVMC NVMC

Non-volatile memory controller

31 0x4001F000 PPI PPI

Programmable peripheral interconnect

32 0x40020000 MWU MWU

Memory watch unit

33 0x40021000 PWM PWM1

Pulse width modulation unit 1

34 0x40022000 PWM PWM2

Pulse width modulation unit 2

35 0x40023000 SPIS SPIS2

SPI slave 2

35 0x40023000 SPIM SPIM2

SPI master 2

35 0x40023000 SPI SPI2

SPI master 2


36 0x40024000 RTC RTC2

Real-time counter 2

37 0x40025000 I2S I2S

Inter-IC sound interface

38 0x40026000 FPU FPU

FPU interrupt

39 0x40027000 USBD USBD

Universal serial bus device

40 0x40028000 UARTE UARTE1

Universal asynchronous receiver/transmitter with EasyDMA, unit 1

41 0x40029000 QSPI QSPI

External memory interface

43 0x4002B000 SPIM SPIM3

SPI master 3

45 0x4002D000 PWM PWM3

Pulse width modulation unit 3

0 0x50000000 GPIO GPIO

General purpose input and output


0 0x50000000 GPIO P0

General purpose input and output, port 0

0 0x50000300 GPIO P1

General purpose input and output, port 1


CryptoCell subsystem control interface

N/A 0x10000000 FICR FICR

Factory information configuration

N/A 0x10001000 UICR UICR

User information configuration


Documentation feedback | Developer Zone | Updated 2016-12-05