Перейти к содержанию

Регистры VREG RP2040

Регистры встроенного стабилизатора напряжения ядра RP2040, детектора просадки питания и подсистемы сброса чипа: напряжение и включение стабилизатора, порог BOD, причина последнего сброса.

Встроенный линейный стабилизатор питает цифровое ядро RP2040 напряжением DVDD. По умолчанию он выдаёт 1,10 В; поле VSEL регистра VREG меняет напряжение от 0,80 до 1,30 В с шагом 0,05 В, а бит ROK показывает, что стабилизатор вышел на режим (даташит RP2040, раздел 2.10).

Детектор просадки BOD сбрасывает чип, если DVDD падает ниже порога: по умолчанию 0,860 В, диапазон — от 0,473 до 1,118 В. Регистры стабилизатора и подсистемы сброса делят одно адресное пространство, поэтому здесь же регистр CHIP_RESET с причиной последнего сброса: по питанию или BOD, по выводу RUN или от отладчика (раздел 2.12).

ЭкземплярБазовый адрес
VREG_AND_CHIP_RESET0x4006 4000

Регистры блока

РегистрСмещениеНазначениеПосле сброса
VREG_AND_CHIP_RESET_VREG0x00Управление и состояние стабилизатора0x0000 00B1
VREG_AND_CHIP_RESET_BOD0x04Детектор просадки питания0x0000 0091
VREG_AND_CHIP_RESET_CHIP_RESET0x08Причина сброса чипа0x0000 0000

VREG_AND_CHIP_RESET_VREG — управление и состояние стабилизатора

Смещение 0x00, адрес 0x4006 4000, после сброса 0x0000 00B1. Макросы pico-sdk: VREG_AND_CHIP_RESET_VREG_…

1514131211109876543210
—ROK—VSEL—HIZEN
  • ROK (бит 12, только чтение, после сброса 0x0) — Стабилизатор вышел на режим и держит напряжение.
  • VSEL (биты 7:4, чтение и запись, после сброса 0xB) — Выходное напряжение: от 0,80 В (коды 0000–0101) до 1,30 В (1111) с шагом 0,05 В; по умолчанию 1011 — 1,10 В.
  • HIZ (бит 1, чтение и запись, после сброса 0x0) — Высокоимпедансный режим выхода стабилизатора.
  • EN (бит 0, чтение и запись, после сброса 0x1) — Включение стабилизатора.

VREG_AND_CHIP_RESET_BOD — детектор просадки питания

Смещение 0x04, адрес 0x4006 4004, после сброса 0x0000 0091. Макросы pico-sdk: VREG_AND_CHIP_RESET_BOD_…

1514131211109876543210
—VSEL—EN
  • VSEL (биты 7:4, чтение и запись, после сброса 0x9) — Порог срабатывания: от 0,473 В (0000) до 1,118 В (1111) с шагом около 0,043 В; по умолчанию 1001 — 0,860 В.
  • EN (бит 0, чтение и запись, после сброса 0x1) — Включение детектора просадки.

VREG_AND_CHIP_RESET_CHIP_RESET — причина сброса чипа

Смещение 0x08, адрес 0x4006 4008, после сброса 0x0000 0000. Макросы pico-sdk: VREG_AND_CHIP_RESET_CHIP_RESET_…

31302928272625242322212019181716
—PSM_RESTART_FLAG—HAD_PSM_RESTART—HAD_RUN
1514131211109876543210
—HAD_POR—
  • PSM_RESTART_FLAG (бит 24, сброс записью 1, после сброса 0x0) — Отладчик выполнил перезапуск psm_restart: загрузчик переходит в безопасный режим, чтобы отладчик мог исправить зависающую программу; сбрасывается записью 1.
  • HAD_PSM_RESTART (бит 20, только чтение, после сброса 0x0) — Последний сброс — от отладчика.
  • HAD_RUN (бит 16, только чтение, после сброса 0x0) — Последний сброс — выводом RUN.
  • HAD_POR (бит 8, только чтение, после сброса 0x0) — Последний сброс — по включению питания или от детектора просадки.

Частые вопросы

Как поднять напряжение ядра RP2040 для разгона?

Запишите нужный код в поле VSEL регистра VREG: 1100 — 1,15 В, 1101 — 1,20 В, 1110 — 1,25 В, 1111 — 1,30 В (по умолчанию 1011 — 1,10 В). Сначала повышают напряжение и ждут, пока бит ROK станет 1, и только потом поднимают частоту PLL.

Как узнать, почему RP2040 перезагрузился?

Регистр CHIP_RESET показывает источник: HAD_POR — включение питания или срабатывание детектора просадки, HAD_RUN — сброс выводом RUN, HAD_PSM_RESTART — перезапуск от отладчика. Сброс сторожевым таймером отражается в его регистре REASON.

Источники

  1. Raspberry Pi. RP2040 Datasheet (build 2025-02-20) — раздел 2.10.6: список регистров, назначение полей, тип доступа и значения после сброса
  2. Raspberry Pi. pico-sdk 2.1.1: заголовки src/rp2040/hardware_regs/include/hardware/regs/*.h (коммит bddd20f) — смещения, биты, тип доступа и значение после сброса каждого поля, базовые адреса из addressmap.h; лицензия BSD-3-Clause

Нашли ошибку в регистрах?

Другие регистры RP2040

Статьи и термины