Регистры SENS ESP32
Регистры SENS ESP32: управление АЦП1 и АЦП2 из домена RTC — запуск, каналы, ослабление, разрядность и результат, — сенсорные входы с порогами и результатами измерений, ЦАП на GPIO25 и GPIO26 с генератором синуса и таймеры сопроцессора ULP.
Содержание
- Пример на C
- Регистры блока
- SENS_SAR_READ_CTRL_REG
- SENS_ULP_CP_SLEEP_CYC0_REG
- SENS_SAR_START_FORCE_REG
- SENS_SAR_ATTENn_REG
- SENS_SAR_MEAS_STARTn_REG
- SENS_SAR_TOUCH_CTRL1_REG
- SENS_SAR_TOUCH_THRES1_REG
- SENS_SAR_TOUCH_THRES2_REG
- SENS_SAR_TOUCH_THRES3_REG
- SENS_SAR_TOUCH_THRES4_REG
- SENS_SAR_TOUCH_THRES5_REG
- SENS_SAR_TOUCH_OUT1_REG
- SENS_SAR_TOUCH_OUT2_REG
- SENS_SAR_TOUCH_OUT3_REG
- SENS_SAR_TOUCH_OUT4_REG
- SENS_SAR_TOUCH_OUT5_REG
- SENS_SAR_TOUCH_CTRL2_REG
- SENS_SAR_TOUCH_ENABLE_REG
- SENS_SAR_READ_CTRL2_REG
- SENS_SAR_DAC_CTRL1_REG
- SENS_SAR_DAC_CTRL2_REG
- SENS_SAR_MEAS_CTRL2_REG
Блок SENS по адресу 0x3FF4 8800 управляет аналоговыми узлами домена RTC. АЦП1 (восемь каналов, GPIO32…39) и АЦП2 (десять каналов, GPIO0, 2, 4, 12…15, 25…27) запускаются отсюда, когда ими управляет программа или сопроцессор ULP, а не контроллер DIG SAR для DMA. АЦП2 занят Wi-Fi, пока работает радио.
Разовое измерение АЦП1: выбрать управление из RTC (SAR1_DIG_FORCE = 0, MEAS1_START_FORCE = 1, SAR1_EN_PAD_FORCE = 1), записать маску канала в SAR1_EN_PAD и дать перепад 0 → 1 в MEAS1_START_SAR, дождаться MEAS1_DONE_SAR и прочитать MEAS1_DATA_SAR. Ослабление каждого канала — два бита в SENS_SAR_ATTEN1_REG, разрядность 9…12 бит — SAR1_BIT_WIDTH.
Регистры SAR_TOUCH_* задают пороги и показывают результаты десяти сенсорных входов, SAR_DAC_CTRL1 и SAR_DAC_CTRL2 — ЦАП и встроенный генератор синуса.
| Экземпляр | Базовый адрес |
|---|---|
| SENS | 0x3FF4 8800 |
Пример на C
АЦП1, канал 6 (GPIO34): разовое измерение из RTC (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_READ_CTRL_REG, SENS_SAR1_DIG_FORCE); // управление из RTC
REG_SET_FIELD(SENS_SAR_START_FORCE_REG, SENS_SAR1_BIT_WIDTH, 3); // 12 бит
REG_SET_BIT(SENS_SAR_MEAS_START1_REG, SENS_MEAS1_START_FORCE);
REG_SET_BIT(SENS_SAR_MEAS_START1_REG, SENS_SAR1_EN_PAD_FORCE);
REG_SET_FIELD(SENS_SAR_MEAS_START1_REG, SENS_SAR1_EN_PAD, 1 << 6);
REG_CLR_BIT(SENS_SAR_MEAS_START1_REG, SENS_MEAS1_START_SAR);
REG_SET_BIT(SENS_SAR_MEAS_START1_REG, SENS_MEAS1_START_SAR);
while (!REG_GET_BIT(SENS_SAR_MEAS_START1_REG, SENS_MEAS1_DONE_SAR)) {}
uint32_t raw = REG_GET_FIELD(SENS_SAR_MEAS_START1_REG, SENS_MEAS1_DATA_SAR);Регистры блока
| Регистр (ESP-IDF) | Смещение | Назначение | После сброса |
|---|---|---|---|
| SENS_SAR_READ_CTRL_REG | 0x0000 | АЦП1: делитель такта, выборка, управление | 0x0003 0902 |
| SENS_ULP_CP_SLEEP_CYC0_REG | 0x0018 | Период пробуждения сопроцессора ULP | 0x0000 00C8 |
| SENS_SAR_START_FORCE_REG | 0x002C | Разрядность АЦП, запуск ULP | 0x0000 000F |
| SENS_SAR_ATTENn_REG | 0x0030 + n · 0x0004 | Ослабление каналов АЦП n | 0xFFFF FFFF |
| SENS_SAR_MEAS_STARTn_REG | 0x0014 + n · 0x0040 | АЦП n: запуск, каналы, готовность и результат | 0x0000 0000 |
| SENS_SAR_TOUCH_CTRL1_REG | 0x0058 | Сенсорные входы: задержки и режим выхода | 0x0204 1000 |
| SENS_SAR_TOUCH_THRES1_REG | 0x005C | Пороги сенсорных входов 0 и 1 | 0x0000 0000 |
| SENS_SAR_TOUCH_THRES2_REG | 0x0060 | Пороги сенсорных входов 2 и 3 | 0x0000 0000 |
| SENS_SAR_TOUCH_THRES3_REG | 0x0064 | Пороги сенсорных входов 4 и 5 | 0x0000 0000 |
| SENS_SAR_TOUCH_THRES4_REG | 0x0068 | Пороги сенсорных входов 6 и 7 | 0x0000 0000 |
| SENS_SAR_TOUCH_THRES5_REG | 0x006C | Пороги сенсорных входов 8 и 9 | 0x0000 0000 |
| SENS_SAR_TOUCH_OUT1_REG | 0x0070 | Результаты сенсорных входов 0 и 1 | 0x0000 0000 |
| SENS_SAR_TOUCH_OUT2_REG | 0x0074 | Результаты сенсорных входов 2 и 3 | 0x0000 0000 |
| SENS_SAR_TOUCH_OUT3_REG | 0x0078 | Результаты сенсорных входов 4 и 5 | 0x0000 0000 |
| SENS_SAR_TOUCH_OUT4_REG | 0x007C | Результаты сенсорных входов 6 и 7 | 0x0000 0000 |
| SENS_SAR_TOUCH_OUT5_REG | 0x0080 | Результаты сенсорных входов 8 и 9 | 0x0000 0000 |
| SENS_SAR_TOUCH_CTRL2_REG | 0x0084 | Сенсорные входы: запуск и период измерений | 0x0040 0800 |
| SENS_SAR_TOUCH_ENABLE_REG | 0x008C | Сенсорные входы: какие измеряются и будят | 0x3FFF FFFF |
| SENS_SAR_READ_CTRL2_REG | 0x0090 | АЦП2: делитель такта, выборка, управление | 0x0003 0902 |
| SENS_SAR_DAC_CTRL1_REG | 0x0098 | ЦАП: такт и генератор синуса | 0x0000 0000 |
| SENS_SAR_DAC_CTRL2_REG | 0x009C | ЦАП: уровни, масштаб и фаза каналов | 0x0300 0000 |
| SENS_SAR_MEAS_CTRL2_REG | 0x00A0 | Управление ЦАП АЦП1 | 0x0000 0003 |
Доступ — обозначения TRM: R/W — чтение и запись, RO — только чтение, WO — только запись, WT — запись 1 запускает действие, SS и SC — бит ставится и сбрасывается аппаратно, WTC — сбрасывается записью 1.
SENS_SAR_READ_CTRL_REG — аЦП1: делитель такта, выборка, управление
Смещение 0x0000, адрес 0x3FF4 8800, после сброса 0x0003 0902. TRM: регистр 31.1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SAR1_DATA_INV | SAR1_DIG_FORCE | — | SAR1_SAMPLE_BIT | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SAR1_SAMPLE_CYCLE | SAR1_CLK_DIV | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SAR1_DATA_INV | 28 | R/W | 0 | Инвертировать результат АЦП1 |
| SAR1_DIG_FORCE | 27 | R/W | 0 | 1 — АЦП1 управляет контроллер DIG SAR, 0 — домен RTC |
| SAR1_SAMPLE_BIT | 17:16 | R/W | 0x3 | Разрядность для контроллера DIG |
| SAR1_SAMPLE_CYCLE | 15:8 | R/W | 0x09 | Длительность выборки АЦП1 |
| SAR1_CLK_DIV | 7:0 | R/W | 0x02 | Делитель такта АЦП1 |
SENS_ULP_CP_SLEEP_CYC0_REG — период пробуждения сопроцессора ULP
Смещение 0x0018, адрес 0x3FF4 8818, после сброса 0x0000 00C8. TRM: регистр 31.2.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| SLEEP_CYCLES_S0 | 31:0 | R/W | 0x0000 00C8 |
SENS_SAR_START_FORCE_REG — разрядность АЦП, запуск ULP
Смещение 0x002C, адрес 0x3FF4 882C, после сброса 0x0000 000F. TRM: регистр 31.3.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SAR1_STOP | SAR2_STOP | PC_INIT | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| PC_INIT | — | ULP_CP_START_TOP | ULP_CP_FORCE_START_TOP | SAR2_PWDET_CCT | SAR2_EN_TEST | SAR2_BIT_WIDTH | SAR1_BIT_WIDTH | ||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SAR1_STOP | 23 | R/W | 0 | |
| SAR2_STOP | 22 | R/W | 0 | |
| PC_INIT | 21:11 | R/W | 0x000 | Начальный адрес программы ULP |
| ULP_CP_START_TOP | 9 | R/W | 0 | Запустить сопроцессор ULP |
| ULP_CP_FORCE_START_TOP | 8 | R/W | 0 | Запускать ULP программно, а не по таймеру |
| SAR2_PWDET_CCT | 7:5 | R/W | 0x0 | |
| SAR2_EN_TEST | 4 | R/W | 0 | |
| SAR2_BIT_WIDTH | 3:2 | R/W | 0x3 | Разрядность АЦП2: 0 — 9 бит, 1 — 10, 2 — 11, 3 — 12 бит |
| SAR1_BIT_WIDTH | 1:0 | R/W | 0x3 | Разрядность АЦП1: 0 — 9 бит, 1 — 10, 2 — 11, 3 — 12 бит |
SENS_SAR_ATTENn_REG — ослабление каналов АЦП n
2 копии, n = 1, 2: смещение 0x0030 + n · 0x0004, после сброса 0xFFFF FFFF. TRM: регистр 31.4.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SARn_ATTEN | 31:0 | R/W | 0xFFFF FFFF | По 2 бита на канал: 0 — 0 дБ, 1 — 2,5 дБ, 2 — 6 дБ, 3 — 11 дБ |
SENS_SAR_MEAS_STARTn_REG — аЦП n: запуск, каналы, готовность и результат
2 копии, n = 1, 2: смещение 0x0014 + n · 0x0040, после сброса 0x0000 0000. TRM: регистр 31.6.
Регистры двух АЦП устроены одинаково: SENS_SAR_MEAS_START1_REG по смещению 0x54 управляет АЦП1, SENS_SAR_MEAS_START2_REG по смещению 0x94 — АЦП2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| SARn_EN_PAD_FORCE | SARn_EN_PAD | MEASn_START_FORCE | MEASn_START_SAR | MEASn_DONE_SAR | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| MEASn_DATA_SAR | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SARn_EN_PAD_FORCE | 31 | R/W | 0 | 1 — каналы задаёт SARn_EN_PAD, 0 — сопроцессор ULP |
| SARn_EN_PAD | 30:19 | R/W | 0x000 | Маска канала: бит n — канал n |
| MEASn_START_FORCE | 18 | R/W | 0 | 1 — запуск битом MEASn_START_SAR, 0 — сопроцессором ULP |
| MEASn_START_SAR | 17 | R/W | 0 | Перепад 0 → 1 запускает измерение |
| MEASn_DONE_SAR | 16 | RO | 0 | Измерение закончено |
| MEASn_DATA_SAR | 15:0 | RO | 0x0000 | Результат последнего измерения |
SENS_SAR_TOUCH_CTRL1_REG — сенсорные входы: задержки и режим выхода
Смещение 0x0058, адрес 0x3FF4 8858, после сброса 0x0204 1000. TRM: регистр 31.7.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TOUCH_OUT_1EN | TOUCH_OUT_SEL | TOUCH_XPD_WAIT | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_MEAS_DELAY | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_OUT_1EN | 25 | R/W | 1 | |
| TOUCH_OUT_SEL | 24 | R/W | 0 | |
| TOUCH_XPD_WAIT | 23:16 | R/W | 0x04 | Ожидание включения сенсора |
| TOUCH_MEAS_DELAY | 15:0 | R/W | 0x1000 | Длительность одного измерения в тактах 8 МГц |
SENS_SAR_TOUCH_THRES1_REG — пороги сенсорных входов 0 и 1
Смещение 0x005C, адрес 0x3FF4 885C, после сброса 0x0000 0000. TRM: регистр 31.8.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TOUCH_OUT_TH0 | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_OUT_TH1 | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_OUT_TH0 | 31:16 | R/W | 0x0000 | Порог сенсорного входа 0 |
| TOUCH_OUT_TH1 | 15:0 | R/W | 0x0000 | Порог сенсорного входа 1 |
SENS_SAR_TOUCH_THRES2_REG — пороги сенсорных входов 2 и 3
Смещение 0x0060, адрес 0x3FF4 8860, после сброса 0x0000 0000. TRM: регистр 31.9.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TOUCH_OUT_TH2 | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_OUT_TH3 | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_OUT_TH2 | 31:16 | R/W | 0x0000 | Порог сенсорного входа 2 |
| TOUCH_OUT_TH3 | 15:0 | R/W | 0x0000 | Порог сенсорного входа 3 |
SENS_SAR_TOUCH_THRES3_REG — пороги сенсорных входов 4 и 5
Смещение 0x0064, адрес 0x3FF4 8864, после сброса 0x0000 0000. TRM: регистр 31.10.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TOUCH_OUT_TH4 | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_OUT_TH5 | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_OUT_TH4 | 31:16 | R/W | 0x0000 | Порог сенсорного входа 4 |
| TOUCH_OUT_TH5 | 15:0 | R/W | 0x0000 | Порог сенсорного входа 5 |
SENS_SAR_TOUCH_THRES4_REG — пороги сенсорных входов 6 и 7
Смещение 0x0068, адрес 0x3FF4 8868, после сброса 0x0000 0000. TRM: регистр 31.11.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TOUCH_OUT_TH6 | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_OUT_TH7 | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_OUT_TH6 | 31:16 | R/W | 0x0000 | Порог сенсорного входа 6 |
| TOUCH_OUT_TH7 | 15:0 | R/W | 0x0000 | Порог сенсорного входа 7 |
SENS_SAR_TOUCH_THRES5_REG — пороги сенсорных входов 8 и 9
Смещение 0x006C, адрес 0x3FF4 886C, после сброса 0x0000 0000. TRM: регистр 31.12.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TOUCH_OUT_TH8 | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_OUT_TH9 | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_OUT_TH8 | 31:16 | R/W | 0x0000 | Порог сенсорного входа 8 |
| TOUCH_OUT_TH9 | 15:0 | R/W | 0x0000 | Порог сенсорного входа 9 |
SENS_SAR_TOUCH_OUT1_REG — результаты сенсорных входов 0 и 1
Смещение 0x0070, адрес 0x3FF4 8870, после сброса 0x0000 0000. TRM: регистр 31.13.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TOUCH_MEAS_OUT0 | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_MEAS_OUT1 | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_MEAS_OUT0 | 31:16 | RO | 0x0000 | Результат измерения сенсорного входа 0 |
| TOUCH_MEAS_OUT1 | 15:0 | RO | 0x0000 | Результат измерения сенсорного входа 1 |
SENS_SAR_TOUCH_OUT2_REG — результаты сенсорных входов 2 и 3
Смещение 0x0074, адрес 0x3FF4 8874, после сброса 0x0000 0000. TRM: регистр 31.14.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TOUCH_MEAS_OUT2 | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_MEAS_OUT3 | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_MEAS_OUT2 | 31:16 | RO | 0x0000 | Результат измерения сенсорного входа 2 |
| TOUCH_MEAS_OUT3 | 15:0 | RO | 0x0000 | Результат измерения сенсорного входа 3 |
SENS_SAR_TOUCH_OUT3_REG — результаты сенсорных входов 4 и 5
Смещение 0x0078, адрес 0x3FF4 8878, после сброса 0x0000 0000. TRM: регистр 31.15.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TOUCH_MEAS_OUT4 | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_MEAS_OUT5 | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_MEAS_OUT4 | 31:16 | RO | 0x0000 | Результат измерения сенсорного входа 4 |
| TOUCH_MEAS_OUT5 | 15:0 | RO | 0x0000 | Результат измерения сенсорного входа 5 |
SENS_SAR_TOUCH_OUT4_REG — результаты сенсорных входов 6 и 7
Смещение 0x007C, адрес 0x3FF4 887C, после сброса 0x0000 0000. TRM: регистр 31.16.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TOUCH_MEAS_OUT6 | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_MEAS_OUT7 | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_MEAS_OUT6 | 31:16 | RO | 0x0000 | Результат измерения сенсорного входа 6 |
| TOUCH_MEAS_OUT7 | 15:0 | RO | 0x0000 | Результат измерения сенсорного входа 7 |
SENS_SAR_TOUCH_OUT5_REG — результаты сенсорных входов 8 и 9
Смещение 0x0080, адрес 0x3FF4 8880, после сброса 0x0000 0000. TRM: регистр 31.17.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TOUCH_MEAS_OUT8 | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_MEAS_OUT9 | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_MEAS_OUT8 | 31:16 | RO | 0x0000 | Результат измерения сенсорного входа 8 |
| TOUCH_MEAS_OUT9 | 15:0 | RO | 0x0000 | Результат измерения сенсорного входа 9 |
SENS_SAR_TOUCH_CTRL2_REG — сенсорные входы: запуск и период измерений
Смещение 0x0084, адрес 0x3FF4 8884, после сброса 0x0040 0800. TRM: регистр 31.18.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TOUCH_MEAS_EN_CLR | TOUCH_SLEEP_CYCLES | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_SLEEP_CYCLES | TOUCH_START_FORCE | TOUCH_START_EN | TOUCH_START_FSM_EN | TOUCH_MEAS_DONE | TOUCH_MEAS_EN | ||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_MEAS_EN_CLR | 30 | WO | 0 | |
| TOUCH_SLEEP_CYCLES | 29:14 | R/W | 0x0100 | Период измерений во сне в тактах медленного генератора |
| TOUCH_START_FORCE | 13 | R/W | 0 | |
| TOUCH_START_EN | 12 | R/W | 0 | Запустить измерение программно |
| TOUCH_START_FSM_EN | 11 | R/W | 1 | Запускать измерения автоматом по таймеру |
| TOUCH_MEAS_DONE | 10 | RO | 0 | Измерение сенсорных входов закончено |
| TOUCH_MEAS_EN | 9:0 | RO | 0x000 | Флаги входов, у которых результат ниже порога |
SENS_SAR_TOUCH_ENABLE_REG — сенсорные входы: какие измеряются и будят
Смещение 0x008C, адрес 0x3FF4 888C, после сброса 0x3FFF FFFF. TRM: регистр 31.19.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TOUCH_PAD_OUTEN1 | TOUCH_PAD_OUTEN2 | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TOUCH_PAD_OUTEN2 | TOUCH_PAD_WORKEN | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TOUCH_PAD_OUTEN1 | 29:20 | R/W | 0x3FF | Маска входов набора 1 для прерывания и пробуждения |
| TOUCH_PAD_OUTEN2 | 19:10 | R/W | 0x3FF | Маска входов набора 2 для прерывания и пробуждения |
| TOUCH_PAD_WORKEN | 9:0 | R/W | 0x3FF | Маска сенсорных входов, которые измеряются |
SENS_SAR_READ_CTRL2_REG — аЦП2: делитель такта, выборка, управление
Смещение 0x0090, адрес 0x3FF4 8890, после сброса 0x0003 0902. TRM: регистр 31.20.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | SAR2_DATA_INV | SAR2_DIG_FORCE | — | SAR2_SAMPLE_BIT | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SAR2_SAMPLE_CYCLE | SAR2_CLK_DIV | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SAR2_DATA_INV | 29 | R/W | 0 | |
| SAR2_DIG_FORCE | 28 | R/W | 0 | 1 — АЦП2 управляет контроллер DIG SAR, 0 — домен RTC |
| SAR2_SAMPLE_BIT | 17:16 | R/W | 0x3 | |
| SAR2_SAMPLE_CYCLE | 15:8 | R/W | 0x09 | Длительность выборки АЦП2 |
| SAR2_CLK_DIV | 7:0 | R/W | 0x02 | Делитель такта АЦП2 |
SENS_SAR_DAC_CTRL1_REG — цАП: такт и генератор синуса
Смещение 0x0098, адрес 0x3FF4 8898, после сброса 0x0000 0000. TRM: регистр 31.22.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | DAC_CLK_INV | DAC_CLK_FORCE_HIGH | DAC_CLK_FORCE_LOW | DAC_DIG_FORCE | — | SW_TONE_EN | |||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SW_FSTEP | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| DAC_CLK_INV | 25 | R/W | 0 | |
| DAC_CLK_FORCE_HIGH | 24 | R/W | 0 | |
| DAC_CLK_FORCE_LOW | 23 | R/W | 0 | |
| DAC_DIG_FORCE | 22 | R/W | 0 | |
| SW_TONE_EN | 16 | R/W | 0 | Включить генератор синуса |
| SW_FSTEP | 15:0 | R/W | 0x0000 | Шаг частоты генератора синуса |
SENS_SAR_DAC_CTRL2_REG — цАП: уровни, масштаб и фаза каналов
Смещение 0x009C, адрес 0x3FF4 889C, после сброса 0x0300 0000. TRM: регистр 31.23.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | DAC_CW_EN2 | DAC_CW_EN1 | DAC_INV2 | DAC_INV1 | DAC_SCALE2 | DAC_SCALE1 | |||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DAC_DC2 | DAC_DC1 | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| DAC_CW_EN2 | 25 | R/W | 1 | Канал 2 выводит синус генератора |
| DAC_CW_EN1 | 24 | R/W | 1 | Канал 1 выводит синус генератора |
| DAC_INV2 | 23:22 | R/W | 0x0 | |
| DAC_INV1 | 21:20 | R/W | 0x0 | |
| DAC_SCALE2 | 19:18 | R/W | 0x0 | |
| DAC_SCALE1 | 17:16 | R/W | 0x0 | |
| DAC_DC2 | 15:8 | R/W | 0x00 | Постоянная составляющая канала 2 ЦАП (GPIO26) |
| DAC_DC1 | 7:0 | R/W | 0x00 | Постоянная составляющая канала 1 ЦАП (GPIO25) |
SENS_SAR_MEAS_CTRL2_REG — управление ЦАП АЦП1
Смещение 0x00A0, адрес 0x3FF4 88A0, после сброса 0x0000 0003. TRM: регистр 31.24.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| SAR1_DAC_XPD_FSM | 3:0 | R/W | 0x3 |
Частые вопросы
Как прочитать АЦП1 ESP32 через регистры SENS?
В SENS_SAR_READ_CTRL_REG сбросить SAR1_DIG_FORCE, в SENS_SAR_MEAS_START1_REG установить MEAS1_START_FORCE и SAR1_EN_PAD_FORCE, записать 1 << канал в SAR1_EN_PAD, сбросить и установить MEAS1_START_SAR, дождаться MEAS1_DONE_SAR и прочитать MEAS1_DATA_SAR. Перед этим должно быть включено питание АЦП (SAR_MEAS_WAIT2_REG, поле FORCE_XPD_SAR) — его ESP-IDF включает сам.
Как задать ослабление канала АЦП ESP32?
В регистре SENS_SAR_ATTEN1_REG для АЦП1 и SENS_SAR_ATTEN2_REG для АЦП2 каждому каналу отведено два бита: канал n — биты 2n+1:2n. Значения 0…3 соответствуют 0, 2,5, 6 и 11 дБ; рекомендуемые ESP-IDF диапазоны входа — 100…950, 100…1250, 150…1750 и 150…2450 мВ.
Источники
- Espressif. ESP32 Technical Reference Manual, версия 5.8 — глава 31: таблица Register Summary и рисунки регистров — смещения, поля, тип доступа и значения после сброса
- Espressif. SVD svd/esp32.svd, версия 16 (espressif/svd, коммит be20aa1) — базовые адреса периферии, список регистров и полей; лицензия Apache-2.0
- Espressif. ESP-IDF v6.1: заголовки components/soc/esp32/register/soc/*_reg.h (коммит fff9895) — имена макросов регистров и полей, сверка положения полей и значений по умолчанию; лицензия Apache-2.0 OR MIT
Нашли ошибку в регистрах?
Другие регистры ESP32
- Все регистры ESP32Блоки периферии и базовые адреса
- GPIO — выводы общего назначения и матрица GPIOGPIO_OUT_REG, GPIO_OUT_W1TS_REG, GPIO_OUT_W1TC_REG, GPIO_OUT1_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 общего назначения HSPI и VSPISPI_CMD_REG, SPI_ADDR_REG, SPI_CTRL_REG, SPI_CTRL1_REG
- I2C — контроллер шины I2CI2C_SCL_LOW_PERIOD_REG, I2C_CTR_REG, I2C_SR_REG, I2C_TO_REG
- LEDC — контроллер ШИМ для светодиодов и не толькоLEDC_HSCHn_CONF0_REG, LEDC_HSCHn_HPOINT_REG, LEDC_HSCHn_DUTY_REG, LEDC_HSCHn_CONF1_REG
- TIMG — группа таймеров: таймеры общего назначения и сторожTIMG_TnCONFIG_REG, TIMG_TnLO_REG, TIMG_TnHI_REG, TIMG_TnUPDATE_REG
- RMT — контроллер инфракрасного пульта и импульсных протоколовRMT_CHnCONF0_REG, RMT_CHnCONF1_REG, RMT_INT_RAW_REG, RMT_INT_ST_REG
- RTC_CNTL — управление питанием, сном и RTCRTC_CNTL_OPTIONS0_REG, RTC_CNTL_SLP_TIMER0_REG, RTC_CNTL_SLP_TIMER1_REG, RTC_CNTL_TIME_UPDATE_REG
- eFuse — однократно программируемая память настроек и ключейEFUSE_BLK0_RDATA0_REG, EFUSE_BLK0_RDATA1_REG, EFUSE_BLK0_RDATA2_REG, EFUSE_BLK0_RDATA3_REG
Статьи, инструменты и термины
- АЦП ESP32Каналы ADC1 и ADC2, ослабление, калибровка, нелинейность, Wi-Fi и analogRead
- АЦП ESP32: ослабление и делительОслабление по напряжению, делитель, погрешность на входе, код Arduino и ESP-IDF
- АЦП последовательного приближенияВыборка и подбор кода бит за битом: такты, скорость, источник сигнала
- ESP32: выводы и GPIO34 GPIO: функции, свободные выводы, только входы, флеш-память, strapping, JTAG, токи