Регистры TIMG ESP32-S3
Регистры групп таймеров ESP32-S3: в каждой группе два 54-битных таймера T0 и T1 с 16-битным делителем, будильником и перезагрузкой, сторожевой таймер MWDT с четырьмя стадиями и схема измерения частоты медленного RTC-генератора.
Содержание
- Пример на C
- Регистры блока
- TIMG_TnCONFIG_REG
- TIMG_TnLO_REG
- TIMG_TnHI_REG
- TIMG_TnUPDATE_REG
- TIMG_TnALARMLO_REG
- TIMG_TnALARMHI_REG
- TIMG_TnLOADLO_REG
- TIMG_TnLOADHI_REG
- TIMG_TnLOAD_REG
- TIMG_WDTCONFIG0_REG
- TIMG_WDTCONFIG1_REG
- TIMG_WDTCONFIG2_REG
- TIMG_WDTCONFIG3_REG
- TIMG_WDTCONFIG4_REG
- TIMG_WDTCONFIG5_REG
- TIMG_WDTFEED_REG
- TIMG_WDTWPROTECT_REG
- TIMG_RTCCALICFG_REG
- TIMG_RTCCALICFG1_REG
- TIMG_INT_ENA_TIMERS_REG
- TIMG_INT_RAW_TIMERS_REG
- TIMG_INT_ST_TIMERS_REG
- TIMG_INT_CLR_TIMERS_REG
- TIMG_RTCCALICFG2_REG
- TIMG_NTIMERS_DATE_REG
- TIMG_REGCLK_REG
У ESP32-S3 две группы таймеров: TIMG0 по адресу 0x6001 F000 и TIMG1 по адресу 0x6002 0000, макросы ESP-IDF принимают номер группы — TIMG_T0CONFIG_REG(1). В группе два таймера, T0 и T1, с одинаковыми регистрами через 0x24: 54-битный счётчик вверх или вниз, такт — APB_CLK или XTAL_CLK (бит USE_XTAL) через делитель 2…65 536.
Чтобы прочитать счётчик, в TIMG_TxUPDATE_REG записывают любое значение; когда бит сбросится, текущее значение лежит в TxLO (младшие 32 бита) и TxHI (старшие 22). Будильник сравнивает счётчик с ALARMLO и ALARMHI, сбрасывает ALARM_EN и, если включено, перезагружает счётчик значением LOADLO и LOADHI.
Сторож MWDT проходит четыре стадии; действие каждой — прерывание, сброс процессора или сброс системы. Регистры сторожа защищены: пока в TIMG_WDTWPROTECT_REG не записан ключ 0x50D83AA1, запись в них не действует. При загрузке из флеш-памяти MWDT группы 0 включается автоматически (глава 13 TRM).
| Экземпляр | Базовый адрес |
|---|---|
| TIMG0 | 0x6001 F000 |
| TIMG1 | 0x6002 0000 |
Пример на C
TIMG0: чтение 54-битного счётчика T0 (soc/timer_group_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/timer_group_reg.h"
REG_WRITE(TIMG_T0UPDATE_REG(0), TIMG_T0_UPDATE); // защёлкнуть значение
while (REG_GET_BIT(TIMG_T0UPDATE_REG(0), TIMG_T0_UPDATE)) {}
uint64_t t = ((uint64_t)REG_READ(TIMG_T0HI_REG(0)) << 32) | REG_READ(TIMG_T0LO_REG(0));Регистры блока
| Регистр (ESP-IDF) | Смещение | Назначение | После сброса |
|---|---|---|---|
| TIMG_TnCONFIG_REG(i) | 0x0000 + n · 0x0024 | Таймер n: включение, направление, делитель, будильник | 0x6000 2000 |
| TIMG_TnLO_REG(i) | 0x0004 + n · 0x0024 | Таймер n: защёлкнутое значение, младшие 32 бита | 0x0000 0000 |
| TIMG_TnHI_REG(i) | 0x0008 + n · 0x0024 | Таймер n: защёлкнутое значение, старшие 22 бита | 0x0000 0000 |
| TIMG_TnUPDATE_REG(i) | 0x000C + n · 0x0024 | Таймер n: защёлкнуть текущее значение | 0x0000 0000 |
| TIMG_TnALARMLO_REG(i) | 0x0010 + n · 0x0024 | Таймер n: значение будильника, младшие 32 бита | 0x0000 0000 |
| TIMG_TnALARMHI_REG(i) | 0x0014 + n · 0x0024 | Таймер n: значение будильника, старшие 22 бита | 0x0000 0000 |
| TIMG_TnLOADLO_REG(i) | 0x0018 + n · 0x0024 | Таймер n: значение перезагрузки, младшие 32 бита | 0x0000 0000 |
| TIMG_TnLOADHI_REG(i) | 0x001C + n · 0x0024 | Таймер n: значение перезагрузки, старшие 22 бита | 0x0000 0000 |
| TIMG_TnLOAD_REG(i) | 0x0020 + n · 0x0024 | Таймер n: загрузить значение перезагрузки сейчас | 0x0000 0000 |
| TIMG_WDTCONFIG0_REG(i) | 0x0048 | Сторож: включение, действия стадий, длительности сброса | 0x0004 C000 |
| TIMG_WDTCONFIG1_REG(i) | 0x004C | Сторож: предделитель | 0x0001 0000 |
| TIMG_WDTCONFIG2_REG(i) | 0x0050 | Сторож: длительность стадии 0 | 0x018C BA80 |
| TIMG_WDTCONFIG3_REG(i) | 0x0054 | Сторож: длительность стадии 1 | 0x07FF FFFF |
| TIMG_WDTCONFIG4_REG(i) | 0x0058 | Сторож: длительность стадии 2 | 0x000F FFFF |
| TIMG_WDTCONFIG5_REG(i) | 0x005C | Сторож: длительность стадии 3 | 0x000F FFFF |
| TIMG_WDTFEED_REG(i) | 0x0060 | Сторож: кормление | 0x0000 0000 |
| TIMG_WDTWPROTECT_REG(i) | 0x0064 | Сторож: защита записи | 0x50D8 3AA1 |
| TIMG_RTCCALICFG_REG(i) | 0x0068 | Измерение частоты RTC-генератора: запуск и выбор | 0x0001 3000 |
| TIMG_RTCCALICFG1_REG(i) | 0x006C | Измерение частоты RTC-генератора: результат | 0x0000 0000 |
| TIMG_INT_ENA_TIMERS_REG(i) | 0x0070 | Разрешение прерываний | 0x0000 0000 |
| TIMG_INT_RAW_TIMERS_REG(i) | 0x0074 | Необработанные флаги прерываний | 0x0000 0000 |
| TIMG_INT_ST_TIMERS_REG(i) | 0x0078 | Флаги прерываний после маски разрешения | 0x0000 0000 |
| TIMG_INT_CLR_TIMERS_REG(i) | 0x007C | Сброс флагов прерываний записью 1 | 0x0000 0000 |
| TIMG_RTCCALICFG2_REG(i) | 0x0080 | Измерение частоты RTC-генератора: таймаут | 0xFFFF FF98 |
| TIMG_NTIMERS_DATE_REG(i) | 0x00F8 | Версия блока: дата ревизии аппаратуры | 0x0200 3071 |
| TIMG_REGCLK_REG(i) | 0x00FC | Тактирование регистров | 0x0000 0000 |
Доступ — обозначения TRM: R/W — чтение и запись, RO — только чтение, WO — только запись, WT — запись 1 запускает действие, SS и SC — бит ставится и сбрасывается аппаратно, WTC — сбрасывается записью 1.
TIMG_TnCONFIG_REG(i) — таймер n: включение, направление, делитель, будильник
2 копии, n = 0, 1: смещение 0x0000 + n · 0x0024, после сброса 0x6000 2000. TRM: регистр 12.1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| Tn_EN | Tn_INCREASE | Tn_AUTORELOAD | Tn_DIVIDER | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Tn_DIVIDER | — | Tn_ALARM_EN | Tn_USE_XTAL | — | |||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| Tn_EN | 31 | R/W | 0 | 1 — счёт включён |
| Tn_INCREASE | 30 | R/W | 1 | 1 — считать вверх, 0 — вниз |
| Tn_AUTORELOAD | 29 | R/W | 1 | 1 — перезагрузка при срабатывании будильника |
| Tn_DIVIDER | 28:13 | R/W | 0x0001 | Делитель 2…65 536: значение 0 даёт 65 536, значение 1 — делитель 2; менять при Tn_EN = 0 |
| Tn_ALARM_EN | 10 | R/W/SC | 0 | 1 — будильник включён; сбрасывается при срабатывании |
| Tn_USE_XTAL | 9 | R/W | 0 | Такт: 0 — APB_CLK, 1 — XTAL_CLK |
TIMG_TnLO_REG(i) — таймер n: защёлкнутое значение, младшие 32 бита
2 копии, n = 0, 1: смещение 0x0004 + n · 0x0024, после сброса 0x0000 0000. TRM: регистр 12.2.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| Tn_LO | 31:0 | RO | 0x0000 0000 |
TIMG_TnHI_REG(i) — таймер n: защёлкнутое значение, старшие 22 бита
2 копии, n = 0, 1: смещение 0x0008 + n · 0x0024, после сброса 0x0000 0000. TRM: регистр 12.3.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| Tn_HI | 21:0 | RO | 0x000000 |
TIMG_TnUPDATE_REG(i) — таймер n: защёлкнуть текущее значение
2 копии, n = 0, 1: смещение 0x000C + n · 0x0024, после сброса 0x0000 0000. TRM: регистр 12.4.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| Tn_UPDATE | 31 | R/W/SC | 0 | Запись защёлкивает счётчик в TnLO и TnHI; бит сбрасывается по окончании |
TIMG_TnALARMLO_REG(i) — таймер n: значение будильника, младшие 32 бита
2 копии, n = 0, 1: смещение 0x0010 + n · 0x0024, после сброса 0x0000 0000. TRM: регистр 12.5.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| Tn_ALARM_LO | 31:0 | R/W | 0x0000 0000 |
TIMG_TnALARMHI_REG(i) — таймер n: значение будильника, старшие 22 бита
2 копии, n = 0, 1: смещение 0x0014 + n · 0x0024, после сброса 0x0000 0000. TRM: регистр 12.6.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| Tn_ALARM_HI | 21:0 | R/W | 0x000000 |
TIMG_TnLOADLO_REG(i) — таймер n: значение перезагрузки, младшие 32 бита
2 копии, n = 0, 1: смещение 0x0018 + n · 0x0024, после сброса 0x0000 0000. TRM: регистр 12.7.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| Tn_LOAD_LO | 31:0 | R/W | 0x0000 0000 |
TIMG_TnLOADHI_REG(i) — таймер n: значение перезагрузки, старшие 22 бита
2 копии, n = 0, 1: смещение 0x001C + n · 0x0024, после сброса 0x0000 0000. TRM: регистр 12.8.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| Tn_LOAD_HI | 21:0 | R/W | 0x000000 |
TIMG_TnLOAD_REG(i) — таймер n: загрузить значение перезагрузки сейчас
2 копии, n = 0, 1: смещение 0x0020 + n · 0x0024, после сброса 0x0000 0000. TRM: регистр 12.9.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| Tn_LOAD | 31:0 | WT | 0x0000 0000 | Любая запись загружает в счётчик LOADLO и LOADHI |
TIMG_WDTCONFIG0_REG(i) — сторож: включение, действия стадий, длительности сброса
Смещение 0x0048, после сброса 0x0004 C000. TRM: регистр 12.10.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| WDT_EN | WDT_STG0 | WDT_STG1 | WDT_STG2 | WDT_STG3 | — | WDT_CPU_RESET_LENGTH | WDT_SYS_RESET_LENGTH | ||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| WDT_SYS_RESET_LENGTH | WDT_FLASHBOOT_MOD_EN | WDT_PROCPU_RESET_EN | WDT_APPCPU_RESET_EN | — | |||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_EN | 31 | R/W | 0 | 1 — сторож включён |
| WDT_STG0 | 30:29 | R/W | 0x0 | Действие стадии 0: 0 — нет, 1 — прерывание, 2 — сброс процессора, 3 — сброс системы (в главе 13 TRM — core reset) |
| WDT_STG1 | 28:27 | R/W | 0x0 | Действие стадии 1, значения как у WDT_STG0 |
| WDT_STG2 | 26:25 | R/W | 0x0 | Действие стадии 2, значения как у WDT_STG0 |
| WDT_STG3 | 24:23 | R/W | 0x0 | Действие стадии 3, значения как у WDT_STG0 |
| WDT_CPU_RESET_LENGTH | 20:18 | R/W | 0x1 | Длительность сброса процессора: 0 — 100 нс, 1 — 200, 2 — 300, 3 — 400, 4 — 500, 5 — 800 нс, 6 — 1,6 мкс, 7 — 3,2 мкс |
| WDT_SYS_RESET_LENGTH | 17:15 | R/W | 0x1 | Длительность сброса системы, значения как у CPU_RESET_LENGTH |
| WDT_FLASHBOOT_MOD_EN | 14 | R/W | 1 | 1 — защита загрузки из флеш-памяти |
| WDT_PROCPU_RESET_EN | 13 | R/W | 0 | 1 — сторож может сбросить процессор |
| WDT_APPCPU_RESET_EN | 12 | R/W | 0 | Зарезервировано |
TIMG_WDTCONFIG1_REG(i) — сторож: предделитель
Смещение 0x004C, после сброса 0x0001 0000. TRM: регистр 12.11.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_CLK_PRESCALE | 31:16 | R/W | 0x0001 | Предделитель: период такта сторожа = период источника · значение |
TIMG_WDTCONFIG2_REG(i) — сторож: длительность стадии 0
Смещение 0x0050, после сброса 0x018C BA80. TRM: регистр 12.12.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_STG0_HOLD | 31:0 | R/W | 0x018C BA80 | Длительность стадии 0 в тактах сторожа |
TIMG_WDTCONFIG3_REG(i) — сторож: длительность стадии 1
Смещение 0x0054, после сброса 0x07FF FFFF. TRM: регистр 12.13.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_STG1_HOLD | 31:0 | R/W | 0x07FF FFFF | Длительность стадии 1 в тактах сторожа |
TIMG_WDTCONFIG4_REG(i) — сторож: длительность стадии 2
Смещение 0x0058, после сброса 0x000F FFFF. TRM: регистр 12.14.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_STG2_HOLD | 31:0 | R/W | 0x000F FFFF | Длительность стадии 2 в тактах сторожа |
TIMG_WDTCONFIG5_REG(i) — сторож: длительность стадии 3
Смещение 0x005C, после сброса 0x000F FFFF. TRM: регистр 12.15.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_STG3_HOLD | 31:0 | R/W | 0x000F FFFF | Длительность стадии 3 в тактах сторожа |
TIMG_WDTFEED_REG(i) — сторож: кормление
Смещение 0x0060, после сброса 0x0000 0000. TRM: регистр 12.16.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_FEED | 31:0 | WT | 0x0000 0000 | Любая запись кормит сторож: возврат к стадии 0 и обнуление счётчика |
TIMG_WDTWPROTECT_REG(i) — сторож: защита записи
Смещение 0x0064, после сброса 0x50D8 3AA1. TRM: регистр 12.17.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_WKEY | 31:0 | R/W | 0x50D8 3AA1 | Пока значение отличается от 0x50D83AA1, запись в регистры сторожа запрещена |
TIMG_RTCCALICFG_REG(i) — измерение частоты RTC-генератора: запуск и выбор
Смещение 0x0068, после сброса 0x0001 3000. TRM: регистр 12.18.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RTC_CALI_START | RTC_CALI_MAX | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RTC_CALI_RDY | RTC_CALI_CLK_SEL | RTC_CALI_START_CYCLING | — | ||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| RTC_CALI_START | 31 | R/W | 0 | 1 — запустить разовое измерение |
| RTC_CALI_MAX | 30:16 | R/W | 0x0001 | Время измерения в тактах RTC_SLOW_CLK |
| RTC_CALI_RDY | 15 | RO | 0 | 1 — разовое измерение закончено |
| RTC_CALI_CLK_SEL | 14:13 | R/W | 0x1 | Что измерять: 0 — RC_SLOW_CLK, 1 — RC_FAST_DIV_CLK, 2 — XTAL32K_CLK |
| RTC_CALI_START_CYCLING | 12 | R/W | 1 | 1 — периодическое измерение |
TIMG_RTCCALICFG1_REG(i) — измерение частоты RTC-генератора: результат
Смещение 0x006C, после сброса 0x0000 0000. TRM: регистр 12.19.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RTC_CALI_VALUE | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RTC_CALI_VALUE | — | RTC_CALI_CYCLING_DATA_VLD | |||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| RTC_CALI_VALUE | 31:7 | RO | 0x0000000 | Результат в тактах XTAL_CLK |
| RTC_CALI_CYCLING_DATA_VLD | 0 | RO | 0 | 1 — периодическое измерение закончено |
TIMG_INT_ENA_TIMERS_REG(i) — разрешение прерываний
Смещение 0x0070, после сброса 0x0000 0000. TRM: регистр 12.21.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | WDT_INT_ENA | T1_INT_ENA | T0_INT_ENA | ||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_INT_ENA | 2 | R/W | 0 | Стадия сторожа MWDT, настроенная на прерывание |
| T1_INT_ENA | 1 | R/W | 0 | Сработал будильник таймера T1 |
| T0_INT_ENA | 0 | R/W | 0 | Сработал будильник таймера T0 |
TIMG_INT_RAW_TIMERS_REG(i) — необработанные флаги прерываний
Смещение 0x0074, после сброса 0x0000 0000. TRM: регистр 12.22.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | WDT_INT_RAW | T1_INT_RAW | T0_INT_RAW | ||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_INT_RAW | 2 | R/WTC/SS | 0 | Стадия сторожа MWDT, настроенная на прерывание |
| T1_INT_RAW | 1 | R/W | 0 | Сработал будильник таймера T1 |
| T0_INT_RAW | 0 | R/W | 0 | Сработал будильник таймера T0 |
TIMG_INT_ST_TIMERS_REG(i) — флаги прерываний после маски разрешения
Смещение 0x0078, после сброса 0x0000 0000. TRM: регистр 12.23.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | WDT_INT_ST | T1_INT_ST | T0_INT_ST | ||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_INT_ST | 2 | RO | 0 | Стадия сторожа MWDT, настроенная на прерывание |
| T1_INT_ST | 1 | RO | 0 | Сработал будильник таймера T1 |
| T0_INT_ST | 0 | RO | 0 | Сработал будильник таймера T0 |
TIMG_INT_CLR_TIMERS_REG(i) — сброс флагов прерываний записью 1
Смещение 0x007C, после сброса 0x0000 0000. TRM: регистр 12.24.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | WDT_INT_CLR | T1_INT_CLR | T0_INT_CLR | ||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WDT_INT_CLR | 2 | WT | 0 | Стадия сторожа MWDT, настроенная на прерывание |
| T1_INT_CLR | 1 | WO | 0 | Сработал будильник таймера T1 |
| T0_INT_CLR | 0 | WO | 0 | Сработал будильник таймера T0 |
TIMG_RTCCALICFG2_REG(i) — измерение частоты RTC-генератора: таймаут
Смещение 0x0080, после сброса 0xFFFF FF98. TRM: регистр 12.20.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RTC_CALI_TIMEOUT_THRES | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RTC_CALI_TIMEOUT_THRES | RTC_CALI_TIMEOUT_RST_CNT | — | RTC_CALI_TIMEOUT | ||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| RTC_CALI_TIMEOUT_THRES | 31:7 | R/W | 0x1FFFFFF | Порог таймаута измерения |
| RTC_CALI_TIMEOUT_RST_CNT | 6:3 | R/W | 0x3 | Такты сброса таймаута |
| RTC_CALI_TIMEOUT | 0 | RO | 0 | 1 — измерение не уложилось в таймаут |
TIMG_NTIMERS_DATE_REG(i) — версия блока: дата ревизии аппаратуры
Смещение 0x00F8, после сброса 0x0200 3071. TRM: регистр 12.25.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| NTIMERS_DATE | 27:0 | R/W | 0x2003071 |
TIMG_REGCLK_REG(i) — тактирование регистров
Смещение 0x00FC, после сброса 0x0000 0000. TRM: регистр 12.26.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| CLK_EN | 31 | R/W | 0 | 1 — такт регистров всегда включён, 0 — только на время обращения |
Частые вопросы
Как прочитать значение таймера TIMG ESP32-S3?
Записать любое значение в TIMG_T0UPDATE_REG (для таймера T1 — в T1UPDATE), дождаться сброса бита T0_UPDATE и прочитать младшие 32 бита из TIMG_T0LO_REG, старшие 22 — из TIMG_T0HI_REG. Значения не меняются до следующей записи в UPDATE.
Как отключить сторож MWDT ESP32-S3 через регистры?
Записать 0x50D83AA1 в TIMG_WDTWPROTECT_REG, сбросить WDT_EN в TIMG_WDTCONFIG0_REG и записать в WDTWPROTECT любое другое значение. Бита применения настроек, как у ESP32-C3, в регистрах MWDT ESP32-S3 нет. Делитель таймера общего назначения меняют только при сброшенном Tx_EN, иначе результат непредсказуем.
Источники
- Espressif. ESP32-S3 Technical Reference Manual, версия 1.8 — глава 12: таблица Register Summary и рисунки регистров — смещения, поля, тип доступа и значения после сброса
- Espressif. SVD svd/esp32s3.svd, версия 21 (espressif/svd, коммит be20aa1) — базовые адреса периферии, список регистров и полей; лицензия Apache-2.0
- Espressif. ESP-IDF v6.1: заголовки components/soc/esp32s3/register/soc/*_reg.h (коммит fff9895) — имена макросов регистров и полей, сверка положения полей и значений по умолчанию; лицензия Apache-2.0 OR MIT
Нашли ошибку в регистрах?
Другие регистры ESP32-S3
- Все регистры ESP32-S3Блоки периферии и базовые адреса
- GPIO — выводы общего назначения и матрица GPIOGPIO_BT_SELECT_REG, GPIO_OUT_REG, GPIO_OUT_W1TS_REG, GPIO_OUT_W1TC_REG
- IO MUX — мультиплексор функций и электрические настройки выводовPIN_CTRL, IO_MUX_GPIOn_REG
- UART — универсальный асинхронный приёмопередатчикUART_FIFO_REG, UART_INT_RAW_REG, UART_INT_ST_REG, UART_INT_ENA_REG
- SPI — контроллеры SPI общего назначения GP-SPI2 и GP-SPI3SPI_CMD_REG, SPI_ADDR_REG, SPI_CTRL_REG, SPI_CLOCK_REG
- I2C — контроллеры шины I2CI2C_SCL_LOW_PERIOD_REG, I2C_CTR_REG, I2C_SR_REG, I2C_TO_REG
- LEDC — контроллер ШИМ для светодиодов и не толькоLEDC_LSCHn_CONF0_REG, LEDC_LSCHn_HPOINT_REG, LEDC_LSCHn_DUTY_REG, LEDC_LSCHn_CONF1_REG
- RMT — контроллер инфракрасного пульта и импульсных протоколовRMT_CHnDATA_REG, RMT_CHnCONF0_REG, RMT_CHnCONF0_REG, RMT_CHnCONF1_REG
- SYSTIMER — системный таймерSYSTIMER_CONF_REG, SYSTIMER_UNITn_OP_REG, SYSTIMER_UNITn_LOAD_HI_REG, SYSTIMER_UNITn_LOAD_LO_REG
- RTC_CNTL — управление питанием, сном и RTC-доменомRTC_CNTL_OPTIONS0_REG, RTC_CNTL_SLP_TIMER0_REG, RTC_CNTL_SLP_TIMER1_REG, RTC_CNTL_TIME_UPDATE_REG
- APB_SARADC — цифровой контроллер АЦПAPB_SARADC_CTRL_REG, APB_SARADC_CTRL2_REG, APB_SARADC_FILTER_CTRL1_REG, APB_SARADC_SAR1_PATT_TABn_REG
- SENS — RTC-контроллеры АЦП, датчиков касания и температурыSENS_SAR_READER1_CTRL_REG, SENS_SAR_MEAS1_CTRL2_REG, SENS_SAR_MEAS1_MUX_REG, SENS_SAR_ATTENn_REG
- USB Serial/JTAG — встроенный USB-переходник на последовательный порт и JTAGUSB_SERIAL_JTAG_EP1_REG, USB_SERIAL_JTAG_EP1_CONF_REG, USB_SERIAL_JTAG_INT_RAW_REG, USB_SERIAL_JTAG_INT_ST_REG
- eFuse — однократно программируемая память настроек и ключейEFUSE_RD_WR_DIS_REG, EFUSE_RD_REPEAT_DATA0_REG, EFUSE_RD_REPEAT_DATA1_REG, EFUSE_RD_REPEAT_DATA2_REG
- INTERRUPT — матрица прерыванийINTERRUPT_CORE0_MAC_INTR_MAP_REG, INTERRUPT_CORE0_MAC_NMI_MAP_REG, INTERRUPT_CORE0_PWR_INTR_MAP_REG, INTERRUPT_CORE0_BB_INT_MAP_REG