Регистры POWMAN RP2350
Регистры менеджера питания RP2350: стабилизатор ядра и детектор просадки, домены питания и переходы между состояниями P0 и P1, всегда включённый таймер AON с будильником, пробуждение по GPIO, причины сброса и регистры, которые переживают сон.
Содержание
- Регистры блока
- POWMAN_BADPASSWD
- POWMAN_VREG_CTRL
- POWMAN_VREG_STS
- POWMAN_VREG
- POWMAN_VREG_LP_ENTRY
- POWMAN_VREG_LP_EXIT
- POWMAN_BOD_CTRL
- POWMAN_BOD
- POWMAN_BOD_LP_ENTRY
- POWMAN_BOD_LP_EXIT
- POWMAN_LPOSC
- POWMAN_CHIP_RESET
- POWMAN_WDSEL
- POWMAN_SEQ_CFG
- POWMAN_STATE
- POWMAN_POW_FASTDIV
- POWMAN_POW_DELAY
- POWMAN_EXT_CTRL0
- POWMAN_EXT_CTRL1
- POWMAN_EXT_TIME_REF
- POWMAN_LPOSC_FREQ_KHZ_INT
- POWMAN_LPOSC_FREQ_KHZ_FRAC
- POWMAN_XOSC_FREQ_KHZ_INT
- POWMAN_XOSC_FREQ_KHZ_FRAC
- POWMAN_SET_TIME_63TO48
- POWMAN_SET_TIME_47TO32
- POWMAN_SET_TIME_31TO16
- POWMAN_SET_TIME_15TO0
- POWMAN_READ_TIME_UPPER
- POWMAN_READ_TIME_LOWER
- POWMAN_ALARM_TIME_63TO48
- POWMAN_ALARM_TIME_47TO32
- POWMAN_ALARM_TIME_31TO16
- POWMAN_ALARM_TIME_15TO0
- POWMAN_TIMER
- POWMAN_PWRUPn
- POWMAN_CURRENT_PWRUP_REQ
- POWMAN_LAST_SWCORE_PWRUP
- POWMAN_DBG_PWRCFG
- POWMAN_BOOTDIS
- POWMAN_DBGCONFIG
- POWMAN_SCRATCHn
- POWMAN_BOOTn
- POWMAN_INTR
- POWMAN_INTE
- POWMAN_INTF
- POWMAN_INTS
Ядро RP2350 разделено на пять доменов питания: всегда включённый AON, коммутируемое ядро SWCORE с процессорами и периферией, XIP (кеш и загрузочная память), SRAM0 и SRAM1 — нижняя и верхняя половины основной памяти. Состояние Pc.m описывает, что включено: P0.m — обычная работа, P1.m — пониженное питание с выключенным SWCORE; переход запрашивают полем REQ регистра STATE (даташит RP2350, раздел 6.2).
Запись в регистры POWMAN до смещения 0xAC защищена паролем: в старшие 16 бит записывают 0x5AFE, иначе запись игнорируется и устанавливается BADPASSWD; без пароля пишутся только SCRATCH, BOOT и регистры прерываний (раздел 6.4). Стабилизатор ядра выдаёт от 0,55 до 3,30 В, по умолчанию 1,10 В, а выше 1,30 В — только после снятия ограничения DISABLE_VOLTAGE_LIMIT. Для пониженного питания у стабилизатора и детектора просадки свои настройки — …_LP_ENTRY и …_LP_EXIT.
Таймер AON — единственный, что работает во всех режимах: 64-битный счётчик миллисекунд от низкочастотного генератора LPOSC на 32 кГц, от кварца или от внешнего сигнала на GPIO, с будильником, который может разбудить чип. Он заменил часы RTC из RP2040 (раздел 12.10). Пробуждать чип могут также четыре события на GPIO (PWRUP0–3); CHIP_RESET хранит причину последнего сброса, а SCRATCH0–7 и BOOT0–3 сохраняют значения в пониженном питании.
| Экземпляр | Базовый адрес |
|---|---|
| POWMAN | 0x4010 0000 |
Регистры блока
| Регистр | Смещение | Назначение | После сброса |
|---|---|---|---|
| POWMAN_BADPASSWD | 0x00 | Была запись с неверным паролем; сбрасывается записью 1 | 0x0000 0000 |
| POWMAN_VREG_CTRL | 0x04 | Управление стабилизатором ядра | 0x0000 8050 |
| POWMAN_VREG_STS | 0x08 | Состояние стабилизатора ядра | 0x0000 0000 |
| POWMAN_VREG | 0x0C | Настройки стабилизатора ядра | 0x0000 00B0 |
| POWMAN_VREG_LP_ENTRY | 0x10 | Настройки стабилизатора при входе в пониженное питание | 0x0000 00B4 |
| POWMAN_VREG_LP_EXIT | 0x14 | Настройки стабилизатора при выходе из пониженного питания | 0x0000 00B0 |
| POWMAN_BOD_CTRL | 0x18 | Управление детектором просадки | 0x0000 0000 |
| POWMAN_BOD | 0x1C | Настройки детектора просадки | 0x0000 00B1 |
| POWMAN_BOD_LP_ENTRY | 0x20 | Детектор просадки при входе в пониженное питание | 0x0000 00B0 |
| POWMAN_BOD_LP_EXIT | 0x24 | Детектор просадки при выходе из пониженного питания | 0x0000 00B1 |
| POWMAN_LPOSC | 0x28 | Низкочастотный генератор LPOSC | 0x0000 0203 |
| POWMAN_CHIP_RESET | 0x2C | Причина последнего сброса и флаги для загрузочного кода | 0x0000 0000 |
| POWMAN_WDSEL | 0x30 | Что сбрасывает сторожевой таймер | 0x0000 0000 |
| POWMAN_SEQ_CFG | 0x34 | Настройка автомата переходов питания | 0x0010 11F0 |
| POWMAN_STATE | 0x38 | Состояние доменов питания и запрос перехода | 0x0000 000F |
| POWMAN_POW_FASTDIV | 0x3C | Делитель тактов POWMAN для тика задержек при работе от clk_ref | 0x0000 0040 |
| POWMAN_POW_DELAY | 0x40 | Паузы между шагами включения доменов | 0x0000 2011 |
| POWMAN_EXT_CTRL0 | 0x44 | Управляющий выход 0 на GPIO, зависящий от режима питания | 0x0000 003F |
| POWMAN_EXT_CTRL1 | 0x48 | Управляющий выход 1 на GPIO, зависящий от режима питания | 0x0000 003F |
| POWMAN_EXT_TIME_REF | 0x4C | Внешний опорный сигнал времени на GPIO | 0x0000 0000 |
| POWMAN_LPOSC_FREQ_KHZ_INT | 0x50 | Частота LPOSC или внешнего сигнала для таймера AON, целые кГц | 0x0000 0020 |
| POWMAN_LPOSC_FREQ_KHZ_FRAC | 0x54 | Частота LPOSC для таймера AON, дробная часть кГц (после сброса 0,768) | 0x0000 C49C |
| POWMAN_XOSC_FREQ_KHZ_INT | 0x58 | Частота кварца для таймера AON, целые кГц (после сброса 12 000) | 0x0000 2EE0 |
| POWMAN_XOSC_FREQ_KHZ_FRAC | 0x5C | Частота кварца для таймера AON, дробная часть кГц | 0x0000 0000 |
| POWMAN_SET_TIME_63TO48 | 0x60 | Установка таймера AON, биты 63:48; пишут при TIMER.RUN = 0 | 0x0000 0000 |
| POWMAN_SET_TIME_47TO32 | 0x64 | Установка таймера AON, биты 47:32; пишут при TIMER.RUN = 0 | 0x0000 0000 |
| POWMAN_SET_TIME_31TO16 | 0x68 | Установка таймера AON, биты 31:16; пишут при TIMER.RUN = 0 | 0x0000 0000 |
| POWMAN_SET_TIME_15TO0 | 0x6C | Установка таймера AON, биты 15:0; пишут при TIMER.RUN = 0 | 0x0000 0000 |
| POWMAN_READ_TIME_UPPER | 0x70 | Таймер AON, биты 63:32: читают UPPER, LOWER и снова UPPER; если он изменился, LOWER читают ещё раз | 0x0000 0000 |
| POWMAN_READ_TIME_LOWER | 0x74 | Таймер AON, биты 31:0 | 0x0000 0000 |
| POWMAN_ALARM_TIME_63TO48 | 0x78 | Время будильника, биты 63:48; пишут при ALARM_ENAB = 0 | 0x0000 0000 |
| POWMAN_ALARM_TIME_47TO32 | 0x7C | Время будильника, биты 47:32; пишут при ALARM_ENAB = 0 | 0x0000 0000 |
| POWMAN_ALARM_TIME_31TO16 | 0x80 | Время будильника, биты 31:16; пишут при ALARM_ENAB = 0 | 0x0000 0000 |
| POWMAN_ALARM_TIME_15TO0 | 0x84 | Время будильника, биты 15:0; пишут при ALARM_ENAB = 0 | 0x0000 0000 |
| POWMAN_TIMER | 0x88 | Управление и состояние таймера AON | 0x0000 0000 |
| POWMAN_PWRUPn | 0x8C + n · 0x04 | Источник пробуждения n на GPIO | 0x0000 003F |
| POWMAN_CURRENT_PWRUP_REQ | 0x9C | Текущие запросы пробуждения | 0x0000 0000 |
| POWMAN_LAST_SWCORE_PWRUP | 0xA0 | Что включило ядро последним: 0 — сброс чипа, 1–4 — PWRUP0–3, 5 — отладчик, 6 — будильник | 0x0000 0000 |
| POWMAN_DBG_PWRCFG | 0xA4 | Запросы пробуждения от отладчика | 0x0000 0000 |
| POWMAN_BOOTDIS | 0xA8 | Запрет загрузочных регистров BOOT0–3 после перезапуска | 0x0000 0000 |
| POWMAN_DBGCONFIG | 0xAC | Настройка порта отладки | 0x0000 0000 |
| POWMAN_SCRATCHn | 0xB0 + n · 0x04 | Регистр общего назначения n; сохраняется в пониженном питании | 0x0000 0000 |
| POWMAN_BOOTn | 0xD0 + n · 0x04 | Регистр n для загрузочного ПЗУ; сохраняется в пониженном питании | 0x0000 0000 |
| POWMAN_INTR | 0xE0 | Необработанные флаги прерываний | 0x0000 0000 |
| POWMAN_INTE | 0xE4 | Разрешение прерываний | 0x0000 0000 |
| POWMAN_INTF | 0xE8 | Принудительная установка прерываний | 0x0000 0000 |
| POWMAN_INTS | 0xEC | Флаги прерываний после маски и принуждения | 0x0000 0000 |
POWMAN_BADPASSWD — была запись с неверным паролем; сбрасывается записью 1
Смещение 0x00, адрес 0x4010 0000, после сброса 0x0000 0000, сброс записью 1. Макросы pico-sdk: POWMAN_BADPASSWD_…
Отдельных полей нет: значение занимает бит 0, остальные биты не используются.
POWMAN_VREG_CTRL — управление стабилизатором ядра
Смещение 0x04, адрес 0x4010 0004, после сброса 0x0000 8050. Макросы pico-sdk: POWMAN_VREG_CTRL_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RST_N | — | UNLOCK | ISOLATE | — | DISABLE_VOLTAGE_LIMIT | — | HT_TH | — | |||||||
- RST_N (бит 15, чтение и запись, после сброса 0x1) — 0 — вернуть стабилизатор к настройкам запуска.
- UNLOCK (бит 13, чтение и запись, после сброса 0x0) — Разблокировать управление стабилизатором после включения; обратно не блокируется.
- ISOLATE (бит 12, чтение и запись, после сброса 0x0) — Изолировать интерфейс управления стабилизатором.
- DISABLE_VOLTAGE_LIMIT (бит 8, чтение и запись, после сброса 0x0) — Снять ограничение выходного напряжения 1,30 В.
- HT_TH (биты 6:4, чтение и запись, после сброса 0x5) — Порог защиты от перегрева, выше которого отключаются силовые ключи: 100, 105, 110, 115, 120, 125 (после сброса), 135 или 150 °C.
POWMAN_VREG_STS — состояние стабилизатора ядра
Смещение 0x08, адрес 0x4010 0008, после сброса 0x0000 0000. Макросы pico-sdk: POWMAN_VREG_STS_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | VOUT_OK | — | STARTUP | ||||||||||||
- VOUT_OK (бит 4, только чтение, после сброса 0x0) — Выходное напряжение в норме.
- STARTUP (бит 0, только чтение, после сброса 0x0) — Идёт запуск стабилизатора.
POWMAN_VREG — настройки стабилизатора ядра
Смещение 0x0C, адрес 0x4010 000C, после сброса 0x0000 00B0. Макросы pico-sdk: POWMAN_VREG_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| UPDATE_IN_PROGRESS | — | VSEL | — | HIZ | — | ||||||||||
- UPDATE_IN_PROGRESS (бит 15, только чтение, после сброса 0x0) — Идёт обновление настроек — запись в VREG игнорируется.
- VSEL (биты 8:4, чтение и запись, после сброса 0x0B) — Выходное напряжение: от 0,55 В (00000) до 3,30 В (11111), после сброса 01011 — 1,10 В; выше 1,30 В — только при снятом DISABLE_VOLTAGE_LIMIT.
- HIZ (бит 1, чтение и запись, после сброса 0x0) — Выход стабилизатора в высокоимпедансном состоянии.
POWMAN_VREG_LP_ENTRY — настройки стабилизатора при входе в пониженное питание
Смещение 0x10, адрес 0x4010 0010, после сброса 0x0000 00B4. Макросы pico-sdk: POWMAN_VREG_LP_ENTRY_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | VSEL | — | MODE | HIZ | — | ||||||||||
- VSEL (биты 8:4, чтение и запись, после сброса 0x0B) — Выходное напряжение: от 0,55 В (00000) до 3,30 В (11111), после сброса 01011 — 1,10 В; выше 1,30 В — только при снятом DISABLE_VOLTAGE_LIMIT.
- MODE (бит 2, чтение и запись, после сброса 0x1) — 0 — обычный импульсный режим, 1 — линейный режим малого потребления, только до 1,30 В.
- HIZ (бит 1, чтение и запись, после сброса 0x0) — Выход стабилизатора в высокоимпедансном состоянии.
POWMAN_VREG_LP_EXIT — настройки стабилизатора при выходе из пониженного питания
Смещение 0x14, адрес 0x4010 0014, после сброса 0x0000 00B0. Макросы pico-sdk: POWMAN_VREG_LP_EXIT_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | VSEL | — | MODE | HIZ | — | ||||||||||
- VSEL (биты 8:4, чтение и запись, после сброса 0x0B) — Выходное напряжение: от 0,55 В (00000) до 3,30 В (11111), после сброса 01011 — 1,10 В; выше 1,30 В — только при снятом DISABLE_VOLTAGE_LIMIT.
- MODE (бит 2, чтение и запись, после сброса 0x0) — 0 — обычный импульсный режим, 1 — линейный режим малого потребления, только до 1,30 В.
- HIZ (бит 1, чтение и запись, после сброса 0x0) — Выход стабилизатора в высокоимпедансном состоянии.
POWMAN_BOD_CTRL — управление детектором просадки
Смещение 0x18, адрес 0x4010 0018, после сброса 0x0000 0000. Макросы pico-sdk: POWMAN_BOD_CTRL_…
- ISOLATE (бит 12, чтение и запись, после сброса 0x0) — Изолировать интерфейс управления детектором просадки.
POWMAN_BOD — настройки детектора просадки
Смещение 0x1C, адрес 0x4010 001C, после сброса 0x0000 00B1. Макросы pico-sdk: POWMAN_BOD_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | VSEL | — | EN | ||||||||||||
- VSEL (биты 8:4, чтение и запись, после сброса 0x0B) — Порог от 0,473 В (00000) до 1,204 В (10001) с шагом около 0,043 В; в описании поля значением по умолчанию названо 01001 — 0,860 В, а после сброса в поле 01011 — 0,946 В.
- EN (бит 0, чтение и запись, после сброса 0x1) — Включение детектора просадки.
POWMAN_BOD_LP_ENTRY — детектор просадки при входе в пониженное питание
Смещение 0x20, адрес 0x4010 0020, после сброса 0x0000 00B0. Макросы pico-sdk: POWMAN_BOD_LP_ENTRY_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | VSEL | — | EN | ||||||||||||
- VSEL (биты 8:4, чтение и запись, после сброса 0x0B) — Порог от 0,473 В (00000) до 1,204 В (10001) с шагом около 0,043 В; в описании поля значением по умолчанию названо 01001 — 0,860 В, а после сброса в поле 01011 — 0,946 В.
- EN (бит 0, чтение и запись, после сброса 0x0) — Включение детектора просадки.
POWMAN_BOD_LP_EXIT — детектор просадки при выходе из пониженного питания
Смещение 0x24, адрес 0x4010 0024, после сброса 0x0000 00B1. Макросы pico-sdk: POWMAN_BOD_LP_EXIT_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | VSEL | — | EN | ||||||||||||
- VSEL (биты 8:4, чтение и запись, после сброса 0x0B) — Порог от 0,473 В (00000) до 1,204 В (10001) с шагом около 0,043 В; в описании поля значением по умолчанию названо 01001 — 0,860 В, а после сброса в поле 01011 — 0,946 В.
- EN (бит 0, чтение и запись, после сброса 0x1) — Включение детектора просадки.
POWMAN_LPOSC — низкочастотный генератор LPOSC
Смещение 0x28, адрес 0x4010 0028, после сброса 0x0000 0203. Макросы pico-sdk: POWMAN_LPOSC_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | TRIM | — | MODE | ||||||||||||
- TRIM (биты 9:4, чтение и запись, после сброса 0x20) — Подстройка частоты: шаг обычно 1 % от частоты после сброса, до 3 %.
- MODE (биты 1:0, чтение и запись, после сброса 0x3) — Функция удалена.
POWMAN_CHIP_RESET — причина последнего сброса и флаги для загрузочного кода
Смещение 0x2C, адрес 0x4010 002C, после сброса 0x0000 0000. Макросы pico-sdk: POWMAN_CHIP_RESET_…
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | HAD_WATCHDOG_RESET_RSM | HAD_HZD_SYS_RESET_REQ | HAD_GLITCH_DETECT | HAD_SWCORE_PD | HAD_WATCHDOG_RESET_SWCORE | HAD_WATCHDOG_RESET_POWMAN | HAD_WATCHDOG_RESET_POWMAN_ASYNC | HAD_RESCUE | — | HAD_DP_RESET_REQ | HAD_RUN_LOW | HAD_BOR | HAD_POR | ||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | RESCUE_FLAG | — | DOUBLE_TAP | ||||||||||||
- HAD_WATCHDOG_RESET_RSM (бит 28, только чтение, после сброса 0x0) — Сброс сторожевым таймером с перезапуском автомата включения.
- HAD_HZD_SYS_RESET_REQ (бит 27, только чтение, после сброса 0x0) — Системный сброс от отладчика ядер Hazard3.
- HAD_GLITCH_DETECT (бит 26, только чтение, после сброса 0x0) — Сброс детектором сбоев.
- HAD_SWCORE_PD (бит 25, только чтение, после сброса 0x0) — Выключение коммутируемого ядра.
- HAD_WATCHDOG_RESET_SWCORE (бит 24, только чтение, после сброса 0x0) — Сброс сторожевым таймером коммутируемого ядра.
- HAD_WATCHDOG_RESET_POWMAN (бит 23, только чтение, после сброса 0x0) — Сброс сторожевым таймером менеджера питания.
- HAD_WATCHDOG_RESET_POWMAN_ASYNC (бит 22, только чтение, после сброса 0x0) — Асинхронный сброс сторожевым таймером менеджера питания.
- HAD_RESCUE (бит 21, только чтение, после сброса 0x0) — Аварийный сброс (rescue) от отладчика.
- HAD_DP_RESET_REQ (бит 19, только чтение, после сброса 0x0) — Запрос сброса от отладчика Arm.
- HAD_RUN_LOW (бит 18, только чтение, после сброса 0x0) — Сброс выводом RUN.
- HAD_BOR (бит 17, только чтение, после сброса 0x0) — Сброс детектором просадки.
- HAD_POR (бит 16, только чтение, после сброса 0x0) — Сброс при включении питания.
- RESCUE_FLAG (бит 4, сброс записью 1, после сброса 0x0) — Аварийный сброс через RP-AP: ПЗУ останавливается до загрузки из флеш-памяти, чтобы выйти из зависания; сбрасывается записью 1.
- DOUBLE_TAP (бит 0, чтение и запись, после сброса 0x0) — Двойное нажатие RUN — загрузочному коду перейти в загрузчик.
POWMAN_WDSEL — что сбрасывает сторожевой таймер
Смещение 0x30, адрес 0x4010 0030, после сброса 0x0000 0000. Макросы pico-sdk: POWMAN_WDSEL_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | RESET_RSM | — | RESET_SWCORE | — | RESET_POWMAN | — | RESET_POWMAN_ASYNC | ||||||||
- RESET_RSM (бит 12, чтение и запись, после сброса 0x0) — Сторожевой таймер полностью перезапускает автомат включения.
- RESET_SWCORE (бит 8, чтение и запись, после сброса 0x0) — Сторожевой таймер сбрасывает коммутируемое ядро и перезапускает автомат включения.
- RESET_POWMAN (бит 4, чтение и запись, после сброса 0x0) — Сторожевой таймер восстанавливает настройки POWMAN, сбрасывает таймер, ядро и автомат включения.
- RESET_POWMAN_ASYNC (бит 0, чтение и запись, после сброса 0x0) — То же, что RESET_POWMAN, но асинхронно.
POWMAN_SEQ_CFG — настройка автомата переходов питания
Смещение 0x34, адрес 0x4010 0034, после сброса 0x0010 11F0. Макросы pico-sdk: POWMAN_SEQ_CFG_…
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | USING_FAST_POWCK | — | USING_BOD_LP | USING_VREG_LP | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | USE_FAST_POWCK | — | RUN_LPOSC_IN_LP | USE_BOD_HP | USE_BOD_LP | USE_VREG_HP | USE_VREG_LP | — | HW_PWRUP_SRAM0 | HW_PWRUP_SRAM1 | |||||
- USING_FAST_POWCK (бит 20, только чтение, после сброса 0x1) — Тактирование POWMAN: 0 — LPOSC 32 кГц, 1 — clk_ref.
- USING_BOD_LP (бит 17, только чтение, после сброса 0x0) — Детектор просадки в режиме малого потребления.
- USING_VREG_LP (бит 16, только чтение, после сброса 0x0) — Стабилизатор в режиме малого потребления.
- USE_FAST_POWCK (бит 12, чтение и запись, после сброса 0x1) — Тактировать POWMAN от clk_ref, пока коммутируемое ядро включено.
- RUN_LPOSC_IN_LP (бит 8, чтение и запись, после сброса 0x1) — Не останавливать LPOSC при выключенном ядре — нужно, если от него идёт таймер.
- USE_BOD_HP (бит 7, чтение и запись, после сброса 0x1) — Переключать детектор просадки в обычный режим при включении ядра.
- USE_BOD_LP (бит 6, чтение и запись, после сброса 0x1) — Переключать детектор просадки в режим малого потребления при выключении ядра.
- USE_VREG_HP (бит 5, чтение и запись, после сброса 0x1) — Переключать стабилизатор в обычный режим при включении ядра.
- USE_VREG_LP (бит 4, чтение и запись, после сброса 0x1) — Переключать стабилизатор в режим малого потребления при выключении ядра.
- HW_PWRUP_SRAM0 (бит 1, чтение и запись, после сброса 0x0) — SRAM0 при пробуждении: 0 — включить, 1 — не менять.
- HW_PWRUP_SRAM1 (бит 0, чтение и запись, после сброса 0x0) — SRAM1 при пробуждении: 0 — включить, 1 — не менять.
POWMAN_STATE — состояние доменов питания и запрос перехода
Смещение 0x38, адрес 0x4010 0038, после сброса 0x0000 000F. Макросы pico-sdk: POWMAN_STATE_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | CHANGING | WAITING | BAD_HW_REQ | BAD_SW_REQ | PWRUP_WHILE_WAITING | REQ_IGNORED | REQ | CURRENT | |||||||
- CHANGING (бит 13, только чтение, после сброса 0x0) — Идёт смена состояния питания; запись в POWMAN игнорируется.
- WAITING (бит 12, только чтение, после сброса 0x0) — Запрос принят, менеджер ждёт выполнения условий.
- BAD_HW_REQ (бит 11, только чтение, после сброса 0x0) — Неверный аппаратный запрос — возврат в P0.0.
- BAD_SW_REQ (бит 10, только чтение, после сброса 0x0) — Неверный программный запрос — ничего не сделано.
- PWRUP_WHILE_WAITING (бит 9, сброс записью 1, после сброса 0x0) — Запрос не выполнен из-за ожидающего пробуждения; сбрасывается записью 1.
- REQ_IGNORED (бит 8, сброс записью 1, после сброса 0x0) — Запрос проигнорирован; сбрасывается записью 1.
- REQ (биты 7:4, чтение и запись, после сброса 0x0) — Запрошенное состояние: бит 3 — SWCORE, 2 — XIP, 1 — SRAM0, 0 — SRAM1; 1 — выключить.
- CURRENT (биты 3:0, только чтение, после сброса 0xF) — Текущее состояние в той же кодировке: 0 — домен включён, 1 — выключен.
POWMAN_POW_FASTDIV — делитель тактов POWMAN для тика задержек при работе от clk_ref
Смещение 0x3C, адрес 0x4010 003C, после сброса 0x0000 0040, чтение и запись. Макросы pico-sdk: POWMAN_POW_FASTDIV_…
Отдельных полей нет: значение занимает биты 10:0, остальные биты не используются.
POWMAN_POW_DELAY — паузы между шагами включения доменов
Смещение 0x40, адрес 0x4010 0040, после сброса 0x0000 2011. Макросы pico-sdk: POWMAN_POW_DELAY_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SRAM_STEP | XIP_STEP | SWCORE_STEP | |||||||||||||
- SRAM_STEP (биты 15:8, чтение и запись, после сброса 0x20) — Пауза между шагами включения SRAM0 и SRAM1 в тиках POWMAN (не меньше 1 мкс).
- XIP_STEP (биты 7:4, чтение и запись, после сброса 0x1) — Пауза между шагами включения XIP в периодах LPOSC.
- SWCORE_STEP (биты 3:0, чтение и запись, после сброса 0x1) — Пауза между шагами включения коммутируемого ядра в периодах LPOSC.
POWMAN_EXT_CTRL0 — управляющий выход 0 на GPIO, зависящий от режима питания
Смещение 0x44, адрес 0x4010 0044, после сброса 0x0000 003F. Макросы pico-sdk: POWMAN_EXT_CTRL0_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | LP_EXIT_STATE | LP_ENTRY_STATE | INIT_STATE | — | INIT | — | GPIO_SELECT | ||||||||
- LP_EXIT_STATE (бит 14, чтение и запись, после сброса 0x0) — Уровень на выходе при выходе из пониженного питания.
- LP_ENTRY_STATE (бит 13, чтение и запись, после сброса 0x0) — Уровень на выходе при входе в пониженное питание.
- INIT_STATE (бит 12, чтение и запись, после сброса 0x0) — Начальный уровень выхода.
- INIT (бит 8, чтение и запись, после сброса 0x0) — Установить начальный уровень.
- GPIO_SELECT (биты 5:0, чтение и запись, после сброса 0x3F) — GPIO 0–30 для управляющего выхода; 31 выключает функцию.
POWMAN_EXT_CTRL1 — управляющий выход 1 на GPIO, зависящий от режима питания
Смещение 0x48, адрес 0x4010 0048, после сброса 0x0000 003F. Макросы pico-sdk: POWMAN_EXT_CTRL1_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | LP_EXIT_STATE | LP_ENTRY_STATE | INIT_STATE | — | INIT | — | GPIO_SELECT | ||||||||
- LP_EXIT_STATE (бит 14, чтение и запись, после сброса 0x0) — Уровень на выходе при выходе из пониженного питания.
- LP_ENTRY_STATE (бит 13, чтение и запись, после сброса 0x0) — Уровень на выходе при входе в пониженное питание.
- INIT_STATE (бит 12, чтение и запись, после сброса 0x0) — Начальный уровень выхода.
- INIT (бит 8, чтение и запись, после сброса 0x0) — Установить начальный уровень.
- GPIO_SELECT (биты 5:0, чтение и запись, после сброса 0x3F) — GPIO 0–30 для управляющего выхода; 31 выключает функцию.
POWMAN_EXT_TIME_REF — внешний опорный сигнал времени на GPIO
Смещение 0x4C, адрес 0x4010 004C, после сброса 0x0000 0000. Макросы pico-sdk: POWMAN_EXT_TIME_REF_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | DRIVE_LPCK | — | SOURCE_SEL | ||||||||||||
- DRIVE_LPCK (бит 4, чтение и запись, после сброса 0x0) — Тактировать низкочастотный домен 32 кГц от выбранного GPIO вместо LPOSC; менять при TIMER.RUN = 0.
- SOURCE_SEL (биты 1:0, чтение и запись, после сброса 0x0) — Вывод опорного сигнала: 0 — GPIO12, 1 — GPIO20, 2 — GPIO14, 3 — GPIO22.
POWMAN_LPOSC_FREQ_KHZ_INT — частота LPOSC или внешнего сигнала для таймера AON, целые кГц
Смещение 0x50, адрес 0x4010 0050, после сброса 0x0000 0020, чтение и запись. Макросы pico-sdk: POWMAN_LPOSC_FREQ_KHZ_INT_…
Отдельных полей нет: значение занимает биты 5:0, остальные биты не используются.
POWMAN_LPOSC_FREQ_KHZ_FRAC — частота LPOSC для таймера AON, дробная часть кГц (после сброса 0,768)
Смещение 0x54, адрес 0x4010 0054, после сброса 0x0000 C49C, чтение и запись. Макросы pico-sdk: POWMAN_LPOSC_FREQ_KHZ_FRAC_…
Отдельных полей нет: значение занимает биты 15:0, остальные биты не используются.
POWMAN_XOSC_FREQ_KHZ_INT — частота кварца для таймера AON, целые кГц (после сброса 12 000)
Смещение 0x58, адрес 0x4010 0058, после сброса 0x0000 2EE0, чтение и запись. Макросы pico-sdk: POWMAN_XOSC_FREQ_KHZ_INT_…
Отдельных полей нет: значение занимает биты 15:0, остальные биты не используются.
POWMAN_XOSC_FREQ_KHZ_FRAC — частота кварца для таймера AON, дробная часть кГц
Смещение 0x5C, адрес 0x4010 005C, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: POWMAN_XOSC_FREQ_KHZ_FRAC_…
Отдельных полей нет: значение занимает биты 15:0, остальные биты не используются.
POWMAN_SET_TIME_63TO48 — установка таймера AON, биты 63:48; пишут при TIMER.RUN = 0
Смещение 0x60, адрес 0x4010 0060, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: POWMAN_SET_TIME_63TO48_…
Отдельных полей нет: значение занимает биты 15:0, остальные биты не используются.
POWMAN_SET_TIME_47TO32 — установка таймера AON, биты 47:32; пишут при TIMER.RUN = 0
Смещение 0x64, адрес 0x4010 0064, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: POWMAN_SET_TIME_47TO32_…
Отдельных полей нет: значение занимает биты 15:0, остальные биты не используются.
POWMAN_SET_TIME_31TO16 — установка таймера AON, биты 31:16; пишут при TIMER.RUN = 0
Смещение 0x68, адрес 0x4010 0068, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: POWMAN_SET_TIME_31TO16_…
Отдельных полей нет: значение занимает биты 15:0, остальные биты не используются.
POWMAN_SET_TIME_15TO0 — установка таймера AON, биты 15:0; пишут при TIMER.RUN = 0
Смещение 0x6C, адрес 0x4010 006C, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: POWMAN_SET_TIME_15TO0_…
Отдельных полей нет: значение занимает биты 15:0, остальные биты не используются.
POWMAN_READ_TIME_UPPER — таймер AON, биты 63:32: читают UPPER, LOWER и снова UPPER; если он изменился, LOWER читают ещё раз
Смещение 0x70, адрес 0x4010 0070, после сброса 0x0000 0000, только чтение. Макросы pico-sdk: POWMAN_READ_TIME_UPPER_…
Значение занимает регистр целиком, отдельных полей нет.
POWMAN_READ_TIME_LOWER — таймер AON, биты 31:0
Смещение 0x74, адрес 0x4010 0074, после сброса 0x0000 0000, только чтение. Макросы pico-sdk: POWMAN_READ_TIME_LOWER_…
Значение занимает регистр целиком, отдельных полей нет.
POWMAN_ALARM_TIME_63TO48 — время будильника, биты 63:48; пишут при ALARM_ENAB = 0
Смещение 0x78, адрес 0x4010 0078, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: POWMAN_ALARM_TIME_63TO48_…
Отдельных полей нет: значение занимает биты 15:0, остальные биты не используются.
POWMAN_ALARM_TIME_47TO32 — время будильника, биты 47:32; пишут при ALARM_ENAB = 0
Смещение 0x7C, адрес 0x4010 007C, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: POWMAN_ALARM_TIME_47TO32_…
Отдельных полей нет: значение занимает биты 15:0, остальные биты не используются.
POWMAN_ALARM_TIME_31TO16 — время будильника, биты 31:16; пишут при ALARM_ENAB = 0
Смещение 0x80, адрес 0x4010 0080, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: POWMAN_ALARM_TIME_31TO16_…
Отдельных полей нет: значение занимает биты 15:0, остальные биты не используются.
POWMAN_ALARM_TIME_15TO0 — время будильника, биты 15:0; пишут при ALARM_ENAB = 0
Смещение 0x84, адрес 0x4010 0084, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: POWMAN_ALARM_TIME_15TO0_…
Отдельных полей нет: значение занимает биты 15:0, остальные биты не используются.
POWMAN_TIMER — управление и состояние таймера AON
Смещение 0x88, адрес 0x4010 0088, после сброса 0x0000 0000. Макросы pico-sdk: POWMAN_TIMER_…
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | USING_GPIO_1HZ | USING_GPIO_1KHZ | USING_LPOSC | USING_XOSC | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | USE_GPIO_1HZ | — | USE_GPIO_1KHZ | USE_XOSC | USE_LPOSC | — | ALARM | PWRUP_ON_ALARM | ALARM_ENAB | — | CLEAR | RUN | NONSEC_WRITE | ||
- USING_GPIO_1HZ (бит 19, только чтение, после сброса 0x0) — Таймер синхронизирован с сигналом 1 Гц на GPIO.
- USING_GPIO_1KHZ (бит 18, только чтение, после сброса 0x0) — Таймер считает тики 1 кГц с GPIO.
- USING_LPOSC (бит 17, только чтение, после сброса 0x0) — Таймер работает от LPOSC.
- USING_XOSC (бит 16, только чтение, после сброса 0x0) — Таймер работает от кварца.
- USE_GPIO_1HZ (бит 13, чтение и запись, после сброса 0x0) — Сверять счёт секунд с сигналом 1 Гц на GPIO; миллисекунды по-прежнему от LPOSC или кварца.
- USE_GPIO_1KHZ (бит 10, сбрасывается сам, после сброса 0x0) — Перейти на тик 1 кГц с GPIO.
- USE_XOSC (бит 9, сбрасывается сам, после сброса 0x0) — Перейти на тик от кварца.
- USE_LPOSC (бит 8, сбрасывается сам, после сброса 0x0) — Перейти на тик от LPOSC.
- ALARM (бит 6, сброс записью 1, после сброса 0x0) — Будильник сработал; сбрасывается записью 1.
- PWRUP_ON_ALARM (бит 5, чтение и запись, после сброса 0x0) — Будильник выводит чип из пониженного питания.
- ALARM_ENAB (бит 4, чтение и запись, после сброса 0x0) — Включение будильника; время будильника пишут при выключенном.
- CLEAR (бит 2, сбрасывается сам, после сброса 0x0) — Обнулить таймер, не останавливая его и не трогая будильник.
- RUN (бит 1, чтение и запись, после сброса 0x0) — Запуск таймера: при записи 1 в счётчик загружается значение SET_TIME.
- NONSEC_WRITE (бит 0, чтение и запись, после сброса 0x0) — Разрешить незащищённому коду запись в регистры таймера.
POWMAN_PWRUPn — источник пробуждения n на GPIO
4 регистра, n = 0…3: смещение 0x8C + n · 0x04, после сброса 0x0000 003F. Макросы pico-sdk: POWMAN_PWRUPn_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | RAW_STATUS | STATUS | MODE | DIRECTION | ENABLE | SOURCE | |||||||||
- RAW_STATUS (бит 10, только чтение, после сброса 0x0) — Уровень на выбранном GPIO (при ENABLE = 1).
- STATUS (бит 9, сброс записью 1, после сброса 0x0) — Событие пробуждения; защёлкнутый фронт сбрасывается записью 1.
- MODE (бит 8, чтение и запись, после сброса 0x0) — Пробуждение по уровню (0) или по фронту (1).
- DIRECTION (бит 7, чтение и запись, после сброса 0x0) — Низкий уровень или спад (0), высокий уровень или фронт (1).
- ENABLE (бит 6, чтение и запись, после сброса 0x0) — Включение источника; 0 снимает ожидающее событие.
- SOURCE (биты 5:0, чтение и запись, после сброса 0x3F) — Номер GPIO.
POWMAN_CURRENT_PWRUP_REQ — текущие запросы пробуждения
Смещение 0x9C, адрес 0x4010 009C, после сброса 0x0000 0000, только чтение. Макросы pico-sdk: POWMAN_CURRENT_PWRUP_REQ_…
Отдельных полей нет: значение занимает биты 6:0, остальные биты не используются.
POWMAN_LAST_SWCORE_PWRUP — что включило ядро последним: 0 — сброс чипа, 1–4 — PWRUP0–3, 5 — отладчик, 6 — будильник
Смещение 0xA0, адрес 0x4010 00A0, после сброса 0x0000 0000, только чтение. Макросы pico-sdk: POWMAN_LAST_SWCORE_PWRUP_…
Отдельных полей нет: значение занимает биты 6:0, остальные биты не используются.
POWMAN_DBG_PWRCFG — запросы пробуждения от отладчика
Смещение 0xA4, адрес 0x4010 00A4, после сброса 0x0000 0000. Макросы pico-sdk: POWMAN_DBG_PWRCFG_…
- IGNORE (бит 0, чтение и запись, после сброса 0x0) — Не учитывать запрос пробуждения от отладчика.
POWMAN_BOOTDIS — запрет загрузочных регистров BOOT0–3 после перезапуска
Смещение 0xA8, адрес 0x4010 00A8, после сброса 0x0000 0000. Макросы pico-sdk: POWMAN_BOOTDIS_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | NEXT | NOW | |||||||||||||
- NEXT (бит 1, чтение и запись, после сброса 0x0) — Игнорировать BOOT0–3 после следующего перезапуска автомата включения; программно только устанавливается.
- NOW (бит 0, сброс записью 1, после сброса 0x0) — Загрузочное ПЗУ сейчас игнорирует BOOT0–3; сбрасывается записью 1.
POWMAN_DBGCONFIG — настройка порта отладки
Смещение 0xAC, адрес 0x4010 00AC, после сброса 0x0000 0000. Макросы pico-sdk: POWMAN_DBGCONFIG_…
- DP_INSTID (биты 3:0, чтение и запись, после сброса 0x0) — Номер экземпляра порта отладки для многоточечного SWD.
POWMAN_SCRATCHn — регистр общего назначения n; сохраняется в пониженном питании
8 регистров, n = 0…7: смещение 0xB0 + n · 0x04, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: POWMAN_SCRATCHn_…
Значение занимает регистр целиком, отдельных полей нет.
POWMAN_BOOTn — регистр n для загрузочного ПЗУ; сохраняется в пониженном питании
4 регистра, n = 0…3: смещение 0xD0 + n · 0x04, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: POWMAN_BOOTn_…
Значение занимает регистр целиком, отдельных полей нет.
POWMAN_INTR — необработанные флаги прерываний
Смещение 0xE0, адрес 0x4010 00E0, после сброса 0x0000 0000. Макросы pico-sdk: POWMAN_INTR_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | PWRUP_WHILE_WAITING | STATE_REQ_IGNORED | TIMER | VREG_OUTPUT_LOW | |||||||||||
- PWRUP_WHILE_WAITING (бит 3, только чтение, после сброса 0x0) — Событие: запрос перехода не выполнен из-за ожидающего пробуждения.
- STATE_REQ_IGNORED (бит 2, только чтение, после сброса 0x0) — Событие: запрос состояния проигнорирован.
- TIMER (бит 1, только чтение, после сброса 0x0) — Событие: таймер AON.
- VREG_OUTPUT_LOW (бит 0, сброс записью 1, после сброса 0x0) — Событие: низкое напряжение на выходе стабилизатора.
POWMAN_INTE — разрешение прерываний
Смещение 0xE4, адрес 0x4010 00E4, после сброса 0x0000 0000. Макросы pico-sdk: POWMAN_INTE_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | PWRUP_WHILE_WAITING | STATE_REQ_IGNORED | TIMER | VREG_OUTPUT_LOW | |||||||||||
- PWRUP_WHILE_WAITING (бит 3, чтение и запись, после сброса 0x0) — Разрешение прерывания: запрос перехода не выполнен из-за ожидающего пробуждения.
- STATE_REQ_IGNORED (бит 2, чтение и запись, после сброса 0x0) — Разрешение прерывания: запрос состояния проигнорирован.
- TIMER (бит 1, чтение и запись, после сброса 0x0) — Разрешение прерывания: таймер AON.
- VREG_OUTPUT_LOW (бит 0, чтение и запись, после сброса 0x0) — Разрешение прерывания: низкое напряжение на выходе стабилизатора.
POWMAN_INTF — принудительная установка прерываний
Смещение 0xE8, адрес 0x4010 00E8, после сброса 0x0000 0000. Макросы pico-sdk: POWMAN_INTF_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | PWRUP_WHILE_WAITING | STATE_REQ_IGNORED | TIMER | VREG_OUTPUT_LOW | |||||||||||
- PWRUP_WHILE_WAITING (бит 3, чтение и запись, после сброса 0x0) — Принудительное прерывание: запрос перехода не выполнен из-за ожидающего пробуждения.
- STATE_REQ_IGNORED (бит 2, чтение и запись, после сброса 0x0) — Принудительное прерывание: запрос состояния проигнорирован.
- TIMER (бит 1, чтение и запись, после сброса 0x0) — Принудительное прерывание: таймер AON.
- VREG_OUTPUT_LOW (бит 0, чтение и запись, после сброса 0x0) — Принудительное прерывание: низкое напряжение на выходе стабилизатора.
POWMAN_INTS — флаги прерываний после маски и принуждения
Смещение 0xEC, адрес 0x4010 00EC, после сброса 0x0000 0000. Макросы pico-sdk: POWMAN_INTS_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | PWRUP_WHILE_WAITING | STATE_REQ_IGNORED | TIMER | VREG_OUTPUT_LOW | |||||||||||
- PWRUP_WHILE_WAITING (бит 3, только чтение, после сброса 0x0) — Прерывание после маски: запрос перехода не выполнен из-за ожидающего пробуждения.
- STATE_REQ_IGNORED (бит 2, только чтение, после сброса 0x0) — Прерывание после маски: запрос состояния проигнорирован.
- TIMER (бит 1, только чтение, после сброса 0x0) — Прерывание после маски: таймер AON.
- VREG_OUTPUT_LOW (бит 0, только чтение, после сброса 0x0) — Прерывание после маски: низкое напряжение на выходе стабилизатора.
Частые вопросы
Как записать регистр POWMAN на RP2350?
Добавьте пароль 0x5AFE в старшие 16 бит записываемого значения: запись без него игнорируется и устанавливает флаг BADPASSWD. Пароль не нужен только для SCRATCH0–7, BOOT0–3 и регистров прерываний INTR, INTE и INTF.
Как узнать причину перезапуска RP2350?
Прочитайте CHIP_RESET блока POWMAN: биты HAD_POR, HAD_BOR, HAD_RUN_LOW, HAD_GLITCH_DETECT, HAD_DP_RESET_REQ, HAD_RESCUE и биты сброса от сторожевого таймера показывают источник. Бит DOUBLE_TAP означает двойное нажатие RUN — загрузочный код переходит в загрузчик.
Чем таймер AON RP2350 отличается от RTC в RP2040?
RTC в RP2040 считал дату и время, а таймер AON считает миллисекунды в 64-битном счётчике и работает во всех режимах питания, даже с выключенным ядром. Дату и время при необходимости вычисляет программа, а будильник таймера может разбудить чип.
Источники
- Raspberry Pi. RP2350 Datasheet (release 8, build 80d627281ed5) — раздел 6.4: список регистров, назначение полей, тип доступа и значения после сброса
- Raspberry Pi. pico-sdk 2.1.1: заголовки src/rp2350/hardware_regs/include/hardware/regs/*.h (коммит bddd20f) — смещения, биты, тип доступа и значение после сброса каждого поля, базовые адреса из addressmap.h; лицензия BSD-3-Clause
Нашли ошибку в регистрах?
Другие регистры RP2350
- Все регистры RP2350Блоки периферии и базовые адреса
- SHA256 — ускоритель SHA-256SHA256_CSR, SHA256_WDATA, SHA256_SUMn
- TICKS — генераторы тиковTICKS_PROC0_CTRL, TICKS_PROC0_CYCLES, TICKS_PROC0_COUNT, TICKS_PROC1_CTRL, TICKS_PROC1_CYCLES, TICKS_PROC1_COUNT
- TRNG — генератор случайных чиселTRNG_RNG_IMR, TRNG_RNG_ISR, TRNG_RNG_ICR, TRNG_TRNG_CONFIG, TRNG_TRNG_VALID, TRNG_EHR_DATA0
- GLITCH_DETECTOR — детектор сбоевGLITCH_DETECTOR_ARM, GLITCH_DETECTOR_DISARM, GLITCH_DETECTOR_SENSITIVITY, GLITCH_DETECTOR_LOCK, GLITCH_DETECTOR_TRIG_STATUS, GLITCH_DETECTOR_TRIG_FORCE
- HSTX — быстрый последовательный выводHSTX_CTRL_CSR, HSTX_CTRL_BITn, HSTX_CTRL_EXPAND_SHIFT, HSTX_CTRL_EXPAND_TMDS
- HSTX_FIFO — FIFO быстрого выводаHSTX_FIFO_STAT, HSTX_FIFO_FIFO
- QMI — интерфейс QSPI-памятиQMI_DIRECT_CSR, QMI_DIRECT_TX, QMI_DIRECT_RX, QMI_M0_TIMING, QMI_M0_RFMT, QMI_M0_RCMD
- XIP_AUX — быстрый порт FIFO XIPXIP_AUX_STREAM, XIP_AUX_QMI_DIRECT_TX, XIP_AUX_QMI_DIRECT_RX
- BOOTRAM — регистры загрузочной памятиBOOTRAM_WRITE_ONCE0, BOOTRAM_WRITE_ONCE1, BOOTRAM_BOOTLOCK_STAT, BOOTRAM_BOOTLOCKn
- CORESIGHT_TRACE — FIFO трассировкиCORESIGHT_TRACE_CTRL_STATUS, CORESIGHT_TRACE_TRACE_CAPTURE_FIFO
- EPPB — регистры ядра от Raspberry PiM33_EPPB_NMI_MASK0, M33_EPPB_NMI_MASK1, M33_EPPB_SLEEPCTRL
- OTP — однократно программируемая памятьOTP_SW_LOCKn, OTP_SBPI_INSTR, OTP_SBPI_WDATA_0, OTP_SBPI_WDATA_1, OTP_SBPI_WDATA_2, OTP_SBPI_WDATA_3
- ACCESSCTRL — права доступа к шинеACCESSCTRL_LOCK, ACCESSCTRL_FORCE_CORE_NS, ACCESSCTRL_CFGRESET, ACCESSCTRL_GPIO_NSMASK0, ACCESSCTRL_GPIO_NSMASK1, ACCESSCTRL_ROM
- TIMER — системные таймерыTIMER_TIMEHW, TIMER_TIMELW, TIMER_TIMEHR, TIMER_TIMELR, TIMER_ALARMn, TIMER_ARMED
- WATCHDOG — сторожевой таймерWATCHDOG_CTRL, WATCHDOG_LOAD, WATCHDOG_REASON, WATCHDOG_SCRATCHn
- ADC — аналого-цифровой преобразовательADC_CS, ADC_RESULT, ADC_FCS, ADC_FIFO, ADC_DIV, ADC_INTR
- PWM — широтно-импульсная модуляцияPWM_CHn_CSR, PWM_CHn_DIV, PWM_CHn_CTR, PWM_CHn_CC, PWM_CHn_TOP, PWM_EN
- XOSC — кварцевый генераторXOSC_CTRL, XOSC_STATUS, XOSC_DORMANT, XOSC_STARTUP, XOSC_COUNT
- PLL — умножители частотыPLL_CS, PLL_PWR, PLL_FBDIV_INT, PLL_PRIM, PLL_INTR, PLL_INTE
- PADS_BANK0 — электрические настройки GPIOPADS_BANK0_VOLTAGE_SELECT, PADS_BANK0_GPIOn, PADS_BANK0_SWCLK, PADS_BANK0_SWD
- PADS_QSPI — электрические настройки выводов QSPIPADS_QSPI_VOLTAGE_SELECT, PADS_QSPI_GPIO_QSPI_SCLK, PADS_QSPI_GPIO_QSPI_SD0, PADS_QSPI_GPIO_QSPI_SD1, PADS_QSPI_GPIO_QSPI_SD2, PADS_QSPI_GPIO_QSPI_SD3
- RESETS — сброс подсистемRESETS_RESET, RESETS_WDSEL, RESETS_RESET_DONE
- PSM — автомат включения питанияPSM_FRCE_ON, PSM_FRCE_OFF, PSM_WDSEL, PSM_DONE
- SYSINFO — сведения о чипеSYSINFO_CHIP_ID, SYSINFO_PACKAGE_SEL, SYSINFO_PLATFORM, SYSINFO_GITREF_RP2350
- BUSCTRL — управление шинойBUSCTRL_BUS_PRIORITY, BUSCTRL_BUS_PRIORITY_ACK, BUSCTRL_PERFCTR_EN, BUSCTRL_PERFCTRn, BUSCTRL_PERFSELn
- ROSC — кольцевой генераторROSC_CTRL, ROSC_FREQA, ROSC_FREQB, ROSC_RANDOM, ROSC_DORMANT, ROSC_DIV
- SYSCFG — системные настройкиSYSCFG_PROC_CONFIG, SYSCFG_PROC_IN_SYNC_BYPASS, SYSCFG_PROC_IN_SYNC_BYPASS_HI, SYSCFG_DBGFORCE, SYSCFG_MEMPOWERDOWN, SYSCFG_AUXCTRL
- XIP_CTRL — кеш выполнения из флеш-памятиXIP_CTRL, XIP_STAT, XIP_CTR_HIT, XIP_CTR_ACC, XIP_STREAM_ADDR, XIP_STREAM_CTR
- USB — контроллер USBUSB_ADDR_ENDP, USB_ADDR_ENDPn, USB_MAIN_CTRL, USB_SOF_WR, USB_SOF_RD, USB_SIE_CTRL
- PIO — программируемый ввод-выводPIO_CTRL, PIO_FSTAT, PIO_FDEBUG, PIO_FLEVEL, PIO_TXFn, PIO_RXFn
- DMA — прямой доступ к памятиDMA_CHn_READ_ADDR, DMA_CHn_WRITE_ADDR, DMA_CHn_TRANS_COUNT, DMA_CHn_CTRL_TRIG, DMA_CHn_AL1_CTRL, DMA_CHn_AL1_READ_ADDR
- SIO — однотактный ввод-вывод ядерSIO_CPUID, SIO_GPIO_IN, SIO_GPIO_HI_IN, SIO_GPIO_OUT, SIO_GPIO_HI_OUT, SIO_GPIO_OUT_SET
- CLOCKS — тактированиеCLOCKS_CLK_GPOUT0_CTRL, CLOCKS_CLK_GPOUTn_DIV, CLOCKS_CLK_GPOUTn_SELECTED, CLOCKS_CLK_GPOUT1_CTRL, CLOCKS_CLK_GPOUT2_CTRL, CLOCKS_CLK_GPOUT3_CTRL
- IO_BANK0 — мультиплексор GPIOIO_BANK0_GPIOn_STATUS, IO_BANK0_GPIOn_CTRL, IO_BANK0_IRQSUMMARY_PROC0_SECURE0, IO_BANK0_IRQSUMMARY_PROC0_SECURE1, IO_BANK0_IRQSUMMARY_PROC0_NONSECURE0, IO_BANK0_IRQSUMMARY_PROC0_NONSECURE1
- IO_QSPI — мультиплексор выводов QSPI и USBIO_QSPI_USBPHY_DP_STATUS, IO_QSPI_USBPHY_DP_CTRL, IO_QSPI_USBPHY_DM_STATUS, IO_QSPI_USBPHY_DM_CTRL, IO_QSPI_GPIO_QSPI_SCLK_STATUS, IO_QSPI_GPIO_QSPI_SCLK_CTRL
- M33 — системные регистры Cortex-M33M33_ITM_STIMn, M33_ITM_TER0, M33_ITM_TPR, M33_ITM_TCR, M33_INT_ATREADY, M33_INT_ATVALID