The nRF52820 contains 256 kB of flash memory and 32 kB of RAM that can be used for code and data storage.
The CPU and peripherals with EasyDMA can access memory via the AHB multilayer interconnect. In additon, peripherals are accessed by the CPU via the AHB multilayer interconnect, as shown in the following figure.
See AHB multilayer and EasyDMA for more information about the AHB multilayer interconnect and 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.
The RAM interface is divided into four RAM AHB slaves.
RAM AHB slaves 0 to 3 are connected to two 4 kB RAM sections each, as shown in Memory layout.
Each RAM section has separate power control for System ON and System OFF mode operation, which is configured via RAM register (see the POWER — Power supply).
The CPU can read from flash memory an unlimited number of times, but is restricted in how it writes to flash and the number of writes and erases it can perform.
Writing to flash memory is managed by the non-volatile memory controller (NVMC), see NVMC — Non-volatile memory controller.
Flash memory is divided into 64 pages of 4 kB each that can be accessed by the CPU via the ICODE and DCODE buses as shown in Memory layout.
The complete memory map for the nRF52820 is shown in the following figure. As described in Memory, Code RAM and Data RAM are the same physical RAM.
ID | Base address | Peripheral | Instance | Description | |
---|---|---|---|---|---|
0 | 0x40000000 | APPROTECT | APPROTECT |
APPROTECT control |
|
0 | 0x40000000 | CLOCK | CLOCK |
Clock control |
|
0 | 0x40000000 | POWER | POWER |
Power control |
|
0 | 0x50000000 | GPIO | GPIO |
General purpose input and output |
Deprecated |
0 | 0x50000000 | GPIO | P0 |
General purpose input and output, port 0. |
|
1 | 0x40001000 | RADIO | RADIO |
2.4 GHz radio |
|
2 | 0x40002000 | UART | UART0 |
Universal asynchronous receiver/transmitter |
Deprecated |
2 | 0x40002000 | UARTE | UARTE0 |
Universal asynchronous receiver/transmitter with EasyDMA, unit 0 |
|
3 | 0x40003000 | SPI | SPI0 |
SPI master 0 |
Deprecated |
3 | 0x40003000 | SPIM | SPIM0 |
SPI master 0 |
|
3 | 0x40003000 | SPIS | SPIS0 |
SPI slave 0 |
|
3 | 0x40003000 | TWI | TWI0 |
Two-wire interface master 0 |
Deprecated |
3 | 0x40003000 | TWIM | TWIM0 |
Two-wire interface master 0 |
|
3 | 0x40003000 | TWIS | TWIS0 |
Two-wire interface slave 0 |
|
4 | 0x40004000 | SPI | SPI1 |
SPI master 1 |
Deprecated |
4 | 0x40004000 | SPIM | SPIM1 |
SPI master 1 |
|
4 | 0x40004000 | SPIS | SPIS1 |
SPI slave 1 |
|
4 | 0x40004000 | TWI | TWI1 |
Two-wire interface master 1 |
Deprecated |
4 | 0x40004000 | TWIM | TWIM1 |
Two-wire interface master 1 |
|
4 | 0x40004000 | TWIS | TWIS1 |
Two-wire interface slave 1 |
|
6 | 0x40006000 | GPIOTE | GPIOTE |
GPIO tasks and events |
|
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 |
|
20 | 0x40014000 | EGU | EGU0 |
Event generator unit 0 |
|
20 | 0x40014000 | SWI | SWI0 |
Software interrupt 0 |
|
21 | 0x40015000 | EGU | EGU1 |
Event generator unit 1 |
|
21 | 0x40015000 | SWI | SWI1 |
Software interrupt 1 |
|
22 | 0x40016000 | EGU | EGU2 |
Event generator unit 2 |
|
22 | 0x40016000 | SWI | SWI2 |
Software interrupt 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 |
|
30 | 0x4001E000 | ACL | ACL |
Access control lists |
|
30 | 0x4001E000 | NVMC | NVMC |
Non-volatile memory controller |
|
31 | 0x4001F000 | PPI | PPI |
Programmable peripheral interconnect |
|
39 | 0x40027000 | USBD | USBD |
Universal serial bus device |
|
N/A | 0x10000000 | FICR | FICR |
Factory information configuration |
|
N/A | 0x10001000 | UICR | UICR |
User information configuration |
|