nRF52x, как и все микроконтроллеры ARM Cortex, традиционно содержат на кристалле память FLASH и RAM, которую используют как память программ и данных. Объем этой памяти зависит от модели чипа, см. таблицу 1.
Таблица 1. Объем памяти в зависимости от модели чипа nRF52x.
Модель MCU |
RAM |
FLASH |
nRF52832-QFAA |
64 килобайта |
512 килобайт |
nRF52832-QFAB |
32 килобайта |
256 килобайт |
nRF52832-CIAA |
64 килобайта |
512 килобайт |
Примечание: все непонятные термины и сокращения см. в Словарике [7].
CPU и EasyDMA [3] могут обращаться к памяти через многослойную матрицу шины AHB (AHB multilayer interconnect [2]). CPU также может обращаться к периферийным устройствам через эту шину, см. рис. 1.
Рис. 1. Конфигурация памяти, периферийных устройств, шины AHB multilayer interconnect.
Одна и та же физическая память RAM отображается как на регион Data RAM, так и на регион Code RAM. В зоне ответственности приложения находится распределение RAM внутри этих регионов таким образом, чтобы они не повредили друг друга.
RAM. Интерфейс ОЗУ поделен на несколько подчиненных устройств RAM AHB (RAM AHB slave). Каждый из RAM AHB подключен к двум 4-килобайтным секциям RAM, см. Section 0 и Section 1 на рис. 1.
У каждой из секций RAM есть индивидуальное управление питанием для режимов System ON и System OFF, что конфигурируется через регистр RAM, см. [4].
FLASH. Память FLASH относится к энергонезависимому типу памяти (Non-Volatile Memory), т. е. она сохраняет свои данные после выключения питания. NVM можно читать программой CPU неограниченное количество раз, однако есть ограничение на количество циклов стирание/запись, и каким образом эти операции записи должны быть выполнены.
Запись в память Flash обслуживается контроллером NVMC (Non-volatile memory controller, см. [6]).
Flash поделена на несколько страниц (page), к которым CPU может обращаться как через шину ICODE, так и через шину DCODE, см. рис. 1. Каждая страница поделена на 8 блоков.
Карта памяти. Полная карта памяти показана на рис. 2. Как уже упоминалось, Code RAM и Data RAM представляют собой одно и то же физическое ОЗУ.
Рис. 2. Карта памяти nRF52832.
Таблица 2. Адреса периферийных устройств на карте памяти nRF52832.
ID |
Базовый адрес |
Блок |
Экземпляр |
Описание |
0 |
0x40000000 |
POWER |
POWER |
Управление питанием [4]. |
CLOCK |
CLOCK |
Управление тактированием [5]. |
BPROT |
BPROT |
Защита блоков памяти. |
1 |
0x40001000 |
RADIO |
RADIO |
Радиотракт 2.4 ГГц. |
2 |
0x40002000 |
UARTE |
UARTE0 |
Universal Asynchronous Receiver/Transmitter, с поддержкой технологии EasyDMA. |
UART |
UART0(1) |
То же самое, устаревшее наименование. |
3 |
0x40003000 |
SPIS |
SPIS0 |
SPI Slave 0. |
SPIM |
SPIM0 |
SPI Master 0. |
SPI |
SPI0(1) |
TWIS |
TWIS0 |
Подчиненное устройство 0 интерфейса I2C/TWI. |
TWIM |
TWIM0 |
Главное устройство 0 интерфейса I2C/TWI. |
TWI |
TWI0(1) |
I2C/TWI Master 0. |
4 |
0x40004000 |
SPIS |
SPIS1 |
SPI Slave 1. |
SPIM |
SPIM1 |
SPI Master 1. |
SPI |
SPI1(1) |
TWIS |
TWIS1 |
Подчиненное устройство 1 интерфейса I2C/TWI. |
TWIM |
TWIM1 |
Главное устройство 1 интерфейса I2C/TWI. |
TWI |
TWI1(1) |
I2C/TWI Master 1. |
5 |
0x40005000 |
NFCT |
NFCT |
Near Field Communication Tag. |
6 |
0x40006000 |
GPIOTE |
GPIOTE |
GPIO Task и Events. |
7 |
0x40007000 |
SAADC |
SAADC |
Аналого-цифровой преобразователь. |
8 |
0x40008000 |
TIMER |
TIMER0 |
Timer/Counter 0. |
9 |
0x40009000 |
TIMER1 |
Timer/Counter 1. |
10 |
0x4000A000 |
TIMER2 |
Timer/Counter 2. |
11 |
0x4000B000 |
RTC |
RTC0 |
Real-Time Counter 0. |
12 |
0x4000C000 |
TEMP |
TEMP |
Датчик температуры. |
13 |
0x4000D000 |
RNG |
RNG |
Генератор случайных чисел. |
14 |
0x4000E000 |
ECB |
ECB |
Crypto AES ECB. |
15 |
0x4000F000 |
CCM |
CCM |
AES Crypto CCM. |
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 |
LPCOMP |
LPCOMP |
Компаратор детектирования пониженного напряжения питания (Low Power Comparator). |
COMP |
COMP |
Компаратор общего назначения. |
20 |
0x40014000 |
SWI |
SWI0 |
Программное прерывание 0. |
EGU |
EGU0 |
Event Generator Unit 0. |
21 |
0x40015000 |
EGU1 |
Event Generator Unit 1. |
SWI |
SWI1 |
Программное прерывание 1. |
22 |
0x40016000 |
SWI2 |
Программное прерывание 2. |
EGU |
EGU2 |
Event Generator Unit 2. |
23 |
0x40017000 |
SWI |
SWI3 |
Программное прерывание 3. |
EGU |
EGU3 |
Event Generator Unit 3. |
24 |
0x40018000 |
EGU4 |
Event Generator Unit 4. |
SWI |
SWI4 |
Программное прерывание 4. |
25 |
0x4001900 |
SWI5 |
Программное прерывание 5. |
EGU |
EGU5 |
Event Generator Unit 5. |
26 |
0x4001A00 |
TIMER |
TIMER3 |
Timer/Counter 3. |
27 |
0x4001B00 |
TIMER4 |
Timer/Counter 4. |
28 |
0x4001C00 |
PWM |
PWM0 |
Блок ШИМ 0. |
29 |
0x4001D00 |
PDM |
PDM |
Pulse Density Modulation (интерфейс цифрового микрофона). |
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 |
Блок ШИМ 1. |
34 |
0x40022000 |
PWM2 |
Блок ШИМ 2. |
35 |
0x40023000 |
SPI |
SPI2(1) |
SPI Master 2. |
SPIS |
SPIS2 |
SPI Slave 2. |
SPIM |
SPIM2 |
SPI Master 2 |
36
|
0x40024000 |
RTC |
RTC2 |
Real-Time Counter 2. |
37 |
0x40025000 |
I2S |
I2S |
Inter-IC Sound Interface. |
38 |
0x40026000 |
FPU |
FPU |
Прерывание FPU. |
0 |
0x50000000 |
GPIO |
GPIO(1) |
Порты ввода/вывода общего назначения. |
P0 |
NA |
0x10000000 |
FICR |
FICR |
Factory Information Configuration Registers (заводские информационно-конфигурационные регистры). |
NA |
0x10001000 |
UICR |
UICR |
User Information Configuration Registers (пользовательские регистры информации и конфигурации). |
Примечание (1): устаревшее наименование.
[Ссылки]
1. Memory nRF52832 site:nordicsemi.com. 2. AHB multilayer nRF52832 site:nordicsemi.com. 3. EasyDMA nRF52832 site:nordicsemi.com. 4. nRF52: источники питания. 5. nRF52: управление тактированием. 6. nRF52: контроллер энергонезависимой памяти NVMC. 7. Bluetooth: аббревиатуры и термины. |