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

Регистры RMT ESP32-C3

Регистры RMT ESP32-C3: четыре канала (0 и 1 — передача, 2 и 3 — приём) с памятью по 48 символов, делитель такта, модуляция несущей, пороги для потоковой передачи, повторы, фильтр приёма и флаги прерываний.

RMT по адресу 0x6001 6000 передаёт и принимает последовательности импульсов: символ — 32-битное слово с двумя парами «уровень, длительность 15 бит». Так кодируют инфракрасные пульты (NEC), адресные светодиоды WS2812 и другие однопроводные протоколы.

Четыре канала делят память 192 слова: по умолчанию каждому достаётся блок из 48 слов, поле MEM_SIZE отдаёт каналу несколько блоков подряд. Такт канала — общий такт RMT_SCLK (поля SCLK_SEL и SCLK_DIV_* регистра RMT_SYS_CONF_REG), делённый на DIV_CNT. Изменённые настройки каналов передачи вступают в силу после записи 1 в CONF_UPDATE.

В TRM каналы передачи называются CHn (n = 0, 1), каналы приёма — CHm (m = 2, 3): регистры RMT_CHnCONF0_REG и RMT_CHmCONF0_REG имеют разные поля, хотя макросы ESP-IDF выглядят одинаково — RMT_CH0CONF0_REG и RMT_CH2CONF0_REG.

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

Пример на C

Канал 0: несущая 38 кГц, 33 % при RMT_SCLK 80 МГц (soc/rmt_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/rmt_reg.h"

REG_SET_FIELD(RMT_CH0CARRIER_DUTY_REG, RMT_CARRIER_HIGH_CH0, 698);   // 8,7 мкс
REG_SET_FIELD(RMT_CH0CARRIER_DUTY_REG, RMT_CARRIER_LOW_CH0, 1407);   // 17,6 мкс
REG_SET_BIT(RMT_CH0CONF0_REG, RMT_CARRIER_EN_CH0);                   // модуляция включена
REG_SET_BIT(RMT_CH0CONF0_REG, RMT_CONF_UPDATE_CH0);                  // применить

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

Регистр (ESP-IDF)СмещениеНазначениеПосле сброса
RMT_CHnDATA_REG0x0000 + n · 0x0004Канал n: доступ к памяти символов через FIFO0x0000 0000
RMT_CHnCONF0_REG0x0010 + n · 0x0004Канал передачи n: запуск, делитель, несущая, память0x0071 0200
RMT_CHnCONF0_REG0x0008 + n · 0x0008Канал приёма n: делитель, порог тишины, несущая0x30FF FF02
RMT_CHnCONF1_REG0x000C + n · 0x0008Канал приёма n: запуск, фильтр, владелец памяти0x0000 01E8
RMT_CHnSTATUS_REG0x0028 + n · 0x0004Канал передачи n: состояние и адреса памяти0x0000 0000
RMT_CHnSTATUS_REG0x0028 + n · 0x0004Канал приёма n: состояние и адреса памяти0x0000 0000
RMT_INT_RAW_REG0x0038Необработанные флаги прерываний0x0000 0000
RMT_INT_ST_REG0x003CФлаги прерываний после маски разрешения0x0000 0000
RMT_INT_ENA_REG0x0040Разрешение прерываний0x0000 0000
RMT_INT_CLR_REG0x0044Сброс флагов прерываний записью 10x0000 0000
RMT_CHnCARRIER_DUTY_REG0x0048 + n · 0x0004Канал передачи n: длительности уровней несущей0x0040 0040
RMT_CHn_RX_CARRIER_RM_REG0x0048 + n · 0x0004Канал приёма n: удаление несущей0x0000 0000
RMT_CHn_TX_LIM_REG0x0058 + n · 0x0004Канал передачи n: порог и число повторов0x0000 0080
RMT_CHn_RX_LIM_REG0x0058 + n · 0x0004Канал приёма n: порог прерывания0x0000 0080
RMT_SYS_CONF_REG0x0068Общий такт RMT и питание памяти0x0500 0010
RMT_TX_SIM_REG0x006CОдновременный запуск каналов передачи0x0000 0000
RMT_REF_CNT_RST_REG0x0070Сброс делителей каналов0x0000 0000
RMT_DATE_REG0x00CCВерсия блока: дата ревизии аппаратуры0x0200 6231

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

RMT_CHnDATA_REG — канал n: доступ к памяти символов через FIFO

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

ПолеБитыДоступСбросНазначение
CHnDATA31:0RO0x0000 0000Чтение и запись памяти канала по шине APB

RMT_CHnCONF0_REG — канал передачи n: запуск, делитель, несущая, память

2 копии, n = 0, 1: смещение 0x0010 + n · 0x0004, после сброса 0x0071 0200. TRM: регистр 33.3 (RMT_CHnCONF0_REG).

31302928272625242322212019181716
—CONF_UPDATE_CHn—CARRIER_OUT_LV_CHnCARRIER_EN_CHnCARRIER_EFF_EN_CHn—MEM_SIZE_CHn
1514131211109876543210
DIV_CNT_CHnTX_STOP_CHnIDLE_OUT_EN_CHnIDLE_OUT_LV_CHnMEM_TX_WRAP_EN_CHnTX_CONTI_MODE_CHnAPB_MEM_RST_CHnMEM_RD_RST_CHnTX_START_CHn
ПолеБитыДоступСбросНазначение
CONF_UPDATE_CHn24WT0Запись 1 применяет настройки канала
CARRIER_OUT_LV_CHn22R/W1Уровень, на котором модулируется несущая
CARRIER_EN_CHn21R/W1Модуляция несущей
CARRIER_EFF_EN_CHn20R/W1Модулировать только данные, не паузы
MEM_SIZE_CHn18:16R/W0x1Число блоков памяти по 48 слов
DIV_CNT_CHn15:8R/W0x02Делитель такта канала 1…255; 0 означает 256 (так пишет rmt_ll.h ESP-IDF)
TX_STOP_CHn7R/W/SC0Остановить передачу
IDLE_OUT_EN_CHn6R/W0Выдавать уровень покоя
IDLE_OUT_LV_CHn5R/W0Уровень выхода в покое
MEM_TX_WRAP_EN_CHn4R/W0Кольцевой режим памяти для длинных последовательностей
TX_CONTI_MODE_CHn3R/W0Повторять передачу по кругу
APB_MEM_RST_CHn2WT0Сброс адреса доступа по APB
MEM_RD_RST_CHn1WT0Сброс адреса чтения памяти
TX_START_CHn0WT0Запись 1 запускает передачу

RMT_CHnCONF0_REG — канал приёма n: делитель, порог тишины, несущая

2 копии, n = 2, 3: смещение 0x0008 + n · 0x0008, после сброса 0x30FF FF02. TRM: регистр 33.4 (RMT_CHmCONF0_REG).

31302928272625242322212019181716
—CARRIER_OUT_LV_CHnCARRIER_EN_CHn—MEM_SIZE_CHnIDLE_THRES_CHn
1514131211109876543210
IDLE_THRES_CHnDIV_CNT_CHn
ПолеБитыДоступСбросНазначение
CARRIER_OUT_LV_CHn29R/W1
CARRIER_EN_CHn28R/W1
MEM_SIZE_CHn25:23R/W0x1Число блоков памяти по 48 слов
IDLE_THRES_CHn22:8R/W0x7FFFТишина дольше стольких тактов — конец приёма
DIV_CNT_CHn7:0R/W0x02Делитель такта канала 1…255; 0 означает 256 (так пишет rmt_ll.h ESP-IDF)

RMT_CHnCONF1_REG — канал приёма n: запуск, фильтр, владелец памяти

2 копии, n = 2, 3: смещение 0x000C + n · 0x0008, после сброса 0x0000 01E8. TRM: регистр 33.5 (RMT_CHmCONF1_REG).

1514131211109876543210
CONF_UPDATE_CHn—MEM_RX_WRAP_EN_CHnRX_FILTER_THRES_CHnRX_FILTER_EN_CHnMEM_OWNER_CHnAPB_MEM_RST_CHnMEM_WR_RST_CHnRX_EN_CHn
ПолеБитыДоступСбросНазначение
CONF_UPDATE_CHn15WT0Запись 1 применяет настройки канала
MEM_RX_WRAP_EN_CHn13R/W0
RX_FILTER_THRES_CHn12:5R/W0x0FИмпульсы короче стольких тактов RMT_SCLK отбрасываются
RX_FILTER_EN_CHn4R/W0Фильтр коротких импульсов
MEM_OWNER_CHn3R/W1Владелец памяти: 1 — приёмник, 0 — программа
APB_MEM_RST_CHn2WT0
MEM_WR_RST_CHn1WT0
RX_EN_CHn0R/W0Включить приём

RMT_CHnSTATUS_REG — канал передачи n: состояние и адреса памяти

2 копии, n = 0, 1: смещение 0x0028 + n · 0x0004, после сброса 0x0000 0000. TRM: регистр 33.8 (RMT_CHnSTATUS_REG).

31302928272625242322212019181716
APB_MEM_RADDR_CHnAPB_MEM_WR_ERR_CHnMEM_EMPTY_CHnAPB_MEM_RD_ERR_CHnAPB_MEM_WADDR_CHn
1514131211109876543210
APB_MEM_WADDR_CHnSTATE_CHnMEM_RADDR_EX_CHn
ПолеБитыДоступСброс
APB_MEM_RADDR_CHn31:24RO0x00
APB_MEM_WR_ERR_CHn23RO0
MEM_EMPTY_CHn22RO0
APB_MEM_RD_ERR_CHn21RO0
APB_MEM_WADDR_CHn20:12RO0x000
STATE_CHn11:9RO0x0
MEM_RADDR_EX_CHn8:0RO0x000

RMT_CHnSTATUS_REG — канал приёма n: состояние и адреса памяти

2 копии, n = 2, 3: смещение 0x0028 + n · 0x0004, после сброса 0x0000 0000. TRM: регистр 33.9 (RMT_CHmSTATUS_REG).

31302928272625242322212019181716
—APB_MEM_RD_ERR_CHnMEM_FULL_CHnMEM_OWNER_ERR_CHnSTATE_CHn—APB_MEM_RADDR_CHn
1514131211109876543210
APB_MEM_RADDR_CHn—MEM_WADDR_EX_CHn
ПолеБитыДоступСброс
APB_MEM_RD_ERR_CHn27RO0
MEM_FULL_CHn26RO0
MEM_OWNER_ERR_CHn25RO0
STATE_CHn24:22RO0x0
APB_MEM_RADDR_CHn20:12RO0x000
MEM_WADDR_EX_CHn8:0RO0x000

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

Смещение 0x0038, адрес 0x6001 6038, после сброса 0x0000 0000. TRM: регистр 33.10.

1514131211109876543210
—CH1_TX_LOOP_INT_RAWCH0_TX_LOOP_INT_RAWCH3_RX_THR_EVENT_INT_RAWCH2_RX_THR_EVENT_INT_RAWCH1_TX_THR_EVENT_INT_RAWCH0_TX_THR_EVENT_INT_RAWCH3_ERR_INT_RAWCH2_ERR_INT_RAWCH1_ERR_INT_RAWCH0_ERR_INT_RAWCH3_RX_END_INT_RAWCH2_RX_END_INT_RAWCH1_TX_END_INT_RAWCH0_TX_END_INT_RAW
ПолеБитыДоступСбросНазначение
CH1_TX_LOOP_INT_RAW13R/WTC/SS0Канал 1 выполнил заданное число циклов передачи
CH0_TX_LOOP_INT_RAW12R/WTC/SS0Канал 0 выполнил заданное число циклов передачи
CH3_RX_THR_EVENT_INT_RAW11R/WTC/SS0Канал 3 принял RX_LIM символов — пора забрать данные
CH2_RX_THR_EVENT_INT_RAW10R/WTC/SS0Канал 2 принял RX_LIM символов — пора забрать данные
CH1_TX_THR_EVENT_INT_RAW9R/WTC/SS0Канал 1 передал TX_LIM_CH1 символов — пора дописать память
CH0_TX_THR_EVENT_INT_RAW8R/WTC/SS0Канал 0 передал TX_LIM_CH0 символов — пора дописать память
CH3_ERR_INT_RAW7R/WTC/SS0Канал 3: ошибка доступа к памяти RMT
CH2_ERR_INT_RAW6R/WTC/SS0Канал 2: ошибка доступа к памяти RMT
CH1_ERR_INT_RAW5R/WTC/SS0Канал 1: ошибка доступа к памяти RMT
CH0_ERR_INT_RAW4R/WTC/SS0Канал 0: ошибка доступа к памяти RMT
CH3_RX_END_INT_RAW3R/WTC/SS0Канал 3 закончил приём
CH2_RX_END_INT_RAW2R/WTC/SS0Канал 2 закончил приём
CH1_TX_END_INT_RAW1R/WTC/SS0Канал 1 закончил передачу
CH0_TX_END_INT_RAW0R/WTC/SS0Канал 0 закончил передачу

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

Смещение 0x003C, адрес 0x6001 603C, после сброса 0x0000 0000. TRM: регистр 33.11.

1514131211109876543210
—CH1_TX_LOOP_INT_STCH0_TX_LOOP_INT_STCH3_RX_THR_EVENT_INT_STCH2_RX_THR_EVENT_INT_STCH1_TX_THR_EVENT_INT_STCH0_TX_THR_EVENT_INT_STCH3_ERR_INT_STCH2_ERR_INT_STCH1_ERR_INT_STCH0_ERR_INT_STCH3_RX_END_INT_STCH2_RX_END_INT_STCH1_TX_END_INT_STCH0_TX_END_INT_ST
ПолеБитыДоступСбросНазначение
CH1_TX_LOOP_INT_ST13RO0Канал 1 выполнил заданное число циклов передачи
CH0_TX_LOOP_INT_ST12RO0Канал 0 выполнил заданное число циклов передачи
CH3_RX_THR_EVENT_INT_ST11RO0Канал 3 принял RX_LIM символов — пора забрать данные
CH2_RX_THR_EVENT_INT_ST10RO0Канал 2 принял RX_LIM символов — пора забрать данные
CH1_TX_THR_EVENT_INT_ST9RO0Канал 1 передал TX_LIM_CH1 символов — пора дописать память
CH0_TX_THR_EVENT_INT_ST8RO0Канал 0 передал TX_LIM_CH0 символов — пора дописать память
CH3_ERR_INT_ST7RO0Канал 3: ошибка доступа к памяти RMT
CH2_ERR_INT_ST6RO0Канал 2: ошибка доступа к памяти RMT
CH1_ERR_INT_ST5RO0Канал 1: ошибка доступа к памяти RMT
CH0_ERR_INT_ST4RO0Канал 0: ошибка доступа к памяти RMT
CH3_RX_END_INT_ST3RO0Канал 3 закончил приём
CH2_RX_END_INT_ST2RO0Канал 2 закончил приём
CH1_TX_END_INT_ST1RO0Канал 1 закончил передачу
CH0_TX_END_INT_ST0RO0Канал 0 закончил передачу

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

Смещение 0x0040, адрес 0x6001 6040, после сброса 0x0000 0000. TRM: регистр 33.12.

1514131211109876543210
—CH1_TX_LOOP_INT_ENACH0_TX_LOOP_INT_ENACH3_RX_THR_EVENT_INT_ENACH2_RX_THR_EVENT_INT_ENACH1_TX_THR_EVENT_INT_ENACH0_TX_THR_EVENT_INT_ENACH3_ERR_INT_ENACH2_ERR_INT_ENACH1_ERR_INT_ENACH0_ERR_INT_ENACH3_RX_END_INT_ENACH2_RX_END_INT_ENACH1_TX_END_INT_ENACH0_TX_END_INT_ENA
ПолеБитыДоступСбросНазначение
CH1_TX_LOOP_INT_ENA13R/W0Канал 1 выполнил заданное число циклов передачи
CH0_TX_LOOP_INT_ENA12R/W0Канал 0 выполнил заданное число циклов передачи
CH3_RX_THR_EVENT_INT_ENA11R/W0Канал 3 принял RX_LIM символов — пора забрать данные
CH2_RX_THR_EVENT_INT_ENA10R/W0Канал 2 принял RX_LIM символов — пора забрать данные
CH1_TX_THR_EVENT_INT_ENA9R/W0Канал 1 передал TX_LIM_CH1 символов — пора дописать память
CH0_TX_THR_EVENT_INT_ENA8R/W0Канал 0 передал TX_LIM_CH0 символов — пора дописать память
CH3_ERR_INT_ENA7R/W0Канал 3: ошибка доступа к памяти RMT
CH2_ERR_INT_ENA6R/W0Канал 2: ошибка доступа к памяти RMT
CH1_ERR_INT_ENA5R/W0Канал 1: ошибка доступа к памяти RMT
CH0_ERR_INT_ENA4R/W0Канал 0: ошибка доступа к памяти RMT
CH3_RX_END_INT_ENA3R/W0Канал 3 закончил приём
CH2_RX_END_INT_ENA2R/W0Канал 2 закончил приём
CH1_TX_END_INT_ENA1R/W0Канал 1 закончил передачу
CH0_TX_END_INT_ENA0R/W0Канал 0 закончил передачу

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

Смещение 0x0044, адрес 0x6001 6044, после сброса 0x0000 0000. TRM: регистр 33.13.

1514131211109876543210
—CH1_TX_LOOP_INT_CLRCH0_TX_LOOP_INT_CLRCH3_RX_THR_EVENT_INT_CLRCH2_RX_THR_EVENT_INT_CLRCH1_TX_THR_EVENT_INT_CLRCH0_TX_THR_EVENT_INT_CLRCH3_ERR_INT_CLRCH2_ERR_INT_CLRCH1_ERR_INT_CLRCH0_ERR_INT_CLRCH3_RX_END_INT_CLRCH2_RX_END_INT_CLRCH1_TX_END_INT_CLRCH0_TX_END_INT_CLR
ПолеБитыДоступСбросНазначение
CH1_TX_LOOP_INT_CLR13WT0Канал 1 выполнил заданное число циклов передачи
CH0_TX_LOOP_INT_CLR12WT0Канал 0 выполнил заданное число циклов передачи
CH3_RX_THR_EVENT_INT_CLR11WT0Канал 3 принял RX_LIM символов — пора забрать данные
CH2_RX_THR_EVENT_INT_CLR10WT0Канал 2 принял RX_LIM символов — пора забрать данные
CH1_TX_THR_EVENT_INT_CLR9WT0Канал 1 передал TX_LIM_CH1 символов — пора дописать память
CH0_TX_THR_EVENT_INT_CLR8WT0Канал 0 передал TX_LIM_CH0 символов — пора дописать память
CH3_ERR_INT_CLR7WT0Канал 3: ошибка доступа к памяти RMT
CH2_ERR_INT_CLR6WT0Канал 2: ошибка доступа к памяти RMT
CH1_ERR_INT_CLR5WT0Канал 1: ошибка доступа к памяти RMT
CH0_ERR_INT_CLR4WT0Канал 0: ошибка доступа к памяти RMT
CH3_RX_END_INT_CLR3WT0Канал 3 закончил приём
CH2_RX_END_INT_CLR2WT0Канал 2 закончил приём
CH1_TX_END_INT_CLR1WT0Канал 1 закончил передачу
CH0_TX_END_INT_CLR0WT0Канал 0 закончил передачу

RMT_CHnCARRIER_DUTY_REG — канал передачи n: длительности уровней несущей

2 копии, n = 0, 1: смещение 0x0048 + n · 0x0004, после сброса 0x0040 0040. TRM: регистр 33.14.

31302928272625242322212019181716
CARRIER_HIGH_CHn
1514131211109876543210
CARRIER_LOW_CHn
ПолеБитыДоступСбросНазначение
CARRIER_HIGH_CHn31:16R/W0x0040Высокий уровень несущей в тактах RMT_SCLK: по TRM — CARRIER_HIGH + 1, драйвер ESP-IDF пишет число тактов без поправки, 0 — 65 536
CARRIER_LOW_CHn15:0R/W0x0040Низкий уровень несущей, счёт как у CARRIER_HIGH

RMT_CHn_RX_CARRIER_RM_REG — канал приёма n: удаление несущей

2 копии, n = 2, 3: смещение 0x0048 + n · 0x0004, после сброса 0x0000 0000. TRM: регистр 33.15.

31302928272625242322212019181716
CARRIER_HIGH_THRES_CHn
1514131211109876543210
CARRIER_LOW_THRES_CHn
ПолеБитыДоступСброс
CARRIER_HIGH_THRES_CHn31:16R/W0x0000
CARRIER_LOW_THRES_CHn15:0R/W0x0000

RMT_CHn_TX_LIM_REG — канал передачи n: порог и число повторов

2 копии, n = 0, 1: смещение 0x0058 + n · 0x0004, после сброса 0x0000 0080. TRM: регистр 33.16.

31302928272625242322212019181716
—LOOP_COUNT_RESET_CHnTX_LOOP_CNT_EN_CHnTX_LOOP_NUM_CHn
1514131211109876543210
TX_LOOP_NUM_CHnTX_LIM_CHn
ПолеБитыДоступСбросНазначение
LOOP_COUNT_RESET_CHn20WT0
TX_LOOP_CNT_EN_CHn19R/W0Считать повторы
TX_LOOP_NUM_CHn18:9R/W0x000Число повторов в режиме TX_CONTI_MODE
TX_LIM_CHn8:0R/W0x080Порог: после стольких символов — прерывание TX_THR_EVENT

RMT_CHn_RX_LIM_REG — канал приёма n: порог прерывания

2 копии, n = 2, 3: смещение 0x0058 + n · 0x0004, после сброса 0x0000 0080. TRM: регистр 33.18.

ПолеБитыДоступСброс
RX_LIM8:0R/W0x080

RMT_SYS_CONF_REG — общий такт RMT и питание памяти

Смещение 0x0068, адрес 0x6001 6068, после сброса 0x0500 0010. TRM: регистр 33.6.

31302928272625242322212019181716
CLK_EN—SCLK_ACTIVESCLK_SELSCLK_DIV_BSCLK_DIV_A
1514131211109876543210
SCLK_DIV_ASCLK_DIV_NUMMEM_FORCE_PUMEM_FORCE_PDMEM_CLK_FORCE_ONAPB_FIFO_MASK
ПолеБитыДоступСбросНазначение
CLK_EN31R/W0Тактирование регистров
SCLK_ACTIVE26R/W1Включить такт RMT_SCLK
SCLK_SEL25:24R/W0x1Источник: 1 — APB_CLK, 2 — RC_FAST_CLK, 3 — XTAL_CLK
SCLK_DIV_B23:18R/W0x00
SCLK_DIV_A17:12R/W0x00
SCLK_DIV_NUM11:4R/W0x01Целая часть делителя такта RMT_SCLK минус 1
MEM_FORCE_PU3R/W0
MEM_FORCE_PD2R/W0
MEM_CLK_FORCE_ON1R/W0
APB_FIFO_MASK0R/W01 — доступ к памяти напрямую, 0 — через FIFO CHnDATA

RMT_TX_SIM_REG — одновременный запуск каналов передачи

Смещение 0x006C, адрес 0x6001 606C, после сброса 0x0000 0000. TRM: регистр 33.17.

1514131211109876543210
—TX_SIM_ENTX_SIM_CH1TX_SIM_CH0
ПолеБитыДоступСброс
TX_SIM_EN2R/W0
TX_SIM_CH11R/W0
TX_SIM_CH00R/W0

RMT_REF_CNT_RST_REG — сброс делителей каналов

Смещение 0x0070, адрес 0x6001 6070, после сброса 0x0000 0000. TRM: регистр 33.7.

1514131211109876543210
—REF_CNT_RST_CH3REF_CNT_RST_CH2REF_CNT_RST_CH1REF_CNT_RST_CH0
ПолеБитыДоступСброс
REF_CNT_RST_CH33WT0
REF_CNT_RST_CH22WT0
REF_CNT_RST_CH11WT0
REF_CNT_RST_CH00WT0

RMT_DATE_REG — версия блока: дата ревизии аппаратуры

Смещение 0x00CC, адрес 0x6001 60CC, после сброса 0x0200 6231. TRM: регистр 33.19.

ПолеБитыДоступСброс
RMT_DATE27:0R/W0x2006231

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

Сколько каналов RMT у ESP32-C3?

Четыре: каналы 0 и 1 только передают, каналы 2 и 3 только принимают. У каждого блок памяти из 48 слов по 32 бита, то есть 96 пар «уровень — длительность»; длинные последовательности передают порциями по прерыванию TX_THR_EVENT.

Как задать несущую 38 кГц для ИК-пульта на RMT ESP32-C3?

В регистре RMT_CHnCARRIER_DUTY_REG записать длительности высокого и низкого уровней несущей в тактах RMT_SCLK — при 80 МГц около 698 и 1407 тактов дают 38 кГц и скважность 33 % — и включить CARRIER_EN_CHn в RMT_CHnCONF0_REG. Расчёт для любого такта — в калькуляторе RMT.

Источники

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

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

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

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