Регистры APB_SARADC ESP32-S3
Регистры APB_SARADC ESP32-S3: цифровой контроллер DIG ADC1 — непрерывное сканирование каналов SAR ADC1 по таблице шаблонов, таймер запуска, делители такта, два фильтра, два монитора порогов, передача результатов в память через GDMA и арбитр SAR ADC2.
Содержание
- Пример на C
- Регистры блока
- APB_SARADC_CTRL_REG
- APB_SARADC_CTRL2_REG
- APB_SARADC_FILTER_CTRL1_REG
- APB_SARADC_SAR1_PATT_TABn_REG
- APB_SARADC_APB_ADC_ARB_CTRL_REG
- APB_SARADC_FILTER_CTRL0_REG
- APB_SARADC_APB_SARADCn_DATA_STATUS_REG
- APB_SARADC_THRESn_CTRL_REG
- APB_SARADC_THRES_CTRL_REG
- APB_SARADC_INT_ENA_REG
- APB_SARADC_INT_RAW_REG
- APB_SARADC_INT_ST_REG
- APB_SARADC_INT_CLR_REG
- APB_SARADC_DMA_CONF_REG
- APB_SARADC_APB_ADC_CLKM_CONF_REG
- APB_SARADC_APB_CTRL_DATE_REG
SAR ADC ESP32-S3 обслуживают четыре контроллера (раздел 39.3 TRM): цифровой DIG ADC1 с блоком регистров APB_SARADC по адресу 0x6004 0000, два RTC-контроллера в блоке SENS и внутренний PWDET для радиочасти. Цифровой контроллер ADC2 у ESP32-S3 работает неправильно, и TRM его описание удалил (см. ESP32-S3 Series SoC Errata) — поэтому поля SAR2 в этом блоке зарезервированы.
DIG ADC1 сканирует каналы по таблице шаблонов из 16 записей в регистрах SAR1_PATT_TAB1…4, по четыре 6-битные записи на регистр: биты 5:2 записи — номер канала, биты 1:0 — ослабление (0 — 0 дБ, 1 — 2,5 дБ, 2 — 6 дБ, 3 — 12 дБ). Число используемых записей — SAR1_PATT_LEN + 1. Запуск — от таймера (TIMER_EN, TIMER_TARGET), результаты через GDMA идут в память при установленном APB_ADC_TRANS.
Такт контроллера выбирает поле CLK_SEL регистра APB_SARADC_APB_ADC_CLKM_CONF_REG: 0 — выключен, 1 — PLL_D2_CLK с делителем, 2 — APB_CLK. Такт самого АЦП DIGADC_SARCLK получается делением на SAR_CLK_DIV; выше 5 МГц точность падает, на одно преобразование уходит 25 тактов.
| Экземпляр | Базовый адрес |
|---|---|
| APB_SARADC | 0x6004 0000 |
Пример на C
Одна запись таблицы: канал 2, ослабление 12 дБ (soc/apb_saradc_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/apb_saradc_reg.h"
uint32_t entry = (2 << 2) | 3; // канал 2, 12 дБ
REG_WRITE(APB_SARADC_SAR1_PATT_TAB1_REG, entry << 18); // запись 0 — биты 23:18
REG_SET_FIELD(APB_SARADC_CTRL_REG, APB_SARADC_SAR1_PATT_LEN, 0); // одна запись (0 + 1)
REG_SET_BIT(APB_SARADC_CTRL_REG, APB_SARADC_SAR1_PATT_P_CLEAR); // указатель на начало
REG_CLR_BIT(APB_SARADC_CTRL_REG, APB_SARADC_SAR1_PATT_P_CLEAR);Регистры блока
| Регистр (ESP-IDF) | Смещение | Назначение | После сброса |
|---|---|---|---|
| APB_SARADC_CTRL_REG | 0x0000 | Запуск, длина таблицы, делитель такта АЦП, питание | 0x4007 8240 |
| APB_SARADC_CTRL2_REG | 0x0004 | Таймер запуска, инверсия данных, ограничение числа преобразований | 0x0000 A1FE |
| APB_SARADC_FILTER_CTRL1_REG | 0x0008 | Коэффициенты фильтров 0 и 1 | 0x0000 0000 |
| APB_SARADC_SAR1_PATT_TABn_REG | 0x0014 + n · 0x0004 | Таблица шаблонов SAR ADC1, записи 4(n − 1)…4(n − 1) + 3 | 0x0000 0000 |
| APB_SARADC_APB_ADC_ARB_CTRL_REG | 0x0038 | Арбитр SAR ADC2: приоритеты RTC и PWDET | 0x0000 0900 |
| APB_SARADC_FILTER_CTRL0_REG | 0x003C | Каналы фильтров и сброс | 0x006B 4000 |
| APB_SARADC_APB_SARADCn_DATA_STATUS_REG | 0x0008 + n · 0x0038 | Последний результат SAR ADCn | 0x0000 0000 |
| APB_SARADC_THRESn_CTRL_REG | 0x0044 + n · 0x0004 | Монитор порогов n: канал и пороги | 0x0003 FFED |
| APB_SARADC_THRES_CTRL_REG | 0x0058 | Включение мониторов порогов | 0x0000 0000 |
| APB_SARADC_INT_ENA_REG | 0x005C | Разрешение прерываний | 0x0000 0000 |
| APB_SARADC_INT_RAW_REG | 0x0060 | Необработанные флаги прерываний | 0x0000 0000 |
| APB_SARADC_INT_ST_REG | 0x0064 | Флаги прерываний после маски разрешения | 0x0000 0000 |
| APB_SARADC_INT_CLR_REG | 0x0068 | Сброс флагов прерываний записью 1 | 0x0000 0000 |
| APB_SARADC_DMA_CONF_REG | 0x006C | Передача через GDMA, сброс автомата | 0x0000 00FF |
| APB_SARADC_APB_ADC_CLKM_CONF_REG | 0x0070 | Источник и делитель такта контроллера | 0x0000 0004 |
| APB_SARADC_APB_CTRL_DATE_REG | 0x03FC | Версия блока: дата ревизии аппаратуры | 0x0210 1180 |
Доступ — обозначения TRM: R/W — чтение и запись, RO — только чтение, WO — только запись, WT — запись 1 запускает действие, SS и SC — бит ставится и сбрасывается аппаратно, WTC — сбрасывается записью 1.
APB_SARADC_CTRL_REG — запуск, длина таблицы, делитель такта АЦП, питание
Смещение 0x0000, адрес 0x6004 0000, после сброса 0x4007 8240. TRM: регистр 39.56.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| WAIT_ARB_CYCLE | — | XPD_SAR_FORCE | — | SAR1_PATT_P_CLEAR | — | SAR1_PATT_LEN | |||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SAR1_PATT_LEN | SAR_CLK_DIV | SAR_CLK_GATED | — | START | START_FORCE | ||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WAIT_ARB_CYCLE | 31:30 | R/W | 0x1 | Такты ожидания стабилизации арбитра после SAR_DONE |
| XPD_SAR_FORCE | 28:27 | R/W | 0x0 | Принудительное питание АЦП; TRM значения не расписывает, ESP-IDF (adc_ll.h) пишет 3 для программного включения, 2 — для программного выключения и 0 — для управления автоматом |
| SAR1_PATT_P_CLEAR | 23 | R/W | 0 | 1 — сбросить указатель таблицы шаблонов DIG ADC1 |
| SAR1_PATT_LEN | 18:15 | R/W | 0xF | Число записей таблицы минус 1 |
| SAR_CLK_DIV | 14:7 | R/W | 0x04 | Делитель такта DIGADC_SARCLK |
| SAR_CLK_GATED | 6 | R/W | 1 | 1 — отключать такт АЦП в простое |
| START | 1 | R/W | 0 | Программный запуск при START_FORCE = 1 |
| START_FORCE | 0 | R/W | 0 | 0 — запуск автоматом, 1 — программой |
APB_SARADC_CTRL2_REG — таймер запуска, инверсия данных, ограничение числа преобразований
Смещение 0x0004, адрес 0x6004 0004, после сброса 0x0000 A1FE. TRM: регистр 39.57.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TIMER_EN | TIMER_TARGET | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TIMER_TARGET | — | SAR2_INV | SAR1_INV | MAX_MEAS_NUM | MEAS_NUM_LIMIT | ||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TIMER_EN | 24 | R/W | 0 | 1 — запуск преобразований по таймеру |
| TIMER_TARGET | 23:12 | R/W | 0x00A | Период таймера: запуск, когда счёт доходит до удвоенного значения |
| SAR2_INV | 10 | R/W | 0 | 1 — инвертировать данные для DIG ADC2 |
| SAR1_INV | 9 | R/W | 0 | 1 — инвертировать данные для DIG ADC1 |
| MAX_MEAS_NUM | 8:1 | R/W | 0xFF | Наибольшее число преобразований |
| MEAS_NUM_LIMIT | 0 | R/W | 0 | 1 — ограничить число преобразований |
APB_SARADC_FILTER_CTRL1_REG — коэффициенты фильтров 0 и 1
Смещение 0x0008, адрес 0x6004 0008, после сброса 0x0000 0000. TRM: регистр 39.58.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| FILTER_FACTOR0 | FILTER_FACTOR1 | — | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| FILTER_FACTOR0 | 31:29 | R/W | 0x0 | Коэффициент фильтра 0 |
| FILTER_FACTOR1 | 28:26 | R/W | 0x0 | Коэффициент фильтра 1 |
APB_SARADC_SAR1_PATT_TABn_REG — таблица шаблонов SAR ADC1, записи 4(n − 1)…4(n − 1) + 3
4 копии, n = 1…4: смещение 0x0014 + n · 0x0004, после сброса 0x0000 0000. TRM: регистр 39.59.
TRM v1.8 противоречит сам себе: на рисунках SAR1_PATT_TAB1 и TAB2 запись 0 занимает биты 23:18, на рисунках TAB3 и TAB4 и в примере раздела 39.3.7.5 — биты 5:0. ESP-IDF v6.1 (adc_ll_digi_set_pattern_table) кладёт запись k в биты (23 − 6k):(18 − 6k) во всех четырёх регистрах; страница следует ESP-IDF.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SAR1_PATT_TABn | 23:0 | R/W | 0x000000 | Четыре 6-битные записи: запись 0 регистра — биты 23:18, запись 3 — биты 5:0; в записи биты 5:2 — канал, биты 1:0 — ослабление |
APB_SARADC_APB_ADC_ARB_CTRL_REG — арбитр SAR ADC2: приоритеты RTC и PWDET
Смещение 0x0038, адрес 0x6004 0038, после сброса 0x0000 0900. TRM: регистр 39.63 (APB_SARADC_APB_ADC_ARB_CTRL_REG).
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | ADC_ARB_FIX_PRIORITY | ADC_ARB_WIFI_PRIORITY | ADC_ARB_RTC_PRIORITY | — | ADC_ARB_GRANT_FORCE | ADC_ARB_WIFI_FORCE | ADC_ARB_RTC_FORCE | — | |||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| ADC_ARB_FIX_PRIORITY | 12 | R/W | 0 | 1 — фиксированные приоритеты арбитра |
| ADC_ARB_WIFI_PRIORITY | 11:10 | R/W | 0x2 | Приоритет контроллера PWDET |
| ADC_ARB_RTC_PRIORITY | 9:8 | R/W | 0x1 | Приоритет RTC-контроллера ADC2 |
| ADC_ARB_GRANT_FORCE | 5 | R/W | 0 | 1 — принудительное решение арбитра |
| ADC_ARB_WIFI_FORCE | 4 | R/W | 0 | 1 — отдать SAR ADC2 контроллеру PWDET |
| ADC_ARB_RTC_FORCE | 3 | R/W | 0 | 1 — отдать SAR ADC2 RTC-контроллеру |
APB_SARADC_FILTER_CTRL0_REG — каналы фильтров и сброс
Смещение 0x003C, адрес 0x6004 003C, после сброса 0x006B 4000. TRM: регистр 39.64.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| FILTER_RESET | — | FILTER_CHANNEL0 | FILTER_CHANNEL1 | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| FILTER_CHANNEL1 | — | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| FILTER_RESET | 31 | R/W | 0 | 1 — сброс фильтров |
| FILTER_CHANNEL0 | 23:19 | R/W | 0x0D | Канал фильтра 0 |
| FILTER_CHANNEL1 | 18:14 | R/W | 0x0D | Канал фильтра 1 |
APB_SARADC_APB_SARADCn_DATA_STATUS_REG — последний результат SAR ADCn
2 копии, n = 1, 2: смещение 0x0008 + n · 0x0038, после сброса 0x0000 0000. TRM: регистр 39.70.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| ADCn_DATA | 16:0 | RO | 0x00000 | Необработанный результат SAR ADCn; ESP-IDF берёт младшие 12 бит |
APB_SARADC_THRESn_CTRL_REG — монитор порогов n: канал и пороги
2 копии, n = 0, 1: смещение 0x0044 + n · 0x0004, после сброса 0x0003 FFED. TRM: регистр 39.65.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | THRESn_LOW | THRESn_HIGH | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| THRESn_HIGH | THRESn_CHANNEL | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| THRESn_LOW | 30:18 | R/W | 0x0000 | Нижний порог монитора n |
| THRESn_HIGH | 17:5 | R/W | 0x1FFF | Верхний порог монитора n |
| THRESn_CHANNEL | 4:0 | R/W | 0x0D | Канал монитора n |
APB_SARADC_THRES_CTRL_REG — включение мониторов порогов
Смещение 0x0058, адрес 0x6004 0058, после сброса 0x0000 0000. TRM: регистр 39.67.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| THRES0_EN | THRES1_EN | — | THRES_ALL_EN | — | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| THRES0_EN | 31 | R/W | 0 | 1 — монитор 0 включён |
| THRES1_EN | 30 | R/W | 0 | 1 — монитор 1 включён |
| THRES_ALL_EN | 27 | R/W | 0 | 1 — проверять пороги для всех настроенных каналов |
APB_SARADC_INT_ENA_REG — разрешение прерываний
Смещение 0x005C, адрес 0x6004 005C, после сброса 0x0000 0000. TRM: регистр 39.72.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| ADC1_DONE_INT_ENA | — | THRES0_HIGH_INT_ENA | THRES1_HIGH_INT_ENA | THRES0_LOW_INT_ENA | THRES1_LOW_INT_ENA | — | |||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| ADC1_DONE_INT_ENA | 31 | R/W | 0 | DIG ADC1 закончил преобразование |
| THRES0_HIGH_INT_ENA | 29 | R/W | 0 | Результат канала монитора 0 выше верхнего порога |
| THRES1_HIGH_INT_ENA | 28 | R/W | 0 | Результат канала монитора 1 выше верхнего порога |
| THRES0_LOW_INT_ENA | 27 | R/W | 0 | Результат канала монитора 0 ниже нижнего порога |
| THRES1_LOW_INT_ENA | 26 | R/W | 0 | Результат канала монитора 1 ниже нижнего порога |
APB_SARADC_INT_RAW_REG — необработанные флаги прерываний
Смещение 0x0060, адрес 0x6004 0060, после сброса 0x0000 0000. TRM: регистр 39.73.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| ADC1_DONE_INT_RAW | — | THRES0_HIGH_INT_RAW | THRES1_HIGH_INT_RAW | THRES0_LOW_INT_RAW | THRES1_LOW_INT_RAW | — | |||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| ADC1_DONE_INT_RAW | 31 | RO | 0 | DIG ADC1 закончил преобразование |
| THRES0_HIGH_INT_RAW | 29 | RO | 0 | Результат канала монитора 0 выше верхнего порога |
| THRES1_HIGH_INT_RAW | 28 | RO | 0 | Результат канала монитора 1 выше верхнего порога |
| THRES0_LOW_INT_RAW | 27 | RO | 0 | Результат канала монитора 0 ниже нижнего порога |
| THRES1_LOW_INT_RAW | 26 | RO | 0 | Результат канала монитора 1 ниже нижнего порога |
APB_SARADC_INT_ST_REG — флаги прерываний после маски разрешения
Смещение 0x0064, адрес 0x6004 0064, после сброса 0x0000 0000. TRM: регистр 39.74.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| ADC1_DONE_INT_ST | — | THRES0_HIGH_INT_ST | THRES1_HIGH_INT_ST | THRES0_LOW_INT_ST | THRES1_LOW_INT_ST | — | |||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| ADC1_DONE_INT_ST | 31 | RO | 0 | DIG ADC1 закончил преобразование |
| THRES0_HIGH_INT_ST | 29 | RO | 0 | Результат канала монитора 0 выше верхнего порога |
| THRES1_HIGH_INT_ST | 28 | RO | 0 | Результат канала монитора 1 выше верхнего порога |
| THRES0_LOW_INT_ST | 27 | RO | 0 | Результат канала монитора 0 ниже нижнего порога |
| THRES1_LOW_INT_ST | 26 | RO | 0 | Результат канала монитора 1 ниже нижнего порога |
APB_SARADC_INT_CLR_REG — сброс флагов прерываний записью 1
Смещение 0x0068, адрес 0x6004 0068, после сброса 0x0000 0000. TRM: регистр 39.75.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| ADC1_DONE_INT_CLR | — | THRES0_HIGH_INT_CLR | THRES1_HIGH_INT_CLR | THRES0_LOW_INT_CLR | THRES1_LOW_INT_CLR | — | |||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| ADC1_DONE_INT_CLR | 31 | WO | 0 | DIG ADC1 закончил преобразование |
| THRES0_HIGH_INT_CLR | 29 | WO | 0 | Результат канала монитора 0 выше верхнего порога |
| THRES1_HIGH_INT_CLR | 28 | WO | 0 | Результат канала монитора 1 выше верхнего порога |
| THRES0_LOW_INT_CLR | 27 | WO | 0 | Результат канала монитора 0 ниже нижнего порога |
| THRES1_LOW_INT_CLR | 26 | WO | 0 | Результат канала монитора 1 ниже нижнего порога |
APB_SARADC_DMA_CONF_REG — передача через GDMA, сброс автомата
Смещение 0x006C, адрес 0x6004 006C, после сброса 0x0000 00FF. TRM: регистр 39.68.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| APB_ADC_TRANS | APB_ADC_RESET_FSM | — | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| APB_ADC_EOF_NUM | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| APB_ADC_TRANS | 31 | R/W | 0 | 1 — результаты идут через GDMA |
| APB_ADC_RESET_FSM | 30 | R/W | 0 | 1 — сброс автомата DIG ADC |
| APB_ADC_EOF_NUM | 15:0 | R/W | 0x00FF | Число выборок, после которого GDMA выдаёт DMA_IN_SUC_EOF |
APB_SARADC_APB_ADC_CLKM_CONF_REG — источник и делитель такта контроллера
Смещение 0x0070, адрес 0x6004 0070, после сброса 0x0000 0004. TRM: регистр 39.69 (APB_SARADC_APB_ADC_CLKM_CONF_REG).
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | CLK_SEL | — | CLKM_DIV_A | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| CLKM_DIV_A | CLKM_DIV_B | CLKM_DIV_NUM | |||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| CLK_SEL | 22:21 | R/W | 0x0 | Такт контроллера: 0 — выключен, 1 — PLL_D2_CLK, 2 — APB_CLK |
| CLKM_DIV_A | 19:14 | R/W | 0x00 | Знаменатель дробной части делителя |
| CLKM_DIV_B | 13:8 | R/W | 0x00 | Числитель дробной части делителя |
| CLKM_DIV_NUM | 7:0 | R/W | 0x04 | Целая часть делителя: делитель = CLKM_DIV_NUM + CLKM_DIV_B / CLKM_DIV_A (по описанию поля в TRM) |
APB_SARADC_APB_CTRL_DATE_REG — версия блока: дата ревизии аппаратуры
Смещение 0x03FC, адрес 0x6004 03FC, после сброса 0x0210 1180. TRM: регистр 39.76.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| APB_CTRL_DATE | 31:0 | R/W | 0x0210 1180 |
Частые вопросы
Как расположены записи таблицы шаблонов в SAR1_PATT_TAB ESP32-S3?
По рисункам TRM для SAR1_PATT_TAB1 и TAB2 и по коду ESP-IDF (adc_ll_digi_set_pattern_table) запись k регистра (k = 0…3) занимает биты 23 − 6k…18 − 6k: запись 0 — биты 23:18, запись 3 — биты 5:0. Пример в разделе 39.3.7.5 TRM и рисунки для TAB3 и TAB4 показывают обратный порядок; страница следует ESP-IDF. Внутри записи биты 5:2 — канал, 1:0 — ослабление.
Почему цифровой контроллер ESP32-S3 не работает с ADC2?
По разделу 39.3.1 TRM контроллер DIG ADC2 у ESP32-S3 работает неправильно, описание удалено, подробности — в errata. Непрерывное сканирование возможно только на SAR ADC1 (каналы на GPIO1…GPIO10); SAR ADC2 доступен через RTC-контроллер в блоке SENS, и его делит с радиочастью арбитр (регистр ARB_CTRL).
Источники
- Espressif. ESP32-S3 Technical Reference Manual, версия 1.8 — глава 39: таблица 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
- TIMG — группа таймеров: таймеры общего назначения и сторожTIMG_TnCONFIG_REG, TIMG_TnLO_REG, TIMG_TnHI_REG, TIMG_TnUPDATE_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
- 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
Статьи, инструменты и термины
- АЦП ESP32: ослабление и делительОслабление по напряжению, делитель, погрешность на входе, код Arduino и ESP-IDF
- АЦП ESP32Каналы ADC1 и ADC2, ослабление, калибровка, нелинейность, Wi-Fi и analogRead
- АЦП последовательного приближенияВыборка и подбор кода бит за битом: такты, скорость, источник сигнала
- DMAПрямой доступ к памяти без участия ядра