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

Регистры LEDC ESP32

Регистры LEDC ESP32: восемь быстрых (HS) и восемь медленных (LS) каналов ШИМ, по четыре таймера на каждую группу с дробным 18-битным делителем и разрядностью до 20 бит, скважность, аппаратное плавное изменение яркости и прерывания.

LEDC по адресу 0x3FF5 9000 разделён на две группы. Быстрые каналы HSCH0…7 и таймеры HSTIMER0…3 применяют новую скважность и делитель сами в начале следующего периода. Медленные каналы LSCH0…7 и таймеры LSTIMER0…3 тактируются от медленного источника и требуют записи 1 в PARA_UP — зато могут работать в лёгком сне.

Такт таймера — APB_CLK 80 МГц или REF_TICK 1 МГц (поле TICK_SEL); у медленных таймеров вместо APB может быть RC-генератор 8 МГц (поле APB_CLK_SEL регистра LEDC_CONF_REG). Делитель CLK_DIV_NUM дробный: 10 бит целой части и 8 бит дроби. Частота ШИМ = f_clk / (делитель · 2^DUTY_RES), разрядность до 20 бит.

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

Пример на C

Быстрый канал 0: новая скважность 50 % при 13 битах (soc/ledc_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/ledc_reg.h"

uint32_t duty = 1 << 12;                                    // 4096 из 8192
REG_WRITE(LEDC_HSCH0_DUTY_REG, duty << 4);                  // 4 дробных бита
REG_SET_BIT(LEDC_HSCH0_CONF1_REG, LEDC_DUTY_START_HSCH0);   // применить в начале периода

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

Регистр (ESP-IDF)СмещениеНазначениеПосле сброса
LEDC_HSCHn_CONF0_REG0x0000 + n · 0x0014Быстрый канал n: таймер, выход, уровень покоя0x0000 0000
LEDC_HSCHn_HPOINT_REG0x0004 + n · 0x0014Быстрый канал n: точка установки выхода0x0000 0000
LEDC_HSCHn_DUTY_REG0x0008 + n · 0x0014Быстрый канал n: скважность0x0000 0000
LEDC_HSCHn_CONF1_REG0x000C + n · 0x0014Быстрый канал n: плавное изменение скважности0x4000 0000
LEDC_HSCHn_DUTY_R_REG0x0010 + n · 0x0014Быстрый канал n: текущая скважность0x0000 0000
LEDC_LSCHn_CONF0_REG0x00A0 + n · 0x0014Медленный канал n: таймер, выход, обновление0x0000 0000
LEDC_LSCHn_HPOINT_REG0x00A4 + n · 0x0014Медленный канал n: точка установки выхода0x0000 0000
LEDC_LSCHn_DUTY_REG0x00A8 + n · 0x0014Медленный канал n: скважность0x0000 0000
LEDC_LSCHn_CONF1_REG0x00AC + n · 0x0014Медленный канал n: плавное изменение скважности0x4000 0000
LEDC_LSCHn_DUTY_R_REG0x00B0 + n · 0x0014Медленный канал n: текущая скважность0x0000 0000
LEDC_HSTIMERn_CONF_REG0x0140 + n · 0x0008Быстрый таймер n: делитель, разрядность, такт0x0100 0000
LEDC_HSTIMERn_VALUE_REG0x0144 + n · 0x0008Быстрый таймер n: значение счётчика0x0000 0000
LEDC_LSTIMERn_CONF_REG0x0160 + n · 0x0008Медленный таймер n: делитель, разрядность, такт0x0100 0000
LEDC_LSTIMERn_VALUE_REG0x0164 + n · 0x0008Медленный таймер n: значение счётчика0x0000 0000
LEDC_INT_RAW_REG0x0180Необработанные флаги прерываний0x0000 0000
LEDC_INT_ST_REG0x0184Флаги прерываний после маски разрешения0x0000 0000
LEDC_INT_ENA_REG0x0188Разрешение прерываний0x0000 0000
LEDC_INT_CLR_REG0x018CСброс флагов прерываний записью 10x0000 0000
LEDC_CONF_REG0x0190Источник медленного такта0x0000 0000

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

LEDC_HSCHn_CONF0_REG — быстрый канал n: таймер, выход, уровень покоя

8 копий, n = 0…7: смещение 0x0000 + n · 0x0014, после сброса 0x0000 0000. TRM: регистр 28.1.

1514131211109876543210
—IDLE_LV_HSCHnSIG_OUT_EN_HSCHnTIMER_SEL_HSCHn
ПолеБитыДоступСбросНазначение
IDLE_LV_HSCHn3R/W0Уровень выхода, когда канал остановлен
SIG_OUT_EN_HSCHn2R/W0Включить выход канала
TIMER_SEL_HSCHn1:0R/W0x0Номер быстрого таймера 0…3

LEDC_HSCHn_HPOINT_REG — быстрый канал n: точка установки выхода

8 копий, n = 0…7: смещение 0x0004 + n · 0x0014, после сброса 0x0000 0000. TRM: регистр 28.2.

ПолеБитыДоступСбросНазначение
HPOINT_HSCHn19:0R/W0x00000Выход ставится в 1, когда счётчик таймера равен этому значению

LEDC_HSCHn_DUTY_REG — быстрый канал n: скважность

8 копий, n = 0…7: смещение 0x0008 + n · 0x0014, после сброса 0x0000 0000. TRM: регистр 28.3.

ПолеБитыДоступСбросНазначение
DUTY_HSCHn24:0R/W0x0000000Скважность в тактах счётчика, младшие 4 бита — дробь

LEDC_HSCHn_CONF1_REG — быстрый канал n: плавное изменение скважности

8 копий, n = 0…7: смещение 0x000C + n · 0x0014, после сброса 0x4000 0000. TRM: регистр 28.4.

31302928272625242322212019181716
DUTY_START_HSCHnDUTY_INC_HSCHnDUTY_NUM_HSCHnDUTY_CYCLE_HSCHn
1514131211109876543210
DUTY_CYCLE_HSCHnDUTY_SCALE_HSCHn
ПолеБитыДоступСбросНазначение
DUTY_START_HSCHn31R/W0Запись 1 запускает применение скважности или плавное изменение
DUTY_INC_HSCHn30R/W1Направление: 1 — увеличивать, 0 — уменьшать
DUTY_NUM_HSCHn29:20R/W0x000Число шагов изменения
DUTY_CYCLE_HSCHn19:10R/W0x000Изменять скважность раз в столько периодов
DUTY_SCALE_HSCHn9:0R/W0x000Шаг изменения скважности

LEDC_HSCHn_DUTY_R_REG — быстрый канал n: текущая скважность

8 копий, n = 0…7: смещение 0x0010 + n · 0x0014, после сброса 0x0000 0000. TRM: регистр 28.5.

ПолеБитыДоступСбросНазначение
DUTY_HSCHn_R24:0RO0x0000000Текущая скважность канала

LEDC_LSCHn_CONF0_REG — медленный канал n: таймер, выход, обновление

8 копий, n = 0…7: смещение 0x00A0 + n · 0x0014, после сброса 0x0000 0000. TRM: регистр 28.6.

1514131211109876543210
—PARA_UP_LSCHnIDLE_LV_LSCHnSIG_OUT_EN_LSCHnTIMER_SEL_LSCHn
ПолеБитыДоступСбросНазначение
PARA_UP_LSCHn4R/W0Запись 1 применяет HPOINT, DUTY и настройки плавности
IDLE_LV_LSCHn3R/W0Уровень выхода, когда канал остановлен
SIG_OUT_EN_LSCHn2R/W0Включить выход канала
TIMER_SEL_LSCHn1:0R/W0x0Номер медленного таймера 0…3

LEDC_LSCHn_HPOINT_REG — медленный канал n: точка установки выхода

8 копий, n = 0…7: смещение 0x00A4 + n · 0x0014, после сброса 0x0000 0000. TRM: регистр 28.7.

ПолеБитыДоступСбросНазначение
HPOINT_LSCHn19:0R/W0x00000Выход ставится в 1, когда счётчик таймера равен этому значению

LEDC_LSCHn_DUTY_REG — медленный канал n: скважность

8 копий, n = 0…7: смещение 0x00A8 + n · 0x0014, после сброса 0x0000 0000. TRM: регистр 28.8.

ПолеБитыДоступСбросНазначение
DUTY_LSCHn24:0R/W0x0000000Скважность в тактах счётчика, младшие 4 бита — дробь

LEDC_LSCHn_CONF1_REG — медленный канал n: плавное изменение скважности

8 копий, n = 0…7: смещение 0x00AC + n · 0x0014, после сброса 0x4000 0000. TRM: регистр 28.9.

31302928272625242322212019181716
DUTY_START_LSCHnDUTY_INC_LSCHnDUTY_NUM_LSCHnDUTY_CYCLE_LSCHn
1514131211109876543210
DUTY_CYCLE_LSCHnDUTY_SCALE_LSCHn
ПолеБитыДоступСбросНазначение
DUTY_START_LSCHn31R/W0Запись 1 запускает применение скважности или плавное изменение
DUTY_INC_LSCHn30R/W1Направление: 1 — увеличивать, 0 — уменьшать
DUTY_NUM_LSCHn29:20R/W0x000Число шагов изменения
DUTY_CYCLE_LSCHn19:10R/W0x000Изменять скважность раз в столько периодов
DUTY_SCALE_LSCHn9:0R/W0x000Шаг изменения скважности

LEDC_LSCHn_DUTY_R_REG — медленный канал n: текущая скважность

8 копий, n = 0…7: смещение 0x00B0 + n · 0x0014, после сброса 0x0000 0000. TRM: регистр 28.10.

ПолеБитыДоступСбросНазначение
DUTY_LSCHn_R24:0RO0x0000000Текущая скважность канала

LEDC_HSTIMERn_CONF_REG — быстрый таймер n: делитель, разрядность, такт

4 копии, n = 0…3: смещение 0x0140 + n · 0x0008, после сброса 0x0100 0000. TRM: регистр 28.11.

31302928272625242322212019181716
—TICK_SEL_HSTIMERnHSTIMERn_RSTHSTIMERn_PAUSECLK_DIV_NUM_HSTIMERn
1514131211109876543210
CLK_DIV_NUM_HSTIMERnHSTIMERn_DUTY_RES
ПолеБитыДоступСбросНазначение
TICK_SEL_HSTIMERn25R/W0Такт: 1 — APB_CLK, 0 — REF_TICK
HSTIMERn_RST24R/W1Сбросить счётчик и держать в нуле
HSTIMERn_PAUSE23R/W0Остановить счётчик
CLK_DIV_NUM_HSTIMERn22:5R/W0x00000Делитель: 10 бит целой части и 8 бит дроби
HSTIMERn_DUTY_RES4:0R/W0x00Разрядность счётчика 1…20 бит

LEDC_HSTIMERn_VALUE_REG — быстрый таймер n: значение счётчика

4 копии, n = 0…3: смещение 0x0144 + n · 0x0008, после сброса 0x0000 0000. TRM: регистр 28.12.

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

LEDC_LSTIMERn_CONF_REG — медленный таймер n: делитель, разрядность, такт

4 копии, n = 0…3: смещение 0x0160 + n · 0x0008, после сброса 0x0100 0000. TRM: регистр 28.13.

31302928272625242322212019181716
—LSTIMERn_PARA_UPTICK_SEL_LSTIMERnLSTIMERn_RSTLSTIMERn_PAUSECLK_DIV_NUM_LSTIMERn
1514131211109876543210
CLK_DIV_NUM_LSTIMERnLSTIMERn_DUTY_RES
ПолеБитыДоступСбросНазначение
LSTIMERn_PARA_UP26R/W0Запись 1 применяет делитель и разрядность
TICK_SEL_LSTIMERn25R/W0Такт: 1 — SLOW_CLK (по APB_CLK_SEL), 0 — REF_TICK
LSTIMERn_RST24R/W1Сбросить счётчик и держать в нуле
LSTIMERn_PAUSE23R/W0Остановить счётчик
CLK_DIV_NUM_LSTIMERn22:5R/W0x00000Делитель: 10 бит целой части и 8 бит дроби
LSTIMERn_DUTY_RES4:0R/W0x00Разрядность счётчика 1…20 бит

LEDC_LSTIMERn_VALUE_REG — медленный таймер n: значение счётчика

4 копии, n = 0…3: смещение 0x0164 + n · 0x0008, после сброса 0x0000 0000. TRM: регистр 28.14.

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

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

Смещение 0x0180, адрес 0x3FF5 9180, после сброса 0x0000 0000. TRM: регистр 28.15.

ПолеБитыДоступСбросНазначение
DUTY_CHNG_END_LSCH7_INT_RAW23RO0Медленный канал 7 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH6_INT_RAW22RO0Медленный канал 6 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH5_INT_RAW21RO0Медленный канал 5 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH4_INT_RAW20RO0Медленный канал 4 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH3_INT_RAW19RO0Медленный канал 3 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH2_INT_RAW18RO0Медленный канал 2 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH1_INT_RAW17RO0Медленный канал 1 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH0_INT_RAW16RO0Медленный канал 0 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH7_INT_RAW15RO0Быстрый канал 7 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH6_INT_RAW14RO0Быстрый канал 6 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH5_INT_RAW13RO0Быстрый канал 5 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH4_INT_RAW12RO0Быстрый канал 4 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH3_INT_RAW11RO0Быстрый канал 3 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH2_INT_RAW10RO0Быстрый канал 2 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH1_INT_RAW9RO0Быстрый канал 1 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH0_INT_RAW8RO0Быстрый канал 0 закончил плавное изменение скважности
LSTIMER3_OVF_INT_RAW7RO0Переполнение медленного таймера 3
LSTIMER2_OVF_INT_RAW6RO0Переполнение медленного таймера 2
LSTIMER1_OVF_INT_RAW5RO0Переполнение медленного таймера 1
LSTIMER0_OVF_INT_RAW4RO0Переполнение медленного таймера 0
HSTIMER3_OVF_INT_RAW3RO0Переполнение быстрого таймера 3
HSTIMER2_OVF_INT_RAW2RO0Переполнение быстрого таймера 2
HSTIMER1_OVF_INT_RAW1RO0Переполнение быстрого таймера 1
HSTIMER0_OVF_INT_RAW0RO0Переполнение быстрого таймера 0

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

Смещение 0x0184, адрес 0x3FF5 9184, после сброса 0x0000 0000. TRM: регистр 28.16.

ПолеБитыДоступСбросНазначение
DUTY_CHNG_END_LSCH7_INT_ST23RO0Медленный канал 7 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH6_INT_ST22RO0Медленный канал 6 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH5_INT_ST21RO0Медленный канал 5 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH4_INT_ST20RO0Медленный канал 4 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH3_INT_ST19RO0Медленный канал 3 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH2_INT_ST18RO0Медленный канал 2 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH1_INT_ST17RO0Медленный канал 1 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH0_INT_ST16RO0Медленный канал 0 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH7_INT_ST15RO0Быстрый канал 7 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH6_INT_ST14RO0Быстрый канал 6 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH5_INT_ST13RO0Быстрый канал 5 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH4_INT_ST12RO0Быстрый канал 4 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH3_INT_ST11RO0Быстрый канал 3 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH2_INT_ST10RO0Быстрый канал 2 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH1_INT_ST9RO0Быстрый канал 1 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH0_INT_ST8RO0Быстрый канал 0 закончил плавное изменение скважности
LSTIMER3_OVF_INT_ST7RO0Переполнение медленного таймера 3
LSTIMER2_OVF_INT_ST6RO0Переполнение медленного таймера 2
LSTIMER1_OVF_INT_ST5RO0Переполнение медленного таймера 1
LSTIMER0_OVF_INT_ST4RO0Переполнение медленного таймера 0
HSTIMER3_OVF_INT_ST3RO0Переполнение быстрого таймера 3
HSTIMER2_OVF_INT_ST2RO0Переполнение быстрого таймера 2
HSTIMER1_OVF_INT_ST1RO0Переполнение быстрого таймера 1
HSTIMER0_OVF_INT_ST0RO0Переполнение быстрого таймера 0

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

Смещение 0x0188, адрес 0x3FF5 9188, после сброса 0x0000 0000. TRM: регистр 28.17.

ПолеБитыДоступСбросНазначение
DUTY_CHNG_END_LSCH7_INT_ENA23R/W0Медленный канал 7 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH6_INT_ENA22R/W0Медленный канал 6 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH5_INT_ENA21R/W0Медленный канал 5 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH4_INT_ENA20R/W0Медленный канал 4 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH3_INT_ENA19R/W0Медленный канал 3 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH2_INT_ENA18R/W0Медленный канал 2 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH1_INT_ENA17R/W0Медленный канал 1 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH0_INT_ENA16R/W0Медленный канал 0 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH7_INT_ENA15R/W0Быстрый канал 7 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH6_INT_ENA14R/W0Быстрый канал 6 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH5_INT_ENA13R/W0Быстрый канал 5 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH4_INT_ENA12R/W0Быстрый канал 4 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH3_INT_ENA11R/W0Быстрый канал 3 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH2_INT_ENA10R/W0Быстрый канал 2 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH1_INT_ENA9R/W0Быстрый канал 1 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH0_INT_ENA8R/W0Быстрый канал 0 закончил плавное изменение скважности
LSTIMER3_OVF_INT_ENA7R/W0Переполнение медленного таймера 3
LSTIMER2_OVF_INT_ENA6R/W0Переполнение медленного таймера 2
LSTIMER1_OVF_INT_ENA5R/W0Переполнение медленного таймера 1
LSTIMER0_OVF_INT_ENA4R/W0Переполнение медленного таймера 0
HSTIMER3_OVF_INT_ENA3R/W0Переполнение быстрого таймера 3
HSTIMER2_OVF_INT_ENA2R/W0Переполнение быстрого таймера 2
HSTIMER1_OVF_INT_ENA1R/W0Переполнение быстрого таймера 1
HSTIMER0_OVF_INT_ENA0R/W0Переполнение быстрого таймера 0

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

Смещение 0x018C, адрес 0x3FF5 918C, после сброса 0x0000 0000. TRM: регистр 28.18.

ПолеБитыДоступСбросНазначение
DUTY_CHNG_END_LSCH7_INT_CLR23WO0Медленный канал 7 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH6_INT_CLR22WO0Медленный канал 6 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH5_INT_CLR21WO0Медленный канал 5 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH4_INT_CLR20WO0Медленный канал 4 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH3_INT_CLR19WO0Медленный канал 3 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH2_INT_CLR18WO0Медленный канал 2 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH1_INT_CLR17WO0Медленный канал 1 закончил плавное изменение скважности
DUTY_CHNG_END_LSCH0_INT_CLR16WO0Медленный канал 0 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH7_INT_CLR15WO0Быстрый канал 7 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH6_INT_CLR14WO0Быстрый канал 6 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH5_INT_CLR13WO0Быстрый канал 5 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH4_INT_CLR12WO0Быстрый канал 4 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH3_INT_CLR11WO0Быстрый канал 3 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH2_INT_CLR10WO0Быстрый канал 2 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH1_INT_CLR9WO0Быстрый канал 1 закончил плавное изменение скважности
DUTY_CHNG_END_HSCH0_INT_CLR8WO0Быстрый канал 0 закончил плавное изменение скважности
LSTIMER3_OVF_INT_CLR7WO0Переполнение медленного таймера 3
LSTIMER2_OVF_INT_CLR6WO0Переполнение медленного таймера 2
LSTIMER1_OVF_INT_CLR5WO0Переполнение медленного таймера 1
LSTIMER0_OVF_INT_CLR4WO0Переполнение медленного таймера 0
HSTIMER3_OVF_INT_CLR3WO0Переполнение быстрого таймера 3
HSTIMER2_OVF_INT_CLR2WO0Переполнение быстрого таймера 2
HSTIMER1_OVF_INT_CLR1WO0Переполнение быстрого таймера 1
HSTIMER0_OVF_INT_CLR0WO0Переполнение быстрого таймера 0

LEDC_CONF_REG — источник медленного такта

Смещение 0x0190, адрес 0x3FF5 9190, после сброса 0x0000 0000. TRM: регистр 28.19.

ПолеБитыДоступСбросНазначение
APB_CLK_SEL0R/W0SLOW_CLK медленных таймеров: 1 — APB_CLK 80 МГц, 0 — RC-генератор 8 МГц

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

Чем быстрые каналы LEDC ESP32 отличаются от медленных?

Быстрые (high-speed) каналы обновляют скважность и делитель аппаратно в начале периода, без программного шага, но останавливаются в лёгком сне. Медленные (low-speed) обновляются только после записи 1 в бит PARA_UP канала или таймера и могут тактироваться от RC-генератора 8 МГц во сне. Регистры у обеих групп одинаковые по составу.

Какая максимальная частота ШИМ у ESP32?

Частота, умноженная на 2 в степени разрядности, не может превышать частоту такта таймера: от 80 МГц это 40 МГц при 1 бите, 312,5 кГц при 8 битах, 1,22 кГц при 16 битах и 76 Гц при 20 битах. Калькулятор LEDC подбирает делитель и разрядность для нужной частоты.

Источники

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

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

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

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