Регистры SENS ESP32-S3
Регистры SENS ESP32-S3: RTC-контроллеры SAR ADC1 и ADC2 для разовых измерений, в том числе в глубоком сне вместе с ULP, ослабление каждого канала, датчик температуры, сенсоры касания с порогами и режимом приближения, тактирование и сброс RTC-периферии.
Содержание
- Пример на C
- Регистры блока
- SENS_SAR_READER1_CTRL_REG
- SENS_SAR_MEAS1_CTRL2_REG
- SENS_SAR_MEAS1_MUX_REG
- SENS_SAR_ATTENn_REG
- SENS_SAR_READER2_CTRL_REG
- SENS_SAR_MEAS2_CTRL2_REG
- SENS_SAR_MEAS2_MUX_REG
- SENS_SAR_POWER_XPD_SAR_REG
- SENS_SAR_TSENS_CTRL_REG
- SENS_SAR_TOUCH_CONF_REG
- SENS_SAR_TOUCH_DENOISE_REG
- SENS_SAR_TOUCH_THRESn_REG
- SENS_SAR_TOUCH_CHN_ST_REG
- SENS_SAR_TOUCH_STATUS0_REG
- SENS_SAR_TOUCH_STATUS1_REG
- SENS_SAR_TOUCH_STATUS2_REG
- SENS_SAR_TOUCH_STATUS3_REG
- SENS_SAR_TOUCH_STATUS4_REG
- SENS_SAR_TOUCH_STATUS5_REG
- SENS_SAR_TOUCH_STATUS6_REG
- SENS_SAR_TOUCH_STATUS7_REG
- SENS_SAR_TOUCH_STATUS8_REG
- SENS_SAR_TOUCH_STATUS9_REG
- SENS_SAR_TOUCH_STATUS10_REG
- SENS_SAR_TOUCH_STATUS11_REG
- SENS_SAR_TOUCH_STATUS12_REG
- SENS_SAR_TOUCH_STATUS13_REG
- SENS_SAR_TOUCH_STATUS14_REG
- SENS_SAR_TOUCH_SLP_STATUS_REG
- SENS_SAR_TOUCH_APPR_STATUS_REG
- SENS_SAR_PERI_CLK_GATE_CONF_REG
- SENS_SAR_PERI_RESET_CONF_REG
Блок SENS по адресу 0x6000 8800 находится в RTC-домене. RTC-контроллер ADCn запускает разовое преобразование битом MEASn_START_SAR и кладёт результат в MEASn_DATA_SAR регистра SENS_SAR_MEASn_CTRL2_REG; если MEASn_START_FORCE и SARn_EN_PAD_FORCE сброшены, запуском и выбором канала управляет сопроцессор ULP.
Ослабление задаёт регистр SENS_SAR_ATTENn_REG: по 2 бита на канал, биты 1:0 — канал 0, биты 3:2 — канал 1 и так далее; значения 0…3 — 0, 2,5, 6 и 12 дБ. Опорное напряжение АЦП — около 1100 мВ, результат 12-битный: V = V_ref / k · data / 4095, где k — коэффициент ослабления (раздел 39.3.5 TRM).
Здесь же датчик температуры (SENS_SAR_TSENS_CTRL_REG), пороги и данные 14 сенсоров касания и включение тактов RTC-периферии. Регистры, которых TRM не описывает (SAR_SLAVE_ADDRn, регистры ULP-RISC-V и отладки), на странице не показаны.
| Экземпляр | Базовый адрес |
|---|---|
| SENS | 0x6000 8800 |
Пример на C
Разовое измерение SAR ADC1, канал 0, 12 дБ (soc/sens_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/sens_reg.h"
REG_CLR_BIT(SENS_SAR_MEAS1_MUX_REG, SENS_SAR1_DIG_FORCE); // RTC-контроллер
REG_SET_BIT(SENS_SAR_MEAS1_CTRL2_REG, SENS_MEAS1_START_FORCE); // запуск программой
REG_SET_BIT(SENS_SAR_MEAS1_CTRL2_REG, SENS_SAR1_EN_PAD_FORCE); // канал выбирает программа
REG_SET_FIELD(SENS_SAR_MEAS1_CTRL2_REG, SENS_SAR1_EN_PAD, BIT(0)); // канал 0
REG_SET_BITS(SENS_SAR_ATTEN1_REG, 3, 3); // канал 0: 12 дБ
REG_CLR_BIT(SENS_SAR_MEAS1_CTRL2_REG, SENS_MEAS1_START_SAR);
REG_SET_BIT(SENS_SAR_MEAS1_CTRL2_REG, SENS_MEAS1_START_SAR); // старт
while (!REG_GET_BIT(SENS_SAR_MEAS1_CTRL2_REG, SENS_MEAS1_DONE_SAR)) {}
uint32_t raw = REG_GET_FIELD(SENS_SAR_MEAS1_CTRL2_REG, SENS_MEAS1_DATA_SAR);Регистры блока
| Регистр (ESP-IDF) | Смещение | Назначение | После сброса |
|---|---|---|---|
| SENS_SAR_READER1_CTRL_REG | 0x0000 | RTC-контроллер ADC1: делитель, инверсия, прерывание | 0x2000 0002 |
| SENS_SAR_MEAS1_CTRL2_REG | 0x000C | RTC-контроллер ADC1: канал, запуск, результат | 0x0000 0000 |
| SENS_SAR_MEAS1_MUX_REG | 0x0010 | SAR ADC1: цифровой или RTC-контроллер | 0x0000 0000 |
| SENS_SAR_ATTENn_REG | 0x0-10 + n · 0x0024 | Ослабление каналов SAR ADCn | 0xFFFF FFFF |
| SENS_SAR_READER2_CTRL_REG | 0x0024 | RTC-контроллер ADC2: делитель, инверсия, арбитр, прерывание | 0x4001 0002 |
| SENS_SAR_MEAS2_CTRL2_REG | 0x0030 | RTC-контроллер ADC2: канал, запуск, результат | 0x0000 0000 |
| SENS_SAR_MEAS2_MUX_REG | 0x0034 | SAR ADC2: управление RTC во сне | 0x0000 0000 |
| SENS_SAR_POWER_XPD_SAR_REG | 0x003C | Принудительное питание SAR ADC | 0x0000 0000 |
| SENS_SAR_TSENS_CTRL_REG | 0x0050 | Датчик температуры: питание, такт, результат | 0x0001 9000 |
| SENS_SAR_TOUCH_CONF_REG | 0x005C | Сенсоры касания: выходы, режим данных, приближение | 0xFFF0 7FFF |
| SENS_SAR_TOUCH_DENOISE_REG | 0x0060 | Сенсоры касания: значение шума | 0x0000 0000 |
| SENS_SAR_TOUCH_THRESn_REG | 0x0060 + n · 0x0004 | Порог касания сенсора n | 0x0000 0000 |
| SENS_SAR_TOUCH_CHN_ST_REG | 0x009C | Сенсоры касания: активные каналы, сброс | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS0_REG | 0x00A0 | Сенсоры касания: текущий сканируемый вывод | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS1_REG | 0x00A4 | Данные сенсора касания 1 | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS2_REG | 0x00A8 | Данные сенсора касания 2 | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS3_REG | 0x00AC | Данные сенсора касания 3 | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS4_REG | 0x00B0 | Данные сенсора касания 4 | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS5_REG | 0x00B4 | Данные сенсора касания 5 | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS6_REG | 0x00B8 | Данные сенсора касания 6 | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS7_REG | 0x00BC | Данные сенсора касания 7 | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS8_REG | 0x00C0 | Данные сенсора касания 8 | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS9_REG | 0x00C4 | Данные сенсора касания 9 | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS10_REG | 0x00C8 | Данные сенсора касания 10 | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS11_REG | 0x00CC | Данные сенсора касания 11 | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS12_REG | 0x00D0 | Данные сенсора касания 12 | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS13_REG | 0x00D4 | Данные сенсора касания 13 | 0x0000 0000 |
| SENS_SAR_TOUCH_STATUS14_REG | 0x00D8 | Данные сенсора касания 14 | 0x0000 0000 |
| SENS_SAR_TOUCH_SLP_STATUS_REG | 0x00DC | Данные сенсора, работающего во сне | 0x0000 0000 |
| SENS_SAR_TOUCH_APPR_STATUS_REG | 0x00E0 | Счётчики касаний в режиме приближения | 0x0000 0000 |
| SENS_SAR_PERI_CLK_GATE_CONF_REG | 0x0104 | Такты RTC-периферии: АЦП, датчик температуры, RTC I2C, IO MUX | 0x0000 0000 |
| SENS_SAR_PERI_RESET_CONF_REG | 0x0108 | Сбросы RTC-периферии | 0x0000 0000 |
Доступ — обозначения TRM: R/W — чтение и запись, RO — только чтение, WO — только запись, WT — запись 1 запускает действие, SS и SC — бит ставится и сбрасывается аппаратно, WTC — сбрасывается записью 1.
SENS_SAR_READER1_CTRL_REG — rTC-контроллер ADC1: делитель, инверсия, прерывание
Смещение 0x0000, адрес 0x6000 8800, после сброса 0x2000 0002. TRM: регистр 39.10.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SAR1_INT_EN | SAR1_DATA_INV | — | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | SAR1_CLK_DIV | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SAR1_INT_EN | 29 | R/W | 1 | 1 — SAR ADC1 выдаёт прерывание |
| SAR1_DATA_INV | 28 | R/W | 0 | 1 — инвертировать данные SAR ADC1 |
| SAR1_CLK_DIV | 7:0 | R/W | 0x02 | Делитель такта |
SENS_SAR_MEAS1_CTRL2_REG — rTC-контроллер ADC1: канал, запуск, результат
Смещение 0x000C, адрес 0x6000 880C, после сброса 0x0000 0000. TRM: регистр 39.11.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| SAR1_EN_PAD_FORCE | SAR1_EN_PAD | MEAS1_START_FORCE | MEAS1_START_SAR | MEAS1_DONE_SAR | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| MEAS1_DATA_SAR | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SAR1_EN_PAD_FORCE | 31 | R/W | 0 | 1 — маску каналов задаёт программа, 0 — ULP |
| SAR1_EN_PAD | 30:19 | R/W | 0x000 | Маска каналов SAR ADC1; ESP-IDF ставит один бит |
| MEAS1_START_FORCE | 18 | R/W | 0 | 1 — запуск программой, 0 — сопроцессором ULP |
| MEAS1_START_SAR | 17 | R/W | 0 | Запуск преобразования при MEAS1_START_FORCE = 1 |
| MEAS1_DONE_SAR | 16 | RO | 0 | 1 — преобразование закончено |
| MEAS1_DATA_SAR | 15:0 | RO | 0x0000 | Результат SAR ADC1 |
SENS_SAR_MEAS1_MUX_REG — sAR ADC1: цифровой или RTC-контроллер
Смещение 0x0010, адрес 0x6000 8810, после сброса 0x0000 0000. TRM: регистр 39.12.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SAR1_DIG_FORCE | 31 | R/W | 0 | 1 — SAR ADC1 у цифрового контроллера, 0 — у RTC |
SENS_SAR_ATTENn_REG — ослабление каналов SAR ADCn
2 копии, n = 1, 2: смещение 0x0-10 + n · 0x0024, после сброса 0xFFFF FFFF. TRM: регистр 39.13.
После сброса все биты равны 1: у всех каналов ослабление 12 дБ. Номера каналов SAR ADC1 и SAR ADC2 и их выводы — в таблице 39.3-1 TRM: ADC1 — GPIO1…GPIO10, ADC2 — GPIO11…GPIO20.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SARn_ATTEN | 31:0 | R/W | 0xFFFF FFFF | По 2 бита на канал: биты 1:0 — канал 0, 3:2 — канал 1 и так далее |
SENS_SAR_READER2_CTRL_REG — rTC-контроллер ADC2: делитель, инверсия, арбитр, прерывание
Смещение 0x0024, адрес 0x6000 8824, после сброса 0x4001 0002. TRM: регистр 39.14.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SAR2_INT_EN | SAR2_DATA_INV | — | SAR2_WAIT_ARB_CYCLE | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | SAR2_CLK_DIV | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SAR2_INT_EN | 30 | R/W | 1 | 1 — SAR ADC2 выдаёт прерывание |
| SAR2_DATA_INV | 29 | R/W | 0 | 1 — инвертировать данные SAR ADC2 |
| SAR2_WAIT_ARB_CYCLE | 17:16 | R/W | 0x1 | Ожидание стабилизации арбитра после SAR_DONE |
| SAR2_CLK_DIV | 7:0 | R/W | 0x02 | Делитель такта |
SENS_SAR_MEAS2_CTRL2_REG — rTC-контроллер ADC2: канал, запуск, результат
Смещение 0x0030, адрес 0x6000 8830, после сброса 0x0000 0000. TRM: регистр 39.15.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| SAR2_EN_PAD_FORCE | SAR2_EN_PAD | MEAS2_START_FORCE | MEAS2_START_SAR | MEAS2_DONE_SAR | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| MEAS2_DATA_SAR | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SAR2_EN_PAD_FORCE | 31 | R/W | 0 | 1 — маску каналов задаёт программа, 0 — ULP |
| SAR2_EN_PAD | 30:19 | R/W | 0x000 | Маска каналов SAR ADC2 |
| MEAS2_START_FORCE | 18 | R/W | 0 | 1 — запуск программой, 0 — сопроцессором ULP |
| MEAS2_START_SAR | 17 | R/W | 0 | Запуск преобразования при MEAS2_START_FORCE = 1 |
| MEAS2_DONE_SAR | 16 | RO | 0 | 1 — преобразование закончено |
| MEAS2_DATA_SAR | 15:0 | RO | 0x0000 | Результат SAR ADC2 |
SENS_SAR_MEAS2_MUX_REG — sAR ADC2: управление RTC во сне
Смещение 0x0034, адрес 0x6000 8834, после сброса 0x0000 0000. TRM: регистр 39.16.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SAR2_RTC_FORCE | 31 | R/W | 0 | 1 — во сне SAR ADC2 управляет RTC |
SENS_SAR_POWER_XPD_SAR_REG — принудительное питание SAR ADC
Смещение 0x003C, адрес 0x6000 883C, после сброса 0x0000 0000. TRM: регистр 39.18.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| FORCE_XPD_SAR | 30:29 | R/W | 0x0 | Питание SAR ADC: по TRM 0 и 1 — без принудительного управления, 2 — включить, 3 — выключить; в ESP-IDF для похожих полей наоборот — 2 выключает, 3 включает |
SENS_SAR_TSENS_CTRL_REG — датчик температуры: питание, такт, результат
Смещение 0x0050, адрес 0x6000 8850, после сброса 0x0001 9000. TRM: регистр 39.19.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TSENS_DUMP_OUT | TSENS_POWER_UP_FORCE | TSENS_POWER_UP | TSENS_CLK_DIV | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TSENS_CLK_DIV | TSENS_IN_INV | TSENS_INT_EN | — | TSENS_READY | TSENS_OUT | ||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TSENS_DUMP_OUT | 24 | R/W | 0 | Выдача данных датчика при TSENS_POWER_UP_FORCE = 1 |
| TSENS_POWER_UP_FORCE | 23 | R/W | 0 | 1 — питанием и выдачей данных управляет программа, 0 — автомат |
| TSENS_POWER_UP | 22 | R/W | 0 | 1 — включить датчик температуры |
| TSENS_CLK_DIV | 21:14 | R/W | 0x06 | Делитель такта датчика |
| TSENS_IN_INV | 13 | R/W | 0 | 1 — инвертировать данные датчика |
| TSENS_INT_EN | 12 | R/W | 1 | 1 — прерывание датчика |
| TSENS_READY | 8 | RO | 0 | 1 — результат готов |
| TSENS_OUT | 7:0 | RO | 0x00 | Результат датчика температуры |
SENS_SAR_TOUCH_CONF_REG — сенсоры касания: выходы, режим данных, приближение
Смещение 0x005C, адрес 0x6000 885C, после сброса 0xFFF0 7FFF. TRM: регистр 39.20.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TOUCH_APPROACH_PAD0 | TOUCH_APPROACH_PAD1 | TOUCH_APPROACH_PAD2 | TOUCH_UNIT_END | TOUCH_DENOISE_END | TOUCH_DATA_SEL | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_STATUS_CLR | TOUCH_OUTEN | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_APPROACH_PAD0 | 31:28 | R/W | 0xF | Вывод для датчика приближения 0 |
| TOUCH_APPROACH_PAD1 | 27:24 | R/W | 0xF | Вывод для датчика приближения 1 |
| TOUCH_APPROACH_PAD2 | 23:20 | R/W | 0xF | Вывод для датчика приближения 2 |
| TOUCH_UNIT_END | 19 | RO | 0 | 1 — выборка закончена |
| TOUCH_DENOISE_END | 18 | RO | 0 | 1 — измерение шума закончено |
| TOUCH_DATA_SEL | 17:16 | R/W | 0x0 | Данные в регистрах STATUS: 0 и 1 — сырые, 2 — опорный уровень, 3 — сглаженные |
| TOUCH_STATUS_CLR | 15 | WO | 0 | Запись 1 сбрасывает признаки касания |
| TOUCH_OUTEN | 14:0 | R/W | 0x7FFF | Включение выходов контроллера касания |
SENS_SAR_TOUCH_DENOISE_REG — сенсоры касания: значение шума
Смещение 0x0060, адрес 0x6000 8860, после сброса 0x0000 0000. TRM: регистр 39.21.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_DENOISE_DATA | 21:0 | RO | 0x000000 | Шум, измеренный на сенсоре 0 |
SENS_SAR_TOUCH_THRESn_REG — порог касания сенсора n
14 копий, n = 1…14: смещение 0x0060 + n · 0x0004, после сброса 0x0000 0000. TRM: регистр 39.22.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_OUT_THn | 21:0 | R/W | 0x000000 | Порог касания пальцем для сенсора n |
SENS_SAR_TOUCH_CHN_ST_REG — сенсоры касания: активные каналы, сброс
Смещение 0x009C, адрес 0x6000 889C, после сброса 0x0000 0000. TRM: регистр 39.36.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TOUCH_MEAS_DONE | — | TOUCH_CHANNEL_CLR | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_CHANNEL_CLR | TOUCH_PAD_ACTIVE | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_MEAS_DONE | 31 | RO | 0 | 1 — измерение закончено |
| TOUCH_CHANNEL_CLR | 29:15 | WO | 0x0000 | Запись 1 сбрасывает канал касания |
| TOUCH_PAD_ACTIVE | 14:0 | RO | 0x0000 | Признаки касания по сенсорам |
SENS_SAR_TOUCH_STATUS0_REG — сенсоры касания: текущий сканируемый вывод
Смещение 0x00A0, адрес 0x6000 88A0, после сброса 0x0000 0000. TRM: регистр 39.39.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_SCAN_CURR | 25:22 | RO | 0x0 | Сенсор, который сейчас сканируется |
SENS_SAR_TOUCH_STATUS1_REG — данные сенсора касания 1
Смещение 0x00A4, адрес 0x6000 88A4, после сброса 0x0000 0000. TRM: регистр 39.40.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_PAD1_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_STATUS2_REG — данные сенсора касания 2
Смещение 0x00A8, адрес 0x6000 88A8, после сброса 0x0000 0000. TRM: регистр 39.41.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_PAD2_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_STATUS3_REG — данные сенсора касания 3
Смещение 0x00AC, адрес 0x6000 88AC, после сброса 0x0000 0000. TRM: регистр 39.42.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_PAD3_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_STATUS4_REG — данные сенсора касания 4
Смещение 0x00B0, адрес 0x6000 88B0, после сброса 0x0000 0000. TRM: регистр 39.43.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_PAD4_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_STATUS5_REG — данные сенсора касания 5
Смещение 0x00B4, адрес 0x6000 88B4, после сброса 0x0000 0000. TRM: регистр 39.44.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_PAD5_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_STATUS6_REG — данные сенсора касания 6
Смещение 0x00B8, адрес 0x6000 88B8, после сброса 0x0000 0000. TRM: регистр 39.45.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_PAD6_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_STATUS7_REG — данные сенсора касания 7
Смещение 0x00BC, адрес 0x6000 88BC, после сброса 0x0000 0000. TRM: регистр 39.46.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_PAD7_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_STATUS8_REG — данные сенсора касания 8
Смещение 0x00C0, адрес 0x6000 88C0, после сброса 0x0000 0000. TRM: регистр 39.47.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_PAD8_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_STATUS9_REG — данные сенсора касания 9
Смещение 0x00C4, адрес 0x6000 88C4, после сброса 0x0000 0000. TRM: регистр 39.48.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_PAD9_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_STATUS10_REG — данные сенсора касания 10
Смещение 0x00C8, адрес 0x6000 88C8, после сброса 0x0000 0000. TRM: регистр 39.49.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_PAD10_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_STATUS11_REG — данные сенсора касания 11
Смещение 0x00CC, адрес 0x6000 88CC, после сброса 0x0000 0000. TRM: регистр 39.50.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_PAD11_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_STATUS12_REG — данные сенсора касания 12
Смещение 0x00D0, адрес 0x6000 88D0, после сброса 0x0000 0000. TRM: регистр 39.51.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_PAD12_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_STATUS13_REG — данные сенсора касания 13
Смещение 0x00D4, адрес 0x6000 88D4, после сброса 0x0000 0000. TRM: регистр 39.52.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_PAD13_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_STATUS14_REG — данные сенсора касания 14
Смещение 0x00D8, адрес 0x6000 88D8, после сброса 0x0000 0000. TRM: регистр 39.53.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_PAD14_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_SLP_STATUS_REG — данные сенсора, работающего во сне
Смещение 0x00DC, адрес 0x6000 88DC, после сброса 0x0000 0000. TRM: регистр 39.54.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_SLP_DATA | 21:0 | RO | 0x000000 |
SENS_SAR_TOUCH_APPR_STATUS_REG — счётчики касаний в режиме приближения
Смещение 0x00E0, адрес 0x6000 88E0, после сброса 0x0000 0000. TRM: регистр 39.55 (SENS_SAR_TOUCH_APPR_STATUS_REG).
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TOUCH_SLP_APPROACH_CNT | TOUCH_APPROACH_PAD0_CNT | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_APPROACH_PAD1_CNT | TOUCH_APPROACH_PAD2_CNT | ||||||||||||||
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TOUCH_SLP_APPROACH_CNT | 31:24 | RO | 0x00 |
| TOUCH_APPROACH_PAD0_CNT | 23:16 | RO | 0x00 |
| TOUCH_APPROACH_PAD1_CNT | 15:8 | RO | 0x00 |
| TOUCH_APPROACH_PAD2_CNT | 7:0 | RO | 0x00 |
SENS_SAR_PERI_CLK_GATE_CONF_REG — такты RTC-периферии: АЦП, датчик температуры, RTC I2C, IO MUX
Смещение 0x0104, адрес 0x6000 8904, после сброса 0x0000 0000. TRM: регистр 39.37.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| IOMUX_CLK_EN | SARADC_CLK_EN | TSENS_CLK_EN | — | RTC_I2C_CLK_EN | — | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| IOMUX_CLK_EN | 31 | R/W | 0 | 1 — такт RTC IO MUX |
| SARADC_CLK_EN | 30 | R/W | 0 | 1 — такт SAR ADC |
| TSENS_CLK_EN | 29 | R/W | 0 | 1 — такт датчика температуры |
| RTC_I2C_CLK_EN | 27 | R/W | 0 | 1 — такт RTC I2C |
SENS_SAR_PERI_RESET_CONF_REG — сбросы RTC-периферии
Смещение 0x0108, адрес 0x6000 8908, после сброса 0x0000 0000. TRM: регистр 39.38.
Описания полей TSENS_RESET и SARADC_RESET в TRM («Enable SAR ADC reset» и «Enable IO MUX reset») не соответствуют их именам; что именно сбрасывает каждое поле, по TRM установить нельзя, поэтому на странице у них нет пояснений.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SARADC_RESET | TSENS_RESET | — | RTC_I2C_RESET | — | COCPU_RESET | — | ||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SARADC_RESET | 30 | R/W | 0 | |
| TSENS_RESET | 29 | R/W | 0 | |
| RTC_I2C_RESET | 27 | R/W | 0 | 1 — сброс RTC I2C |
| COCPU_RESET | 25 | R/W | 0 | 1 — сброс ULP-RISC-V |
Частые вопросы
Как сделать разовое измерение АЦП ESP32-S3 через регистры SENS?
Так же, как драйвер ESP-IDF (adc_ll.h): сбросить SAR1_DIG_FORCE, установить MEAS1_START_FORCE и SAR1_EN_PAD_FORCE, записать в SAR1_EN_PAD маску канала, задать ослабление в SENS_SAR_ATTEN1_REG, сбросить и установить MEAS1_START_SAR, дождаться MEAS1_DONE_SAR и прочитать MEAS1_DATA_SAR. Перед запуском ESP-IDF ещё ждёт освобождения АЦП по полю регистра SAR_SLAVE_ADDR1, которого нет в TRM.
Как работает поле FORCE_XPD_SAR ESP32-S3?
По описанию в TRM: 0 и 1 — принудительное управление питанием SAR ADC выключено, 2 — принудительно включить, 3 — принудительно выключить. ESP-IDF указывает обратное: в заголовке soc/sens_reg.h классического ESP32 SENS_FORCE_XPD_SAR_PD = 2, SENS_FORCE_XPD_SAR_PU = 3, а для похожего поля XPD_SAR_FORCE цифрового контроллера ESP32-S3 (adc_ll.h) пишет 3 для включения, 2 — для выключения и 0 — для управления автоматом. Какой источник прав для этого поля ESP32-S3, по документам установить нельзя.
Источники
- 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
- APB_SARADC — цифровой контроллер АЦПAPB_SARADC_CTRL_REG, APB_SARADC_CTRL2_REG, APB_SARADC_FILTER_CTRL1_REG, APB_SARADC_SAR1_PATT_TABn_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
- АЦП последовательного приближенияВыборка и подбор кода бит за битом: такты, скорость, источник сигнала
- Сенсор касания ESP32 (touch)Встроенные ёмкостные входы ESP32 для сенсорных кнопок