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

Регистры RTC_CNTL ESP32-S3

Регистры RTC_CNTL ESP32-S3: 48-битный RTC-таймер и будильник, перевод в сон и выбор источников пробуждения, причины сброса и пробуждения, домены питания, медленные такты, RTC-сторож RWDT, супер-сторож SWD, детектор просадки питания и восемь регистров, сохраняющих данные во сне.

RTC_CNTL по адресу 0x6000 8000 работает в RTC-домене и не выключается в глубоком сне. 48-битный RTC-таймер считает такты RTC_SLOW_CLK — по полю ANA_CLK_RTC_SEL регистра RTC_CNTL_RTC_CLK_CONF_REG это RC_SLOW_CLK (около 136 кГц), XTAL32K_CLK или RC_FAST_DIV_CLK. Таймер не сбрасывается ничем, кроме включения питания.

По каждому событию из таблицы 10.3-2 TRM (запись RTC_TIME_UPDATE, выключение кварца, остановка процессора, конец сброса цифровой части) значение таймера защёлкивается: последнее — в RTC_TIME_LOW0 и HIGH0, предыдущее — в LOW1 и HIGH1. Будильник задают SLP_VAL_LO и SLP_VAL_HI с битом MAIN_TIMER_ALARM_EN.

Источники пробуждения выбирает битовая карта RTC_WAKEUP_ENA (биты 31:15 регистра RTC_CNTL_RTC_WAKEUP_STATE_REG), в сон чип уходит по биту SLEEP_EN. RTC-сторож RWDT, как MWDT групп таймеров, защищён ключом 0x50D83AA1, а супер-сторож SWD — ключом 0x8F1D312A.

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

Пример на C

Причина сброса ядра 0 и отключение RWDT (soc/rtc_cntl_reg.h). Макросы доступа REG_WRITE, REG_READ, REG_SET_BIT, REG_CLR_BIT, REG_GET_BIT, REG_SET_FIELD и REG_GET_FIELD объявлены в soc/soc.h ESP-IDF; поле задаётся именем макроса без суффикса, маска и сдвиг берутся из его вариантов _V и _S.

#include "soc/rtc_cntl_reg.h"

uint32_t cause = REG_GET_FIELD(RTC_CNTL_RESET_STATE_REG, RTC_CNTL_RESET_CAUSE_PROCPU);

REG_WRITE(RTC_CNTL_WDTWPROTECT_REG, 0x50D83AA1);                    // снять защиту
REG_CLR_BIT(RTC_CNTL_WDTCONFIG0_REG, RTC_CNTL_WDT_FLASHBOOT_MOD_EN);
REG_CLR_BIT(RTC_CNTL_WDTCONFIG0_REG, RTC_CNTL_WDT_EN);
REG_WRITE(RTC_CNTL_WDTWPROTECT_REG, 0);                             // вернуть защиту

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

Регистр (ESP-IDF)СмещениеНазначениеПосле сброса
RTC_CNTL_OPTIONS0_REG0x0000Программные сбросы, принудительное питание кварца и PLL0x0000 2000
RTC_CNTL_SLP_TIMER0_REG0x0004Будильник RTC-таймера, младшие 32 бита0x0000 0000
RTC_CNTL_SLP_TIMER1_REG0x0008Будильник RTC-таймера, старшие 16 бит и включение0x0000 0000
RTC_CNTL_TIME_UPDATE_REG0x000CЗащёлкивание RTC-таймера и события для него0x0000 0000
RTC_CNTL_TIME_LOWn_REG0x0010 + n · 0x00DCRTC-таймер, младшие 32 бита: n = 0 — последнее событие, 1 — предыдущее0x0000 0000
RTC_CNTL_TIME_HIGHn_REG0x0014 + n · 0x00DCRTC-таймер, старшие 16 бит: n = 0 — последнее событие, 1 — предыдущее0x0000 0000
RTC_CNTL_STATE0_REG0x0018Переход в сон, программное прерывание RTC0x0000 0000
RTC_CNTL_TIMER1_REG0x001CОжидание стабилизации PLL, кварца и RC-генератора0x2814 0403
RTC_CNTL_TIMER2_REG0x0020Ожидание перед касанием и ULP, наименьшее время RC_FAST0x0108 0000
RTC_CNTL_TIMER5_REG0x002CНаименьшая длительность сна0x0000 8000
RTC_CNTL_ANA_CONF_REG0x0034Сброс по детектору помех, питание SLEEP_I2CPOR0x0004 0000
RTC_CNTL_RESET_STATE_REG0x0038Причины сброса ядер, флаги и вектор после сброса0x0000 3000
RTC_CNTL_WAKEUP_STATE_REG0x003CИсточники пробуждения0x0006 0000
RTC_CNTL_INT_ENA_REG0x0040Разрешение прерываний0x0000 0000
RTC_CNTL_INT_RAW_REG0x0044Необработанные флаги прерываний0x0000 0000
RTC_CNTL_INT_ST_REG0x0048Флаги прерываний после маски разрешения0x0000 0000
RTC_CNTL_INT_CLR_REG0x004CСброс флагов прерываний записью 10x0000 0000
RTC_CNTL_STOREn_REGпо выводуРегистр n, сохраняющий данные во сне0x0000 0000
RTC_CNTL_EXT_XTL_CONF_REG0x0060Кварц 32 кГц и его сторож0x0006 6C80
RTC_CNTL_EXT_WAKEUP_CONF_REG0x0064Уровни пробуждения EXT0 и EXT1, фильтр GPIO0x0000 0000
RTC_CNTL_SLP_REJECT_CONF_REG0x0068Отказ от перехода в сон0x0000 0000
RTC_CNTL_CLK_CONF_REG0x0074Выбор медленного и быстрого тактов RTC, RC_FAST_CLK0x1158 321C
RTC_CNTL_SLOW_CLK_CONF_REG0x0078Делитель RC_SLOW_CLK0x0040 0000
RTC_CNTL_SDIO_CONF_REG0x007CРегулятор питания флеш-памяти0x00A0 0000
RTC_CNTL_REG0x0084Регулятор RTC, частота тактов RTC0xA000 0000
RTC_CNTL_PWC_REG0x0088Питание и изоляция RTC-периферии и памяти0x0000 0920
RTC_CNTL_DIG_PWC_REG0x0090Питание цифровых доменов во сне0x0054 4010
RTC_CNTL_DIG_ISO_REG0x0094Изоляция цифровых доменов, удержание цифровых выводов0xAA00 5000
RTC_CNTL_WDTCONFIG0_REG0x0098RTC-сторож: включение, действия стадий, режимы0x0001 3200
RTC_CNTL_WDTCONFIG1_REG0x009CRTC-сторож: длительность стадии 00x0003 0D40
RTC_CNTL_WDTCONFIG2_REG0x00A0RTC-сторож: длительность стадии 10x0001 3880
RTC_CNTL_WDTCONFIG3_REG0x00A4RTC-сторож: длительность стадии 20x0000 0FFF
RTC_CNTL_WDTCONFIG4_REG0x00A8RTC-сторож: длительность стадии 30x0000 0FFF
RTC_CNTL_WDTFEED_REG0x00ACRTC-сторож: кормление0x0000 0000
RTC_CNTL_WDTWPROTECT_REG0x00B0RTC-сторож: защита записи0x50D8 3AA1
RTC_CNTL_SWD_CONF_REG0x00B4Супер-сторож: кормление, отключение, флаги0x04B0 0000
RTC_CNTL_SWD_WPROTECT_REG0x00B8Супер-сторож: защита записи0x8F1D 312A
RTC_CNTL_SW_CPU_STALL_REG0x00BCПрограммная остановка ядер, вторая часть кода0x0000 0000
RTC_CNTL_LOW_POWER_ST_REG0x00D0Состояние RTC: сон или работа0x0000 0000
RTC_CNTL_PAD_HOLD_REG0x00D8Удержание состояния RTC-выводов0x0000 0000
RTC_CNTL_DIG_PAD_HOLD_REG0x00DCУдержание состояния цифровых выводов0x0000 0000
RTC_CNTL_EXT_WAKEUP1_REG0x00E0Выводы источника пробуждения EXT10x0000 0000
RTC_CNTL_EXT_WAKEUP1_STATUS_REG0x00E4Какие выводы EXT1 разбудили чип0x0000 0000
RTC_CNTL_BROWN_OUT_REG0x00E8Детектор просадки питания0x43FF 0010
RTC_CNTL_XTAL32K_CLK_FACTOR_REG0x00F4Коэффициент делителя для кварца 32 кГц0x0000 0000
RTC_CNTL_XTAL32K_CONF_REG0x00F8Сторож кварца 32 кГц: таймауты и пороги0x0FF0 0000
RTC_CNTL_USB_CONF_REG0x0120Внутренний USB PHY: выбор контроллера, подтяжки, пороги0x0000 0000
RTC_CNTL_SLP_REJECT_CAUSE_REG0x0128Причина отказа от сна0x0000 0000
RTC_CNTL_OPTION1_REG0x012CПринудительный вход в режим загрузки0x0000 0000
RTC_CNTL_SLP_WAKEUP_CAUSE_REG0x0130Причина пробуждения0x0000 0000
RTC_CNTL_INT_ENA_W1TS_REG0x0138Разрешение прерываний: запись 1 включает бит0x0000 0000
RTC_CNTL_INT_ENA_W1TC_REG0x013CРазрешение прерываний: запись 1 выключает бит0x0000 0000
RTC_CNTL_RETENTION_CTRL_REG0x0140Сохранение состояния процессора и кэша во сне0x2834 0000
RTC_CNTL_FIB_SEL_REG0x0148Настройка детектора просадки питания0x0000 0007

Доступ — обозначения TRM: R/W — чтение и запись, RO — только чтение, WO — только запись, WT — запись 1 запускает действие, SS и SC — бит ставится и сбрасывается аппаратно, WTC — сбрасывается записью 1.

RTC_CNTL_OPTIONS0_REG — программные сбросы, принудительное питание кварца и PLL

Смещение 0x0000, адрес 0x6000 8000, после сброса 0x0000 2000. TRM: регистр 10.1 (RTC_CNTL_RTC_OPTIONS0_REG).

31302928272625242322212019181716
SW_SYS_RSTDG_WRAP_FORCE_NORSTDG_WRAP_FORCE_RST—
1514131211109876543210
—XTL_FORCE_PUXTL_FORCE_PDBBPLL_FORCE_PUBBPLL_FORCE_PDBBPLL_I2C_FORCE_PUBBPLL_I2C_FORCE_PDBB_I2C_FORCE_PUBB_I2C_FORCE_PDSW_PROCPU_RSTSW_APPCPU_RSTSW_STALL_PROCPU_C0SW_STALL_APPCPU_C0
ПолеБитыДоступСбросНазначение
SW_SYS_RST31WO0Запись 1 — программный сброс системы
DG_WRAP_FORCE_NORST30R/W0
DG_WRAP_FORCE_RST29R/W0
XTL_FORCE_PU13R/W11 — принудительно включить кварц
XTL_FORCE_PD12R/W01 — принудительно выключить кварц
BBPLL_FORCE_PU11R/W0
BBPLL_FORCE_PD10R/W0
BBPLL_I2C_FORCE_PU9R/W0
BBPLL_I2C_FORCE_PD8R/W0
BB_I2C_FORCE_PU7R/W0
BB_I2C_FORCE_PD6R/W0
SW_PROCPU_RST5WO0Запись 1 — программный сброс ядра 0
SW_APPCPU_RST4WO0Запись 1 — программный сброс ядра 1
SW_STALL_PROCPU_C03:2R/W0x0Остановка ядра 0: 0x2 при SW_STALL_PROCPU_C1 = 0x21 останавливает ядро
SW_STALL_APPCPU_C01:0R/W0x0Остановка ядра 1: 0x2 при SW_STALL_APPCPU_C1 = 0x21 останавливает ядро

RTC_CNTL_SLP_TIMER0_REG — будильник RTC-таймера, младшие 32 бита

Смещение 0x0004, адрес 0x6000 8004, после сброса 0x0000 0000. TRM: регистр 10.2 (RTC_CNTL_RTC_SLP_TIMER0_REG).

ПолеБитыДоступСбросНазначение
SLP_VAL_LO31:0R/W0x0000 0000Младшие 32 бита порога будильника RTC-таймера

RTC_CNTL_SLP_TIMER1_REG — будильник RTC-таймера, старшие 16 бит и включение

Смещение 0x0008, адрес 0x6000 8008, после сброса 0x0000 0000. TRM: регистр 10.3 (RTC_CNTL_RTC_SLP_TIMER1_REG).

31302928272625242322212019181716
—RTC_MAIN_TIMER_ALARM_EN
1514131211109876543210
SLP_VAL_HI
ПолеБитыДоступСбросНазначение
RTC_MAIN_TIMER_ALARM_EN16WO0Запись 1 включает будильник
SLP_VAL_HI15:0R/W0x0000Старшие 16 бит порога будильника

RTC_CNTL_TIME_UPDATE_REG — защёлкивание RTC-таймера и события для него

Смещение 0x000C, адрес 0x6000 800C, после сброса 0x0000 0000. TRM: регистр 10.4 (RTC_CNTL_RTC_TIME_UPDATE_REG).

31302928272625242322212019181716
RTC_TIME_UPDATE—TIMER_SYS_RSTTIMER_XTL_OFFTIMER_SYS_STALL—
1514131211109876543210
—
ПолеБитыДоступСбросНазначение
RTC_TIME_UPDATE31WO0Запись 1 защёлкивает RTC-таймер в TIME_LOW0 и TIME_HIGH0
TIMER_SYS_RST29R/W01 — защёлкивать таймер по концу сброса цифровой части
TIMER_XTL_OFF28R/W01 — защёлкивать при выключении главного автомата или включении кварца
TIMER_SYS_STALL27R/W01 — защёлкивать при остановке и пуске процессора

RTC_CNTL_TIME_LOWn_REG — rTC-таймер, младшие 32 бита: n = 0 — последнее событие, 1 — предыдущее

2 копии, n = 0, 1: смещение 0x0010 + n · 0x00DC, после сброса 0x0000 0000. TRM: регистр 10.5 (RTC_CNTL_RTC_TIME_LOWn_REG).

ПолеБитыДоступСбросНазначение
RTC_TIMER_VALUEn_LOW31:0RO0x0000 0000Младшие 32 бита защёлкнутого значения RTC-таймера

RTC_CNTL_TIME_HIGHn_REG — rTC-таймер, старшие 16 бит: n = 0 — последнее событие, 1 — предыдущее

2 копии, n = 0, 1: смещение 0x0014 + n · 0x00DC, после сброса 0x0000 0000. TRM: регистр 10.6 (RTC_CNTL_RTC_TIME_HIGHn_REG).

ПолеБитыДоступСбросНазначение
RTC_TIMER_VALUEn_HIGH15:0RO0x0000Старшие 16 бит защёлкнутого значения

RTC_CNTL_STATE0_REG — переход в сон, программное прерывание RTC

Смещение 0x0018, адрес 0x6000 8018, после сброса 0x0000 0000. TRM: регистр 10.7 (RTC_CNTL_RTC_STATE0_REG).

31302928272625242322212019181716
SLEEP_ENSLP_REJECTSLP_WAKEUPSDIO_ACTIVE_IND—APB2RTC_BRIDGE_SEL—
1514131211109876543210
—RTC_SLP_REJECT_CAUSE_CLRRTC_SW_CPU_INT
ПолеБитыДоступСбросНазначение
SLEEP_EN31R/W01 — перевести чип в сон
SLP_REJECT30R/W0Признак отказа от сна
SLP_WAKEUP29R/W0Признак события пробуждения
SDIO_ACTIVE_IND28RO0
APB2RTC_BRIDGE_SEL22R/W0
RTC_SLP_REJECT_CAUSE_CLR1WO0Запись 1 сбрасывает причину отказа от сна
RTC_SW_CPU_INT0WO0Запись 1 — программное прерывание RTC для ядра

RTC_CNTL_TIMER1_REG — ожидание стабилизации PLL, кварца и RC-генератора

Смещение 0x001C, адрес 0x6000 801C, после сброса 0x2814 0403. TRM: регистр 10.8 (RTC_CNTL_RTC_TIMER1_REG).

31302928272625242322212019181716
PLL_BUF_WAITXTL_BUF_WAIT
1514131211109876543210
XTL_BUF_WAITCK8M_WAITCPU_STALL_WAITCPU_STALL_EN
ПолеБитыДоступСброс
PLL_BUF_WAIT31:24R/W0x28
XTL_BUF_WAIT23:14R/W0x050
CK8M_WAIT13:6R/W0x10
CPU_STALL_WAIT5:1R/W0x01
CPU_STALL_EN0R/W1

RTC_CNTL_TIMER2_REG — ожидание перед касанием и ULP, наименьшее время RC_FAST

Смещение 0x0020, адрес 0x6000 8020, после сброса 0x0108 0000. TRM: регистр 10.9 (RTC_CNTL_RTC_TIMER2_REG).

31302928272625242322212019181716
MIN_TIME_CK8M_OFFULPCP_TOUCH_START_WAIT
1514131211109876543210
ULPCP_TOUCH_START_WAIT—
ПолеБитыДоступСброс
MIN_TIME_CK8M_OFF31:24R/W0x01
ULPCP_TOUCH_START_WAIT23:15R/W0x010

RTC_CNTL_TIMER5_REG — наименьшая длительность сна

Смещение 0x002C, адрес 0x6000 802C, после сброса 0x0000 8000. TRM: регистр 10.10 (RTC_CNTL_RTC_TIMER5_REG).

ПолеБитыДоступСброс
MIN_SLP_VAL15:8R/W0x80

RTC_CNTL_ANA_CONF_REG — сброс по детектору помех, питание SLEEP_I2CPOR

Смещение 0x0034, адрес 0x6000 8034, после сброса 0x0004 0000. TRM: регистр 10.11 (RTC_CNTL_RTC_ANA_CONF_REG).

31302928272625242322212019181716
—GLITCH_RST_ENI2C_RESET_POR_FORCE_PUI2C_RESET_POR_FORCE_PD—
1514131211109876543210
—
ПолеБитыДоступСброс
GLITCH_RST_EN20R/W0
I2C_RESET_POR_FORCE_PU19R/W0
I2C_RESET_POR_FORCE_PD18R/W1

RTC_CNTL_RESET_STATE_REG — причины сброса ядер, флаги и вектор после сброса

Смещение 0x0038, адрес 0x6000 8038, после сброса 0x0000 3000. TRM: регистр 10.12 (RTC_CNTL_RTC_RESET_STATE_REG).

31302928272625242322212019181716
—RTC_PRO_DRESET_MASKRTC_APP_DRESET_MASKRESET_FLAG_JTAG_APPCPU_CLRRESET_FLAG_JTAG_PROCPU_CLRRESET_FLAG_JTAG_APPCPURESET_FLAG_JTAG_PROCPUPROCPU_OCD_HALT_ON_RESETAPPCPU_OCD_HALT_ON_RESETRESET_FLAG_APPCPU_CLRRESET_FLAG_PROCPU_CLR
1514131211109876543210
RESET_FLAG_APPCPURESET_FLAG_PROCPUPROCPU_STAT_VECTOR_SELAPPCPU_STAT_VECTOR_SELRESET_CAUSE_APPCPURESET_CAUSE_PROCPU
ПолеБитыДоступСбросНазначение
RTC_PRO_DRESET_MASK25R/W0
RTC_APP_DRESET_MASK24R/W0
RESET_FLAG_JTAG_APPCPU_CLR23WO0
RESET_FLAG_JTAG_PROCPU_CLR22WO0
RESET_FLAG_JTAG_APPCPU21RO0
RESET_FLAG_JTAG_PROCPU20RO0
PROCPU_OCD_HALT_ON_RESET19R/W01 — ядро 0 останавливается для отладчика после сброса
APPCPU_OCD_HALT_ON_RESET18R/W01 — ядро 1 останавливается для отладчика после сброса
RESET_FLAG_APPCPU_CLR17WO0
RESET_FLAG_PROCPU_CLR16WO0
RESET_FLAG_APPCPU15RO0
RESET_FLAG_PROCPU14RO0
PROCPU_STAT_VECTOR_SEL13R/W1Выбор вектора состояния ядра 0 после сброса
APPCPU_STAT_VECTOR_SEL12R/W1Выбор вектора состояния ядра 1 после сброса
RESET_CAUSE_APPCPU11:6RO0x00Причина последнего сброса ядра 1
RESET_CAUSE_PROCPU5:0RO0x00Причина последнего сброса ядра 0

RTC_CNTL_WAKEUP_STATE_REG — источники пробуждения

Смещение 0x003C, адрес 0x6000 803C, после сброса 0x0006 0000. TRM: регистр 10.13 (RTC_CNTL_RTC_WAKEUP_STATE_REG).

ПолеБитыДоступСбросНазначение
RTC_WAKEUP_ENA31:15R/W0x0000CИсточники пробуждения: 0x1 EXT0, 0x2 EXT1, 0x4 GPIO, 0x8 RTC-таймер, 0x40 UART0, 0x80 UART1, 0x100 касание, 0x200 ULP-FSM, 0x800 ULP-RISC-V (таблица 10.4-3 TRM)

RTC_CNTL_INT_ENA_REG — разрешение прерываний

Смещение 0x0040, адрес 0x6000 8040, после сброса 0x0000 0000. TRM: регистр 10.14.

ПолеБитыДоступСбросНазначение
RTC_TOUCH_APPROACH_LOOP_DONE_INT_ENA20R/W0Закончен цикл измерения приближения
RTC_GLITCH_DET_INT_ENA19R/W0Обнаружена помеха
RTC_TOUCH_TIMEOUT_INT_ENA18R/W0Таймаут сенсора касания
RTC_COCPU_TRAP_INT_ENA17R/W0Исключение в ULP-RISC-V
RTC_XTAL32K_DEAD_INT_ENA16R/W0Кварц 32 кГц перестал работать
RTC_SWD_INT_ENA15R/W0Прерывание супер-сторожа
RTC_SARADC2_INT_ENA14R/W0Прерывание SAR ADC2
RTC_COCPU_INT_ENA13R/W0Прерывание ULP-RISC-V
RTC_TSENS_INT_ENA12R/W0Прерывание датчика температуры
RTC_SARADC1_INT_ENA11R/W0Прерывание SAR ADC1
RTC_MAIN_TIMER_INT_ENA10R/W0Сработал будильник RTC-таймера
RTC_BROWN_OUT_INT_ENA9R/W0Детектор просадки питания
RTC_TOUCH_INACTIVE_INT_ENA8R/W0Касание прекратилось
RTC_TOUCH_ACTIVE_INT_ENA7R/W0Обнаружено касание
RTC_TOUCH_DONE_INT_ENA6R/W0Закончено измерение одного сенсора касания
RTC_ULP_CP_INT_ENA5R/W0Прерывание сопроцессора ULP
RTC_TOUCH_SCAN_DONE_INT_ENA4R/W0Закончено сканирование сенсоров касания
RTC_WDT_INT_ENA3R/W0Сработал RTC-сторож
SDIO_IDLE_INT_ENA2R/W0SDIO простаивает
SLP_REJECT_INT_ENA1R/W0Переход в сон отклонён
SLP_WAKEUP_INT_ENA0R/W0Чип проснулся

RTC_CNTL_INT_RAW_REG — необработанные флаги прерываний

Смещение 0x0044, адрес 0x6000 8044, после сброса 0x0000 0000. TRM: регистр 10.15.

ПолеБитыДоступСбросНазначение
RTC_TOUCH_APPROACH_LOOP_DONE_INT_RAW20R/W0Закончен цикл измерения приближения
RTC_GLITCH_DET_INT_RAW19RO0Обнаружена помеха
RTC_TOUCH_TIMEOUT_INT_RAW18RO0Таймаут сенсора касания
RTC_COCPU_TRAP_INT_RAW17RO0Исключение в ULP-RISC-V
RTC_XTAL32K_DEAD_INT_RAW16RO0Кварц 32 кГц перестал работать
RTC_SWD_INT_RAW15RO0Прерывание супер-сторожа
RTC_SARADC2_INT_RAW14RO0Прерывание SAR ADC2
RTC_COCPU_INT_RAW13RO0Прерывание ULP-RISC-V
RTC_TSENS_INT_RAW12RO0Прерывание датчика температуры
RTC_SARADC1_INT_RAW11RO0Прерывание SAR ADC1
RTC_MAIN_TIMER_INT_RAW10RO0Сработал будильник RTC-таймера
RTC_BROWN_OUT_INT_RAW9RO0Детектор просадки питания
RTC_TOUCH_INACTIVE_INT_RAW8RO0Касание прекратилось
RTC_TOUCH_ACTIVE_INT_RAW7RO0Обнаружено касание
RTC_TOUCH_DONE_INT_RAW6RO0Закончено измерение одного сенсора касания
RTC_ULP_CP_INT_RAW5RO0Прерывание сопроцессора ULP
RTC_TOUCH_SCAN_DONE_INT_RAW4RO0Закончено сканирование сенсоров касания
RTC_WDT_INT_RAW3RO0Сработал RTC-сторож
SDIO_IDLE_INT_RAW2RO0SDIO простаивает
SLP_REJECT_INT_RAW1RO0Переход в сон отклонён
SLP_WAKEUP_INT_RAW0RO0Чип проснулся

RTC_CNTL_INT_ST_REG — флаги прерываний после маски разрешения

Смещение 0x0048, адрес 0x6000 8048, после сброса 0x0000 0000. TRM: регистр 10.16.

ПолеБитыДоступСбросНазначение
RTC_TOUCH_APPROACH_LOOP_DONE_INT_ST20RO0Закончен цикл измерения приближения
RTC_GLITCH_DET_INT_ST19RO0Обнаружена помеха
RTC_TOUCH_TIMEOUT_INT_ST18RO0Таймаут сенсора касания
RTC_COCPU_TRAP_INT_ST17RO0Исключение в ULP-RISC-V
RTC_XTAL32K_DEAD_INT_ST16RO0Кварц 32 кГц перестал работать
RTC_SWD_INT_ST15RO0Прерывание супер-сторожа
RTC_SARADC2_INT_ST14RO0Прерывание SAR ADC2
RTC_COCPU_INT_ST13RO0Прерывание ULP-RISC-V
RTC_TSENS_INT_ST12RO0Прерывание датчика температуры
RTC_SARADC1_INT_ST11RO0Прерывание SAR ADC1
RTC_MAIN_TIMER_INT_ST10RO0Сработал будильник RTC-таймера
RTC_BROWN_OUT_INT_ST9RO0Детектор просадки питания
RTC_TOUCH_INACTIVE_INT_ST8RO0Касание прекратилось
RTC_TOUCH_ACTIVE_INT_ST7RO0Обнаружено касание
RTC_TOUCH_DONE_INT_ST6RO0Закончено измерение одного сенсора касания
RTC_ULP_CP_INT_ST5RO0Прерывание сопроцессора ULP
RTC_TOUCH_SCAN_DONE_INT_ST4RO0Закончено сканирование сенсоров касания
RTC_WDT_INT_ST3RO0Сработал RTC-сторож
SDIO_IDLE_INT_ST2RO0SDIO простаивает
SLP_REJECT_INT_ST1RO0Переход в сон отклонён
SLP_WAKEUP_INT_ST0RO0Чип проснулся

RTC_CNTL_INT_CLR_REG — сброс флагов прерываний записью 1

Смещение 0x004C, адрес 0x6000 804C, после сброса 0x0000 0000. TRM: регистр 10.17.

ПолеБитыДоступСбросНазначение
RTC_TOUCH_APPROACH_LOOP_DONE_INT_CLR20WO0Закончен цикл измерения приближения
RTC_GLITCH_DET_INT_CLR19WO0Обнаружена помеха
RTC_TOUCH_TIMEOUT_INT_CLR18WO0Таймаут сенсора касания
RTC_COCPU_TRAP_INT_CLR17WO0Исключение в ULP-RISC-V
RTC_XTAL32K_DEAD_INT_CLR16WO0Кварц 32 кГц перестал работать
RTC_SWD_INT_CLR15WO0Прерывание супер-сторожа
RTC_SARADC2_INT_CLR14WO0Прерывание SAR ADC2
RTC_COCPU_INT_CLR13WO0Прерывание ULP-RISC-V
RTC_TSENS_INT_CLR12WO0Прерывание датчика температуры
RTC_SARADC1_INT_CLR11WO0Прерывание SAR ADC1
RTC_MAIN_TIMER_INT_CLR10WO0Сработал будильник RTC-таймера
RTC_BROWN_OUT_INT_CLR9WO0Детектор просадки питания
RTC_TOUCH_INACTIVE_INT_CLR8WO0Касание прекратилось
RTC_TOUCH_ACTIVE_INT_CLR7WO0Обнаружено касание
RTC_TOUCH_DONE_INT_CLR6WO0Закончено измерение одного сенсора касания
RTC_ULP_CP_INT_CLR5WO0Прерывание сопроцессора ULP
RTC_TOUCH_SCAN_DONE_INT_CLR4WO0Закончено сканирование сенсоров касания
RTC_WDT_INT_CLR3WO0Сработал RTC-сторож
SDIO_IDLE_INT_CLR2WO0SDIO простаивает
SLP_REJECT_INT_CLR1WO0Переход в сон отклонён
SLP_WAKEUP_INT_CLR0WO0Чип проснулся

RTC_CNTL_STOREn_REG — регистр n, сохраняющий данные во сне

8 копий, n = 0…7: адреса — в таблице, после сброса 0x0000 0000. TRM: регистр 10.18 (RTC_CNTL_RTC_STORE0_REG).

Восемь регистров лежат двумя группами: STORE0…3 по смещениям 0x50…0x5C и STORE4…7 по смещениям 0xC0…0xCC (раздел 10.2 TRM: 8 регистров по 32 бита).

КопияСмещениеАдрес
STORE00x00500x6000 8050
STORE10x00540x6000 8054
STORE20x00580x6000 8058
STORE30x005C0x6000 805C
STORE40x00C00x6000 80C0
STORE50x00C40x6000 80C4
STORE60x00C80x6000 80C8
STORE70x00CC0x6000 80CC
ПолеБитыДоступСбросНазначение
RTC_SCRATCHn31:0R/W0x0000 000032 бита данных, которые сохраняются во сне

RTC_CNTL_EXT_XTL_CONF_REG — кварц 32 кГц и его сторож

Смещение 0x0060, адрес 0x6000 8060, после сброса 0x0006 6C80. TRM: регистр 10.22 (RTC_CNTL_RTC_EXT_XTL_CONF_REG).

ПолеБитыДоступСброс
XTL_EXT_CTR_EN31R/W0
XTL_EXT_CTR_LV30R/W0
RTC_XTAL32K_GPIO_SEL23R/W0
RTC_WDT_STATE22:20RO0x0
DAC_XTAL_32K19:17R/W0x3
XPD_XTAL_32K16R/W0
DRES_XTAL_32K15:13R/W0x3
DGM_XTAL_32K12:10R/W0x3
DBUF_XTAL_32K9R/W0
ENCKINIT_XTAL_32K8R/W0
XTAL32K_XPD_FORCE7R/W1
XTAL32K_AUTO_RETURN6R/W0
XTAL32K_AUTO_RESTART5R/W0
XTAL32K_AUTO_BACKUP4R/W0
XTAL32K_EXT_CLK_FO3R/W0
XTAL32K_WDT_RESET2R/W0
XTAL32K_WDT_CLK_FO1R/W0
XTAL32K_WDT_EN0R/W0

RTC_CNTL_EXT_WAKEUP_CONF_REG — уровни пробуждения EXT0 и EXT1, фильтр GPIO

Смещение 0x0064, адрес 0x6000 8064, после сброса 0x0000 0000. TRM: регистр 10.23 (RTC_CNTL_RTC_EXT_WAKEUP_CONF_REG).

31302928272625242322212019181716
EXT_WAKEUP1_LVEXT_WAKEUP0_LVGPIO_WAKEUP_FILTER—
1514131211109876543210
—
ПолеБитыДоступСбросНазначение
EXT_WAKEUP1_LV31R/W0EXT1: 1 — будит высокий уровень любого вывода набора, 0 — низкий
EXT_WAKEUP0_LV30R/W0Уровень пробуждения EXT0: 1 — высокий, 0 — низкий
GPIO_WAKEUP_FILTER29R/W01 — фильтр события пробуждения по GPIO

RTC_CNTL_SLP_REJECT_CONF_REG — отказ от перехода в сон

Смещение 0x0068, адрес 0x6000 8068, после сброса 0x0000 0000. TRM: регистр 10.24 (RTC_CNTL_RTC_SLP_REJECT_CONF_REG).

31302928272625242322212019181716
DEEP_SLP_REJECT_ENLIGHT_SLP_REJECT_ENRTC_SLEEP_REJECT_ENA
1514131211109876543210
RTC_SLEEP_REJECT_ENA—
ПолеБитыДоступСбросНазначение
DEEP_SLP_REJECT_EN31R/W01 — разрешить отказ от глубокого сна
LIGHT_SLP_REJECT_EN30R/W01 — разрешить отказ от лёгкого сна
RTC_SLEEP_REJECT_ENA29:12R/W0x00000Источники, по которым чип отказывается засыпать

RTC_CNTL_CLK_CONF_REG — выбор медленного и быстрого тактов RTC, RC_FAST_CLK

Смещение 0x0074, адрес 0x6000 8074, после сброса 0x1158 321C. TRM: регистр 10.25 (RTC_CNTL_RTC_CLK_CONF_REG).

ПолеБитыДоступСбросНазначение
ANA_CLK_RTC_SEL31:30R/W0x0Медленный такт RTC: 0 — RC_SLOW_CLK, 1 — XTAL32K_CLK, 2 — RC_FAST_DIV_CLK
FAST_CLK_RTC_SEL29R/W0Быстрый такт RTC: 0 — XTAL_DIV_CLK, 1 — RC_FAST_CLK с делителем
XTAL_GLOBAL_FORCE_NOGATING28R/W1
XTAL_GLOBAL_FORCE_GATING27R/W0
CK8M_FORCE_PU26R/W01 — принудительно включить RC_FAST_CLK
CK8M_FORCE_PD25R/W01 — принудительно выключить RC_FAST_CLK
CK8M_DFREQ24:17R/W0xAC
CK8M_FORCE_NOGATING16R/W0
XTAL_FORCE_NOGATING15R/W0
CK8M_DIV_SEL14:12R/W0x3Делитель RC_FAST_CLK: значение + 1
DIG_CLK8M_EN10R/W01 — такт RC_FAST_CLK для цифровой части
DIG_CLK8M_D256_EN9R/W1
DIG_XTAL32K_EN8R/W01 — такт кварца 32 кГц для цифровой части
ENB_CK8M_DIV7R/W0
ENB_CK8M6R/W0
CK8M_DIV5:4R/W0x1
CK8M_DIV_SEL_VLD3R/W1
EFUSE_CLK_FORCE_NOGATING2R/W1
EFUSE_CLK_FORCE_GATING1R/W0

RTC_CNTL_SLOW_CLK_CONF_REG — делитель RC_SLOW_CLK

Смещение 0x0078, адрес 0x6000 8078, после сброса 0x0040 0000. TRM: регистр 10.26 (RTC_CNTL_RTC_SLOW_CLK_CONF_REG).

31302928272625242322212019181716
—RTC_ANA_CLK_DIVRTC_ANA_CLK_DIV_VLD—
1514131211109876543210
—
ПолеБитыДоступСброс
RTC_ANA_CLK_DIV30:23R/W0x00
RTC_ANA_CLK_DIV_VLD22R/W1

RTC_CNTL_SDIO_CONF_REG — регулятор питания флеш-памяти

Смещение 0x007C, адрес 0x6000 807C, после сброса 0x00A0 0000. TRM: регистр 10.27 (RTC_CNTL_RTC_SDIO_CONF_REG).

31302928272625242322212019181716
XPD_SDIO_REG—SDIO_TIEHSDIO_FORCESDIO_REG_PD_EN—
1514131211109876543210
—
ПолеБитыДоступСброс
XPD_SDIO_REG31R/W0
SDIO_TIEH23R/W1
SDIO_FORCE22R/W0
SDIO_REG_PD_EN21R/W1

RTC_CNTL_REG — регулятор RTC, частота тактов RTC

Смещение 0x0084, адрес 0x6000 8084, после сброса 0xA000 0000. TRM: регистр 10.28.

31302928272625242322212019181716
RTC_REGULATOR_FORCE_PURTC_REGULATOR_FORCE_PDRTC_DBOOST_FORCE_PURTC_DBOOST_FORCE_PD—SCK_DCAP
1514131211109876543210
SCK_DCAP—DIG_REG_CAL_EN—
ПолеБитыДоступСброс
RTC_REGULATOR_FORCE_PU31R/W1
RTC_REGULATOR_FORCE_PD30R/W0
RTC_DBOOST_FORCE_PU29R/W1
RTC_DBOOST_FORCE_PD28R/W0
SCK_DCAP21:14R/W0x00
DIG_REG_CAL_EN7R/W0

RTC_CNTL_PWC_REG — питание и изоляция RTC-периферии и памяти

Смещение 0x0088, адрес 0x6000 8088, после сброса 0x0000 0920. TRM: регистр 10.29 (RTC_CNTL_RTC_PWC_REG).

31302928272625242322212019181716
—RTC_PAD_FORCE_HOLDRTC_PD_ENRTC_FORCE_PURTC_FORCE_PD—
1514131211109876543210
—RTC_SLOWMEM_FORCE_LPURTC_SLOWMEM_FORCE_LPDRTC_SLOWMEM_FOLW_CPURTC_FASTMEM_FORCE_LPURTC_FASTMEM_FORCE_LPDRTC_FASTMEM_FOLW_CPURTC_FORCE_NOISORTC_FORCE_ISO—
ПолеБитыДоступСброс
RTC_PAD_FORCE_HOLD21R/W0
RTC_PD_EN20R/W0
RTC_FORCE_PU19R/W0
RTC_FORCE_PD18R/W0
RTC_SLOWMEM_FORCE_LPU11R/W1
RTC_SLOWMEM_FORCE_LPD10R/W0
RTC_SLOWMEM_FOLW_CPU9R/W0
RTC_FASTMEM_FORCE_LPU8R/W1
RTC_FASTMEM_FORCE_LPD7R/W0
RTC_FASTMEM_FOLW_CPU6R/W0
RTC_FORCE_NOISO5R/W1
RTC_FORCE_ISO4R/W0

RTC_CNTL_DIG_PWC_REG — питание цифровых доменов во сне

Смещение 0x0090, адрес 0x6000 8090, после сброса 0x0054 4010. TRM: регистр 10.30.

31302928272625242322212019181716
DG_WRAP_PD_ENWIFI_PD_ENCPU_TOP_PD_ENDG_PERI_PD_EN—CPU_TOP_FORCE_PUCPU_TOP_FORCE_PDDG_WRAP_FORCE_PUDG_WRAP_FORCE_PDWIFI_FORCE_PUWIFI_FORCE_PD—
1514131211109876543210
—DG_PERI_FORCE_PUDG_PERI_FORCE_PD—LSLP_MEM_FORCE_PULSLP_MEM_FORCE_PD—
ПолеБитыДоступСброс
DG_WRAP_PD_EN31R/W0
WIFI_PD_EN30R/W0
CPU_TOP_PD_EN29R/W0
DG_PERI_PD_EN28R/W0
CPU_TOP_FORCE_PU22R/W1
CPU_TOP_FORCE_PD21R/W0
DG_WRAP_FORCE_PU20R/W1
DG_WRAP_FORCE_PD19R/W0
WIFI_FORCE_PU18R/W1
WIFI_FORCE_PD17R/W0
DG_PERI_FORCE_PU14R/W1
DG_PERI_FORCE_PD13R/W0
LSLP_MEM_FORCE_PU4R/W1
LSLP_MEM_FORCE_PD3R/W0

RTC_CNTL_DIG_ISO_REG — изоляция цифровых доменов, удержание цифровых выводов

Смещение 0x0094, адрес 0x6000 8094, после сброса 0xAA00 5000. TRM: регистр 10.31.

31302928272625242322212019181716
DG_WRAP_FORCE_NOISODG_WRAP_FORCE_ISOWIFI_FORCE_NOISOWIFI_FORCE_ISOCPU_TOP_FORCE_NOISOCPU_TOP_FORCE_ISODG_PERI_FORCE_NOISODG_PERI_FORCE_ISO—
1514131211109876543210
DG_PAD_FORCE_HOLDDG_PAD_FORCE_UNHOLDDG_PAD_FORCE_ISODG_PAD_FORCE_NOISODG_PAD_AUTOHOLD_ENCLR_DG_PAD_AUTOHOLDDG_PAD_AUTOHOLD—
ПолеБитыДоступСброс
DG_WRAP_FORCE_NOISO31R/W1
DG_WRAP_FORCE_ISO30R/W0
WIFI_FORCE_NOISO29R/W1
WIFI_FORCE_ISO28R/W0
CPU_TOP_FORCE_NOISO27R/W1
CPU_TOP_FORCE_ISO26R/W0
DG_PERI_FORCE_NOISO25R/W1
DG_PERI_FORCE_ISO24R/W0
DG_PAD_FORCE_HOLD15R/W0
DG_PAD_FORCE_UNHOLD14R/W1
DG_PAD_FORCE_ISO13R/W0
DG_PAD_FORCE_NOISO12R/W1
DG_PAD_AUTOHOLD_EN11R/W0
CLR_DG_PAD_AUTOHOLD10WO0
DG_PAD_AUTOHOLD9RO0

RTC_CNTL_WDTCONFIG0_REG — rTC-сторож: включение, действия стадий, режимы

Смещение 0x0098, адрес 0x6000 8098, после сброса 0x0001 3200. TRM: регистр 10.32 (RTC_CNTL_RTC_WDTCONFIG0_REG).

Значения после сброса стадий по SVD и TRM: WDTCONFIG1 = 200 000 тактов, WDTCONFIG2 = 80 000, WDTCONFIG3 и WDTCONFIG4 — 4095. Стадия 0 дополнительно растягивается полем EFUSE_WDT_DELAY_SEL.

31302928272625242322212019181716
WDT_ENWDT_STG0WDT_STG1WDT_STG2WDT_STG3WDT_CPU_RESET_LENGTH
1514131211109876543210
WDT_SYS_RESET_LENGTHWDT_FLASHBOOT_MOD_ENWDT_PROCPU_RESET_ENWDT_APPCPU_RESET_ENWDT_PAUSE_IN_SLP—
ПолеБитыДоступСбросНазначение
WDT_EN31R/W01 — RTC-сторож включён
WDT_STG030:28R/W0x0Действие стадии 0: 1 — прерывание, 2 — сброс процессора, 3 — сброс основной системы, 4 — сброс системы вместе с RTC
WDT_STG127:25R/W0x0Действие стадии 1, значения как у WDT_STG0
WDT_STG224:22R/W0x0Действие стадии 2, значения как у WDT_STG0
WDT_STG321:19R/W0x0Действие стадии 3, значения как у WDT_STG0
WDT_CPU_RESET_LENGTH18:16R/W0x1
WDT_SYS_RESET_LENGTH15:13R/W0x1
WDT_FLASHBOOT_MOD_EN12R/W11 — сторож включён на время загрузки из флеш-памяти
WDT_PROCPU_RESET_EN11R/W01 — сторож может сбросить ядро 0
WDT_APPCPU_RESET_EN10R/W01 — сторож может сбросить ядро 1
WDT_PAUSE_IN_SLP9R/W11 — сторож стоит во сне

RTC_CNTL_WDTCONFIG1_REG — rTC-сторож: длительность стадии 0

Смещение 0x009C, адрес 0x6000 809C, после сброса 0x0003 0D40. TRM: регистр 10.33 (RTC_CNTL_RTC_WDTCONFIG1_REG).

ПолеБитыДоступСбросНазначение
WDT_STG0_HOLD31:0R/W0x0003 0D40Длительность стадии 0: по разделу 13.2.2.2 TRM T = WDT_STG0_HOLD << (EFUSE_WDT_DELAY_SEL + 1) тактов

RTC_CNTL_WDTCONFIG2_REG — rTC-сторож: длительность стадии 1

Смещение 0x00A0, адрес 0x6000 80A0, после сброса 0x0001 3880. TRM: регистр 10.34 (RTC_CNTL_RTC_WDTCONFIG2_REG).

ПолеБитыДоступСбросНазначение
WDT_STG1_HOLD31:0R/W0x0001 3880Длительность стадии 1 в тактах RTC_SLOW_CLK

RTC_CNTL_WDTCONFIG3_REG — rTC-сторож: длительность стадии 2

Смещение 0x00A4, адрес 0x6000 80A4, после сброса 0x0000 0FFF. TRM: регистр 10.35 (RTC_CNTL_RTC_WDTCONFIG3_REG).

ПолеБитыДоступСбросНазначение
WDT_STG2_HOLD31:0R/W0x0000 0FFFДлительность стадии 2 в тактах RTC_SLOW_CLK

RTC_CNTL_WDTCONFIG4_REG — rTC-сторож: длительность стадии 3

Смещение 0x00A8, адрес 0x6000 80A8, после сброса 0x0000 0FFF. TRM: регистр 10.36 (RTC_CNTL_RTC_WDTCONFIG4_REG).

ПолеБитыДоступСбросНазначение
WDT_STG3_HOLD31:0R/W0x0000 0FFFДлительность стадии 3 в тактах RTC_SLOW_CLK

RTC_CNTL_WDTFEED_REG — rTC-сторож: кормление

Смещение 0x00AC, адрес 0x6000 80AC, после сброса 0x0000 0000. TRM: регистр 10.37 (RTC_CNTL_RTC_WDTFEED_REG).

ПолеБитыДоступСбросНазначение
RTC_WDT_FEED31WO0Запись 1 кормит RTC-сторож

RTC_CNTL_WDTWPROTECT_REG — rTC-сторож: защита записи

Смещение 0x00B0, адрес 0x6000 80B0, после сброса 0x50D8 3AA1. TRM: регистр 10.38 (RTC_CNTL_RTC_WDTWPROTECT_REG).

ПолеБитыДоступСбросНазначение
WDT_WKEY31:0R/W0x50D8 3AA1Пока значение отличается от 0x50D83AA1, запись в регистры RWDT запрещена

RTC_CNTL_SWD_CONF_REG — супер-сторож: кормление, отключение, флаги

Смещение 0x00B4, адрес 0x6000 80B4, после сброса 0x04B0 0000. TRM: регистр 10.39 (RTC_CNTL_RTC_SWD_CONF_REG).

31302928272625242322212019181716
SWD_AUTO_FEED_ENSWD_DISABLESWD_FEEDSWD_RST_FLAG_CLRSWD_SIGNAL_WIDTHSWD_BYPASS_RST—
1514131211109876543210
—SWD_FEED_INTSWD_RESET_FLAG
ПолеБитыДоступСбросНазначение
SWD_AUTO_FEED_EN31R/W01 — кормить супер-сторож автоматически по его прерыванию
SWD_DISABLE30R/W01 — выключить супер-сторож
SWD_FEED29WO0Запись 1 кормит супер-сторож
SWD_RST_FLAG_CLR28WO0Запись 1 сбрасывает флаг сброса от супер-сторожа
SWD_SIGNAL_WIDTH27:18R/W0x12C
SWD_BYPASS_RST17R/W0
SWD_FEED_INT1RO0Запрос супер-сторожа покормить его
SWD_RESET_FLAG0RO0Флаг сброса от супер-сторожа

RTC_CNTL_SWD_WPROTECT_REG — супер-сторож: защита записи

Смещение 0x00B8, адрес 0x6000 80B8, после сброса 0x8F1D 312A. TRM: регистр 10.40 (RTC_CNTL_RTC_SWD_WPROTECT_REG).

ПолеБитыДоступСбросНазначение
SWD_WKEY31:0R/W0x8F1D 312AКлюч защиты записи супер-сторожа; снимает защиту значение 0x8F1D312A

RTC_CNTL_SW_CPU_STALL_REG — программная остановка ядер, вторая часть кода

Смещение 0x00BC, адрес 0x6000 80BC, после сброса 0x0000 0000. TRM: регистр 10.41 (RTC_CNTL_RTC_SW_CPU_STALL_REG).

В описании этого регистра TRM ядра названы наоборот (APPCPU_C1 — «CPU0»); в описании RTC_CNTL_RTC_OPTIONS0_REG APPCPU — ядро 1, PROCPU — ядро 0, как и в ESP-IDF.

31302928272625242322212019181716
SW_STALL_PROCPU_C1SW_STALL_APPCPU_C1—
1514131211109876543210
—
ПолеБитыДоступСброс
SW_STALL_PROCPU_C131:26R/W0x00
SW_STALL_APPCPU_C125:20R/W0x00

RTC_CNTL_LOW_POWER_ST_REG — состояние RTC: сон или работа

Смещение 0x00D0, адрес 0x6000 80D0, после сброса 0x0000 0000. TRM: регистр 10.46 (RTC_CNTL_RTC_LOW_POWER_ST_REG).

31302928272625242322212019181716
—MAIN_STATE_IN_IDEL—RTC_RDY_FOR_WAKEUP—
1514131211109876543210
—
ПолеБитыДоступСбросНазначение
MAIN_STATE_IN_IDEL27RO01 — чип работает, не во сне; 0 — спит, засыпает или просыпается (MAIN_STATE_IN_IDLE в TRM)
RTC_RDY_FOR_WAKEUP19RO01 — RTC готов принять событие пробуждения

RTC_CNTL_PAD_HOLD_REG — удержание состояния RTC-выводов

Смещение 0x00D8, адрес 0x6000 80D8, после сброса 0x0000 0000. TRM: регистр 10.47 (RTC_CNTL_RTC_PAD_HOLD_REG).

ПолеБитыДоступСброс
RTC_PAD21_HOLD21R/W0
RTC_PAD20_HOLD20R/W0
RTC_PAD19_HOLD19R/W0
PDAC2_HOLD18R/W0
PDAC1_HOLD17R/W0
X32N_HOLD16R/W0
X32P_HOLD15R/W0
TOUCH_PAD14_HOLD14R/W0
TOUCH_PAD13_HOLD13R/W0
TOUCH_PAD12_HOLD12R/W0
TOUCH_PAD11_HOLD11R/W0
TOUCH_PAD10_HOLD10R/W0
TOUCH_PAD9_HOLD9R/W0
TOUCH_PAD8_HOLD8R/W0
TOUCH_PAD7_HOLD7R/W0
TOUCH_PAD6_HOLD6R/W0
TOUCH_PAD5_HOLD5R/W0
TOUCH_PAD4_HOLD4R/W0
TOUCH_PAD3_HOLD3R/W0
TOUCH_PAD2_HOLD2R/W0
TOUCH_PAD1_HOLD1R/W0
TOUCH_PAD0_HOLD0R/W0

RTC_CNTL_DIG_PAD_HOLD_REG — удержание состояния цифровых выводов

Смещение 0x00DC, адрес 0x6000 80DC, после сброса 0x0000 0000. TRM: регистр 10.48.

ПолеБитыДоступСброс
DIG_PAD_HOLD31:0R/W0x0000 0000

RTC_CNTL_EXT_WAKEUP1_REG — выводы источника пробуждения EXT1

Смещение 0x00E0, адрес 0x6000 80E0, после сброса 0x0000 0000. TRM: регистр 10.49 (RTC_CNTL_RTC_EXT_WAKEUP1_REG).

31302928272625242322212019181716
—EXT_WAKEUP1_STATUS_CLREXT_WAKEUP1_SEL
1514131211109876543210
EXT_WAKEUP1_SEL
ПолеБитыДоступСбросНазначение
EXT_WAKEUP1_STATUS_CLR22WO0Запись 1 сбрасывает EXT_WAKEUP1_STATUS
EXT_WAKEUP1_SEL21:0R/W0x000000Битовая карта RTC-выводов источника EXT1

RTC_CNTL_EXT_WAKEUP1_STATUS_REG — какие выводы EXT1 разбудили чип

Смещение 0x00E4, адрес 0x6000 80E4, после сброса 0x0000 0000. TRM: регистр 10.50 (RTC_CNTL_RTC_EXT_WAKEUP1_STATUS_REG).

ПолеБитыДоступСбросНазначение
EXT_WAKEUP1_STATUS21:0RO0x000000Выводы EXT1, вызвавшие пробуждение

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

Смещение 0x00E8, адрес 0x6000 80E8, после сброса 0x43FF 0010. TRM: регистр 10.51 (RTC_CNTL_RTC_BROWN_OUT_REG).

31302928272625242322212019181716
RTC_BROWN_OUT_DETBROWN_OUT_ENABROWN_OUT_CNT_CLRBROWN_OUT_ANA_RST_ENBROWN_OUT_RST_SELBROWN_OUT_RST_ENABROWN_OUT_RST_WAIT
1514131211109876543210
BROWN_OUT_PD_RF_ENABROWN_OUT_CLOSE_FLASH_ENABROWN_OUT_INT_WAIT—
ПолеБитыДоступСбросНазначение
RTC_BROWN_OUT_DET31RO01 — напряжение ниже порога детектора
BROWN_OUT_ENA30R/W11 — детектор просадки включён (режим 0)
BROWN_OUT_CNT_CLR29WO0Запись 1 сбрасывает счётчик детектора
BROWN_OUT_ANA_RST_EN28R/W01 — сброс прямо от детектора (режим 1)
BROWN_OUT_RST_SEL27R/W0Тип сброса при просадке; описание поля в TRM (1 — сброс чипа, 0 — сброс системы) противоречит разделу 10.3.4.4 (0 — чипа, 1 — системы)
BROWN_OUT_RST_ENA26R/W01 — сбрасывать при просадке
BROWN_OUT_RST_WAIT25:16R/W0x3FFЗадержка перед сбросом после просадки
BROWN_OUT_PD_RF_ENA15R/W01 — выключать радиочасть при просадке
BROWN_OUT_CLOSE_FLASH_ENA14R/W01 — выключать флеш-память при просадке
BROWN_OUT_INT_WAIT13:4R/W0x001Задержка перед прерыванием после просадки

RTC_CNTL_XTAL32K_CLK_FACTOR_REG — коэффициент делителя для кварца 32 кГц

Смещение 0x00F4, адрес 0x6000 80F4, после сброса 0x0000 0000. TRM: регистр 10.54 (RTC_CNTL_RTC_XTAL32K_CLK_FACTOR_REG).

ПолеБитыДоступСброс
XTAL32K_CLK_FACTOR31:0R/W0x0000 0000

RTC_CNTL_XTAL32K_CONF_REG — сторож кварца 32 кГц: таймауты и пороги

Смещение 0x00F8, адрес 0x6000 80F8, после сброса 0x0FF0 0000. TRM: регистр 10.55 (RTC_CNTL_RTC_XTAL32K_CONF_REG).

31302928272625242322212019181716
XTAL32K_STABLE_THRESXTAL32K_WDT_TIMEOUTXTAL32K_RESTART_WAIT
1514131211109876543210
XTAL32K_RESTART_WAITXTAL32K_RETURN_WAIT
ПолеБитыДоступСброс
XTAL32K_STABLE_THRES31:28R/W0x0
XTAL32K_WDT_TIMEOUT27:20R/W0xFF
XTAL32K_RESTART_WAIT19:4R/W0x0000
XTAL32K_RETURN_WAIT3:0R/W0x0

RTC_CNTL_USB_CONF_REG — внутренний USB PHY: выбор контроллера, подтяжки, пороги

Смещение 0x0120, адрес 0x6000 8120, после сброса 0x0000 0000. TRM: регистр 10.56 (RTC_CNTL_RTC_USB_CONF_REG).

ПолеБитыДоступСбросНазначение
SW_HW_USB_PHY_SEL20R/W01 — выбор контроллера для USB PHY задаёт SW_USB_PHY_SEL, 0 — eFuse
SW_USB_PHY_SEL19R/W01 — внутренний PHY у USB OTG, 0 — у USB Serial/JTAG
IO_MUX_RESET_DISABLE18R/W0
USB_RESET_DISABLE17R/W0
USB_TX_EN_OVERRIDE16R/W0
USB_TX_EN15R/W0
USB_TXP14R/W0
USB_TXM13R/W0
USB_PAD_ENABLE12R/W0
USB_PAD_ENABLE_OVERRIDE11R/W0
USB_PULLUP_VALUE10R/W0Подтяжка: 0 — около 2,4 кОм, 1 — около 1,2 кОм (в главе 33 TRM — 2,2 и 1,1 кОм)
USB_DM_PULLDOWN9R/W0
USB_DM_PULLUP8R/W0
USB_DP_PULLDOWN7R/W0
USB_DP_PULLUP6R/W0
USB_PAD_PULL_OVERRIDE5R/W0
USB_VREF_OVERRIDE4R/W0
USB_VREFL3:2R/W0x0Нижний порог одиночного входа 0,8…1,04 В с шагом 80 мВ (при USB_VREF_OVERRIDE)
USB_VREFH1:0R/W0x0Верхний порог одиночного входа 1,76…2 В с шагом 80 мВ (при USB_VREF_OVERRIDE)

RTC_CNTL_SLP_REJECT_CAUSE_REG — причина отказа от сна

Смещение 0x0128, адрес 0x6000 8128, после сброса 0x0000 0000. TRM: регистр 10.57 (RTC_CNTL_RTC_SLP_REJECT_CAUSE_REG).

ПолеБитыДоступСбросНазначение
REJECT_CAUSE17:0RO0x00000Причина отказа от сна

RTC_CNTL_OPTION1_REG — принудительный вход в режим загрузки

Смещение 0x012C, адрес 0x6000 812C, после сброса 0x0000 0000. TRM: регистр 10.58 (RTC_CNTL_RTC_OPTION1_REG).

ПолеБитыДоступСбросНазначение
FORCE_DOWNLOAD_BOOT0R/W01 — после сброса войти в режим загрузки

RTC_CNTL_SLP_WAKEUP_CAUSE_REG — причина пробуждения

Смещение 0x0130, адрес 0x6000 8130, после сброса 0x0000 0000. TRM: регистр 10.59 (RTC_CNTL_RTC_SLP_WAKEUP_CAUSE_REG).

ПолеБитыДоступСбросНазначение
WAKEUP_CAUSE16:0RO0x00000Причина пробуждения, биты как в RTC_WAKEUP_ENA

RTC_CNTL_INT_ENA_W1TS_REG — разрешение прерываний: запись 1 включает бит

Смещение 0x0138, адрес 0x6000 8138, после сброса 0x0000 0000. TRM: регистр 10.60.

ПолеБитыДоступСбросНазначение
RTC_TOUCH_APPROACH_LOOP_DONE_INT_ENA_W1TS20WO0Закончен цикл измерения приближения
RTC_GLITCH_DET_INT_ENA_W1TS19WO0Обнаружена помеха
RTC_TOUCH_TIMEOUT_INT_ENA_W1TS18WO0Таймаут сенсора касания
RTC_COCPU_TRAP_INT_ENA_W1TS17WO0Исключение в ULP-RISC-V
RTC_XTAL32K_DEAD_INT_ENA_W1TS16WO0Кварц 32 кГц перестал работать
RTC_SWD_INT_ENA_W1TS15WO0Прерывание супер-сторожа
RTC_SARADC2_INT_ENA_W1TS14WO0Прерывание SAR ADC2
RTC_COCPU_INT_ENA_W1TS13WO0Прерывание ULP-RISC-V
RTC_TSENS_INT_ENA_W1TS12WO0Прерывание датчика температуры
RTC_SARADC1_INT_ENA_W1TS11WO0Прерывание SAR ADC1
RTC_MAIN_TIMER_INT_ENA_W1TS10WO0Сработал будильник RTC-таймера
RTC_BROWN_OUT_INT_ENA_W1TS9WO0Детектор просадки питания
RTC_TOUCH_INACTIVE_INT_ENA_W1TS8WO0Касание прекратилось
RTC_TOUCH_ACTIVE_INT_ENA_W1TS7WO0Обнаружено касание
RTC_TOUCH_DONE_INT_ENA_W1TS6WO0Закончено измерение одного сенсора касания
RTC_ULP_CP_INT_ENA_W1TS5WO0Прерывание сопроцессора ULP
RTC_TOUCH_SCAN_DONE_INT_ENA_W1TS4WO0Закончено сканирование сенсоров касания
RTC_WDT_INT_ENA_W1TS3WO0Сработал RTC-сторож
SDIO_IDLE_INT_ENA_W1TS2WO0SDIO простаивает
SLP_REJECT_INT_ENA_W1TS1WO0Переход в сон отклонён
SLP_WAKEUP_INT_ENA_W1TS0WO0Чип проснулся

RTC_CNTL_INT_ENA_W1TC_REG — разрешение прерываний: запись 1 выключает бит

Смещение 0x013C, адрес 0x6000 813C, после сброса 0x0000 0000. TRM: регистр 10.61.

ПолеБитыДоступСбросНазначение
RTC_TOUCH_APPROACH_LOOP_DONE_INT_ENA_W1TC20WO0Закончен цикл измерения приближения
RTC_GLITCH_DET_INT_ENA_W1TC19WO0Обнаружена помеха
RTC_TOUCH_TIMEOUT_INT_ENA_W1TC18WO0Таймаут сенсора касания
RTC_COCPU_TRAP_INT_ENA_W1TC17WO0Исключение в ULP-RISC-V
RTC_XTAL32K_DEAD_INT_ENA_W1TC16WO0Кварц 32 кГц перестал работать
RTC_SWD_INT_ENA_W1TC15WO0Прерывание супер-сторожа
RTC_SARADC2_INT_ENA_W1TC14WO0Прерывание SAR ADC2
RTC_COCPU_INT_ENA_W1TC13WO0Прерывание ULP-RISC-V
RTC_TSENS_INT_ENA_W1TC12WO0Прерывание датчика температуры
RTC_SARADC1_INT_ENA_W1TC11WO0Прерывание SAR ADC1
RTC_MAIN_TIMER_INT_ENA_W1TC10WO0Сработал будильник RTC-таймера
RTC_BROWN_OUT_INT_ENA_W1TC9WO0Детектор просадки питания
RTC_TOUCH_INACTIVE_INT_ENA_W1TC8WO0Касание прекратилось
RTC_TOUCH_ACTIVE_INT_ENA_W1TC7WO0Обнаружено касание
RTC_TOUCH_DONE_INT_ENA_W1TC6WO0Закончено измерение одного сенсора касания
RTC_ULP_CP_INT_ENA_W1TC5WO0Прерывание сопроцессора ULP
RTC_TOUCH_SCAN_DONE_INT_ENA_W1TC4WO0Закончено сканирование сенсоров касания
RTC_WDT_INT_ENA_W1TC3WO0Сработал RTC-сторож
SDIO_IDLE_INT_ENA_W1TC2WO0SDIO простаивает
SLP_REJECT_INT_ENA_W1TC1WO0Переход в сон отклонён
SLP_WAKEUP_INT_ENA_W1TC0WO0Чип проснулся

RTC_CNTL_RETENTION_CTRL_REG — сохранение состояния процессора и кэша во сне

Смещение 0x0140, адрес 0x6000 8140, после сброса 0x2834 0000. TRM: регистр 10.62.

31302928272625242322212019181716
RETENTION_WAITRETENTION_ENRETENTION_CLKOFF_WAITRETENTION_DONE_WAIT—
1514131211109876543210
RETENTION_TARGET—
ПолеБитыДоступСброс
RETENTION_WAIT31:25R/W0x14
RETENTION_EN24R/W0
RETENTION_CLKOFF_WAIT23:20R/W0x3
RETENTION_DONE_WAIT19:17R/W0x2
RETENTION_TARGET15:14R/W0x0

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

Смещение 0x0148, адрес 0x6000 8148, после сброса 0x0000 0007. TRM: регистр 10.63 (RTC_CNTL_RTC_FIB_SEL_REG).

ПолеБитыДоступСбросНазначение
RTC_FIB_SEL2:0R/W0x7Настройка детектора просадки; бит 0 — выбор режима 1 (bod_mode1_sel)

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

Какие значения RTC_WAKEUP_ENA выбирают источник пробуждения ESP32-S3?

По таблице 10.4-3 TRM значения поля: 0x1 — EXT0, 0x2 — EXT1, 0x4 — GPIO, 0x8 — RTC-таймер, 0x20 — Wi-Fi, 0x40 — UART0, 0x80 — UART1, 0x100 — касание, 0x200 — ULP-FSM, 0x400 — Bluetooth, 0x800 — ULP-RISC-V. Wi-Fi, Bluetooth и UART будят только из лёгкого сна; в глубоком сне из выводов работают только RTC GPIO.

Как отключить RTC-сторож RWDT ESP32-S3 после загрузки?

Во время загрузки из флеш-памяти RWDT включается автоматически, со сбросом системы на стадии 0. Чтобы его выключить: записать 0x50D83AA1 в RTC_CNTL_RTC_WDTWPROTECT_REG, сбросить WDT_FLASHBOOT_MOD_EN и WDT_EN в RTC_CNTL_RTC_WDTCONFIG0_REG и записать в WDTWPROTECT любое другое значение (раздел 13.2.2 TRM).

Источники

  1. Espressif. ESP32-S3 Technical Reference Manual, версия 1.8 — глава 10: таблица Register Summary и рисунки регистров — смещения, поля, тип доступа и значения после сброса
  2. Espressif. SVD svd/esp32s3.svd, версия 21 (espressif/svd, коммит be20aa1) — базовые адреса периферии, список регистров и полей; лицензия Apache-2.0
  3. Espressif. ESP-IDF v6.1: заголовки components/soc/esp32s3/register/soc/*_reg.h (коммит fff9895) — имена макросов регистров и полей, сверка положения полей и значений по умолчанию; лицензия Apache-2.0 OR MIT

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

Другие регистры ESP32-S3

Статьи, инструменты и термины