Регистры UART ESP32-S3
Регистры UART ESP32-S3: скорость обмена и источник такта, длина слова, чётность и стоп-биты, общая память FIFO на 1024 байта, аппаратное и программное управление потоком, RS-485, IrDA и флаги прерываний — для трёх контроллеров UART0…UART2.
Содержание
- Пример на C
- Регистры блока
- UART_FIFO_REG
- UART_INT_RAW_REG
- UART_INT_ST_REG
- UART_INT_ENA_REG
- UART_INT_CLR_REG
- UART_CLKDIV_REG
- UART_RX_FILT_REG
- UART_STATUS_REG
- UART_CONF0_REG
- UART_CONF1_REG
- UART_LOWPULSE_REG
- UART_HIGHPULSE_REG
- UART_RXD_CNT_REG
- UART_FLOW_CONF_REG
- UART_SLEEP_CONF_REG
- UART_SWFC_CONF0_REG
- UART_SWFC_CONF1_REG
- UART_TXBRK_CONF_REG
- UART_IDLE_CONF_REG
- UART_RS485_CONF_REG
- UART_AT_CMD_PRECNT_REG
- UART_AT_CMD_POSTCNT_REG
- UART_AT_CMD_GAPTOUT_REG
- UART_AT_CMD_CHAR_REG
- UART_MEM_CONF_REG
- UART_MEM_TX_STATUS_REG
- UART_MEM_RX_STATUS_REG
- UART_FSM_STATUS_REG
- UART_POSPULSE_REG
- UART_NEGPULSE_REG
- UART_CLK_CONF_REG
- UART_DATE_REG
- UART_ID_REG
У ESP32-S3 три одинаковых контроллера UART: UART0 по адресу 0x6000 0000, UART1 — 0x6001 0000, UART2 — 0x6002 E000; макросы ESP-IDF принимают номер контроллера: UART_CONF0_REG(2). FIFO передатчиков и приёмников всех трёх лежат в общей памяти 1024 байта из восьми блоков по 128 байт; по умолчанию каждому FIFO достаётся блок, поля TX_SIZE и RX_SIZE регистра UART_MEM_CONF_REG его расширяют — за счёт соседних FIFO.
Скорость: baud = f_core / (CLKDIV + CLKDIV_FRAG / 16), где f_core — такт ядра UART. Его источник выбирает поле SCLK_SEL регистра UART_CLK_CONF_REG (1 — APB_CLK 80 МГц, 2 — RC_FAST_CLK, 3 — XTAL_CLK 40 МГц, после сброса 3), затем такт делится. TRM (раздел 26.4.1) записывает этот делитель как SCLK_DIV_NUM + SCLK_DIV_B / SCLK_DIV_A, а драйвер ESP-IDF (uart_ll.h) пишет в SCLK_DIV_NUM делитель минус 1 и при расчёте скорости прибавляет 1. При такте 80 МГц UART работает до 5 Мбод.
Делитель скорости, формат кадра, RS-485 и программное управление потоком — синхронные регистры (таблица 26.5-1 TRM): их значения попадают в домен такта ядра UART только при синхронизации. Порядок по TRM: сбросить UPDATE_CTRL регистра UART_ID_REG (после сброса там 1 — автоматическая синхронизация), дождаться нуля в REG_UPDATE, записать настройки и установить REG_UPDATE. В ESP-IDF маски этих битов называются UART_HIGH_SPEED и UART_REG_UPDATE.
| Экземпляр | Базовый адрес |
|---|---|
| UART0 | 0x6000 0000 |
| UART1 | 0x6001 0000 |
| UART2 | 0x6002 E000 |
Пример на C
UART1: 115 200 бод от APB_CLK и передача байта (soc/uart_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/uart_reg.h"
REG_CLR_BIT(UART_ID_REG(1), UART_HIGH_SPEED); // UPDATE_CTRL = 0: синхронизация по REG_UPDATE
while (REG_GET_BIT(UART_ID_REG(1), UART_REG_UPDATE)) {} // прошлая синхронизация закончена
REG_SET_FIELD(UART_CLK_CONF_REG(1), UART_SCLK_SEL, 1); // такт ядра — APB_CLK 80 МГц
REG_SET_FIELD(UART_CLK_CONF_REG(1), UART_SCLK_DIV_NUM, 0); // без деления (ESP-IDF пишет делитель − 1)
REG_SET_FIELD(UART_CLKDIV_REG(1), UART_CLKDIV, 694); // 80 МГц / 694,4375 = 115 200
REG_SET_FIELD(UART_CLKDIV_REG(1), UART_CLKDIV_FRAG, 7);
REG_SET_FIELD(UART_CONF0_REG(1), UART_BIT_NUM, 3); // 8 бит данных
REG_CLR_BIT(UART_CONF0_REG(1), UART_PARITY_EN); // без чётности
REG_SET_FIELD(UART_CONF0_REG(1), UART_STOP_BIT_NUM, 1); // 1 стоп-бит
REG_SET_BIT(UART_ID_REG(1), UART_REG_UPDATE); // передать настройки ядру UART
while (REG_GET_FIELD(UART_STATUS_REG(1), UART_TXFIFO_CNT) >= 128) {} // FIFO полон
REG_WRITE(UART_FIFO_REG(1), 'A');Регистры блока
| Регистр (ESP-IDF) | Смещение | Назначение | После сброса |
|---|---|---|---|
| UART_FIFO_REG(i) | 0x0000 | Чтение байта из RX FIFO и запись в TX FIFO | 0x0000 0000 |
| UART_INT_RAW_REG(i) | 0x0004 | Необработанные флаги прерываний | 0x0000 0002 |
| UART_INT_ST_REG(i) | 0x0008 | Флаги прерываний после маски разрешения | 0x0000 0000 |
| UART_INT_ENA_REG(i) | 0x000C | Разрешение прерываний | 0x0000 0000 |
| UART_INT_CLR_REG(i) | 0x0010 | Сброс флагов прерываний записью 1 | 0x0000 0000 |
| UART_CLKDIV_REG(i) | 0x0014 | Делитель скорости обмена | 0x0000 02B6 |
| UART_RX_FILT_REG(i) | 0x0018 | Фильтр помех на входе RXD | 0x0000 0008 |
| UART_STATUS_REG(i) | 0x001C | Заполнение FIFO и уровни линий | 0xE000 C000 |
| UART_CONF0_REG(i) | 0x0020 | Формат кадра, инверсия линий, сброс FIFO, IrDA | 0x1000 001C |
| UART_CONF1_REG(i) | 0x0024 | Пороги FIFO и таймаут приёма | 0x0001 8060 |
| UART_LOWPULSE_REG(i) | 0x0028 | Автоопределение скорости: самый короткий низкий импульс | 0x0000 0FFF |
| UART_HIGHPULSE_REG(i) | 0x002C | Автоопределение скорости: самый короткий высокий импульс | 0x0000 0FFF |
| UART_RXD_CNT_REG(i) | 0x0030 | Автоопределение скорости: число перепадов на RXD | 0x0000 0000 |
| UART_FLOW_CONF_REG(i) | 0x0034 | Программное управление потоком XON/XOFF | 0x0000 0000 |
| UART_SLEEP_CONF_REG(i) | 0x0038 | Порог пробуждения из лёгкого сна по RXD | 0x0000 00F0 |
| UART_SWFC_CONF0_REG(i) | 0x003C | Символ XOFF и порог его отправки | 0x0000 4CE0 |
| UART_SWFC_CONF1_REG(i) | 0x0040 | Символ XON и порог его отправки | 0x0000 4400 |
| UART_TXBRK_CONF_REG(i) | 0x0044 | Длина сигнала break после передачи | 0x0000 000A |
| UART_IDLE_CONF_REG(i) | 0x0048 | Пауза между кадрами и порог конца кадра | 0x0004 0100 |
| UART_RS485_CONF_REG(i) | 0x004C | Режим RS-485 и задержки | 0x0000 0000 |
| UART_AT_CMD_PRECNT_REG(i) | 0x0050 | Последовательность AT_CMD: пауза перед ней | 0x0000 0901 |
| UART_AT_CMD_POSTCNT_REG(i) | 0x0054 | Последовательность AT_CMD: пауза после неё | 0x0000 0901 |
| UART_AT_CMD_GAPTOUT_REG(i) | 0x0058 | Последовательность AT_CMD: наибольший промежуток между символами | 0x0000 000B |
| UART_AT_CMD_CHAR_REG(i) | 0x005C | Последовательность AT_CMD: символ и их число | 0x0000 032B |
| UART_MEM_CONF_REG(i) | 0x0060 | Размеры FIFO, порог управления потоком, таймаут, питание памяти | 0x0014 0012 |
| UART_MEM_TX_STATUS_REG(i) | 0x0064 | Адреса записи и чтения TX FIFO | 0x0000 0000 |
| UART_MEM_RX_STATUS_REG(i) | 0x0068 | Адреса записи и чтения RX FIFO | 0x0010 0200 |
| UART_FSM_STATUS_REG(i) | 0x006C | Состояния автоматов приёмника и передатчика | 0x0000 0000 |
| UART_POSPULSE_REG(i) | 0x0070 | Автоопределение скорости: самый короткий период по фронтам | 0x0000 0FFF |
| UART_NEGPULSE_REG(i) | 0x0074 | Автоопределение скорости: самый короткий период по спадам | 0x0000 0FFF |
| UART_CLK_CONF_REG(i) | 0x0078 | Источник и делитель такта ядра UART, сбросы | 0x0370 1000 |
| UART_DATE_REG(i) | 0x007C | Версия блока: дата ревизии аппаратуры | 0x0200 8270 |
| UART_ID_REG(i) | 0x0080 | Синхронизация настроек с ядром UART и номер версии | 0x4000 0500 |
Доступ — обозначения TRM: R/W — чтение и запись, RO — только чтение, WO — только запись, WT — запись 1 запускает действие, SS и SC — бит ставится и сбрасывается аппаратно, WTC — сбрасывается записью 1.
UART_FIFO_REG(i) — чтение байта из RX FIFO и запись в TX FIFO
Смещение 0x0000, после сброса 0x0000 0000. TRM: регистр 26.1.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| RXFIFO_RD_BYTE | 7:0 | RO | 0x00 | Чтение забирает байт из RX FIFO, запись кладёт байт в TX FIFO |
UART_INT_RAW_REG(i) — необработанные флаги прерываний
Смещение 0x0004, после сброса 0x0000 0002. TRM: регистр 26.3.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WAKEUP_INT_RAW | 19 | R/WTC/SS | 0 | В лёгком сне на RXD не меньше ACTIVE_THRESHOLD + 3 фронтов (в описании флага TRM — «больше») |
| AT_CMD_CHAR_DET_INT_RAW | 18 | R/WTC/SS | 0 | Обнаружена последовательность символов AT_CMD_CHAR |
| RS485_CLASH_INT_RAW | 17 | R/WTC/SS | 0 | RS-485: коллизия передатчика и приёмника |
| RS485_FRM_ERR_INT_RAW | 16 | R/WTC/SS | 0 | RS-485: ошибка кадра в эхе собственной передачи |
| RS485_PARITY_ERR_INT_RAW | 15 | R/WTC/SS | 0 | RS-485: ошибка чётности в эхе собственной передачи |
| TX_DONE_INT_RAW | 14 | R/WTC/SS | 0 | Передатчик отправил все данные из FIFO |
| TX_BRK_IDLE_DONE_INT_RAW | 13 | R/WTC/SS | 0 | После последнего байта выдержана пауза TX_IDLE_NUM |
| TX_BRK_DONE_INT_RAW | 12 | R/WTC/SS | 0 | После передачи всех данных отправлены нули break |
| GLITCH_DET_INT_RAW | 11 | R/WTC/SS | 0 | Помеха посреди стартового бита |
| SW_XOFF_INT_RAW | 10 | R/WTC/SS | 0 | Принят символ XOFF при включённом программном управлении потоком |
| SW_XON_INT_RAW | 9 | R/WTC/SS | 0 | Принят символ XON при включённом программном управлении потоком |
| RXFIFO_TOUT_INT_RAW | 8 | R/WTC/SS | 0 | Приём байта длится дольше RX_TOUT_THRHD битовых интервалов |
| BRK_DET_INT_RAW | 7 | R/WTC/SS | 0 | После стоп-бита принят 0 — сигнал break |
| CTS_CHG_INT_RAW | 6 | R/WTC/SS | 0 | Изменился уровень на входе CTS |
| DSR_CHG_INT_RAW | 5 | R/WTC/SS | 0 | Изменился уровень на входе DSR |
| RXFIFO_OVF_INT_RAW | 4 | R/WTC/SS | 0 | Принято больше данных, чем вмещает RX FIFO |
| FRM_ERR_INT_RAW | 3 | R/WTC/SS | 0 | Ошибка кадра |
| PARITY_ERR_INT_RAW | 2 | R/WTC/SS | 0 | Принят байт с ошибкой чётности |
| TXFIFO_EMPTY_INT_RAW | 1 | R/WTC/SS | 1 | В TX FIFO меньше байтов, чем задано в TXFIFO_EMPTY_THRHD |
| RXFIFO_FULL_INT_RAW | 0 | R/WTC/SS | 0 | Принято больше байтов, чем задано в RXFIFO_FULL_THRHD |
UART_INT_ST_REG(i) — флаги прерываний после маски разрешения
Смещение 0x0008, после сброса 0x0000 0000. TRM: регистр 26.4.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WAKEUP_INT_ST | 19 | RO | 0 | В лёгком сне на RXD не меньше ACTIVE_THRESHOLD + 3 фронтов (в описании флага TRM — «больше») |
| AT_CMD_CHAR_DET_INT_ST | 18 | RO | 0 | Обнаружена последовательность символов AT_CMD_CHAR |
| RS485_CLASH_INT_ST | 17 | RO | 0 | RS-485: коллизия передатчика и приёмника |
| RS485_FRM_ERR_INT_ST | 16 | RO | 0 | RS-485: ошибка кадра в эхе собственной передачи |
| RS485_PARITY_ERR_INT_ST | 15 | RO | 0 | RS-485: ошибка чётности в эхе собственной передачи |
| TX_DONE_INT_ST | 14 | RO | 0 | Передатчик отправил все данные из FIFO |
| TX_BRK_IDLE_DONE_INT_ST | 13 | RO | 0 | После последнего байта выдержана пауза TX_IDLE_NUM |
| TX_BRK_DONE_INT_ST | 12 | RO | 0 | После передачи всех данных отправлены нули break |
| GLITCH_DET_INT_ST | 11 | RO | 0 | Помеха посреди стартового бита |
| SW_XOFF_INT_ST | 10 | RO | 0 | Принят символ XOFF при включённом программном управлении потоком |
| SW_XON_INT_ST | 9 | RO | 0 | Принят символ XON при включённом программном управлении потоком |
| RXFIFO_TOUT_INT_ST | 8 | RO | 0 | Приём байта длится дольше RX_TOUT_THRHD битовых интервалов |
| BRK_DET_INT_ST | 7 | RO | 0 | После стоп-бита принят 0 — сигнал break |
| CTS_CHG_INT_ST | 6 | RO | 0 | Изменился уровень на входе CTS |
| DSR_CHG_INT_ST | 5 | RO | 0 | Изменился уровень на входе DSR |
| RXFIFO_OVF_INT_ST | 4 | RO | 0 | Принято больше данных, чем вмещает RX FIFO |
| FRM_ERR_INT_ST | 3 | RO | 0 | Ошибка кадра |
| PARITY_ERR_INT_ST | 2 | RO | 0 | Принят байт с ошибкой чётности |
| TXFIFO_EMPTY_INT_ST | 1 | RO | 0 | В TX FIFO меньше байтов, чем задано в TXFIFO_EMPTY_THRHD |
| RXFIFO_FULL_INT_ST | 0 | RO | 0 | Принято больше байтов, чем задано в RXFIFO_FULL_THRHD |
UART_INT_ENA_REG(i) — разрешение прерываний
Смещение 0x000C, после сброса 0x0000 0000. TRM: регистр 26.5.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WAKEUP_INT_ENA | 19 | R/W | 0 | В лёгком сне на RXD не меньше ACTIVE_THRESHOLD + 3 фронтов (в описании флага TRM — «больше») |
| AT_CMD_CHAR_DET_INT_ENA | 18 | R/W | 0 | Обнаружена последовательность символов AT_CMD_CHAR |
| RS485_CLASH_INT_ENA | 17 | R/W | 0 | RS-485: коллизия передатчика и приёмника |
| RS485_FRM_ERR_INT_ENA | 16 | R/W | 0 | RS-485: ошибка кадра в эхе собственной передачи |
| RS485_PARITY_ERR_INT_ENA | 15 | R/W | 0 | RS-485: ошибка чётности в эхе собственной передачи |
| TX_DONE_INT_ENA | 14 | R/W | 0 | Передатчик отправил все данные из FIFO |
| TX_BRK_IDLE_DONE_INT_ENA | 13 | R/W | 0 | После последнего байта выдержана пауза TX_IDLE_NUM |
| TX_BRK_DONE_INT_ENA | 12 | R/W | 0 | После передачи всех данных отправлены нули break |
| GLITCH_DET_INT_ENA | 11 | R/W | 0 | Помеха посреди стартового бита |
| SW_XOFF_INT_ENA | 10 | R/W | 0 | Принят символ XOFF при включённом программном управлении потоком |
| SW_XON_INT_ENA | 9 | R/W | 0 | Принят символ XON при включённом программном управлении потоком |
| RXFIFO_TOUT_INT_ENA | 8 | R/W | 0 | Приём байта длится дольше RX_TOUT_THRHD битовых интервалов |
| BRK_DET_INT_ENA | 7 | R/W | 0 | После стоп-бита принят 0 — сигнал break |
| CTS_CHG_INT_ENA | 6 | R/W | 0 | Изменился уровень на входе CTS |
| DSR_CHG_INT_ENA | 5 | R/W | 0 | Изменился уровень на входе DSR |
| RXFIFO_OVF_INT_ENA | 4 | R/W | 0 | Принято больше данных, чем вмещает RX FIFO |
| FRM_ERR_INT_ENA | 3 | R/W | 0 | Ошибка кадра |
| PARITY_ERR_INT_ENA | 2 | R/W | 0 | Принят байт с ошибкой чётности |
| TXFIFO_EMPTY_INT_ENA | 1 | R/W | 0 | В TX FIFO меньше байтов, чем задано в TXFIFO_EMPTY_THRHD |
| RXFIFO_FULL_INT_ENA | 0 | R/W | 0 | Принято больше байтов, чем задано в RXFIFO_FULL_THRHD |
UART_INT_CLR_REG(i) — сброс флагов прерываний записью 1
Смещение 0x0010, после сброса 0x0000 0000. TRM: регистр 26.6.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| WAKEUP_INT_CLR | 19 | WT | 0 | В лёгком сне на RXD не меньше ACTIVE_THRESHOLD + 3 фронтов (в описании флага TRM — «больше») |
| AT_CMD_CHAR_DET_INT_CLR | 18 | WT | 0 | Обнаружена последовательность символов AT_CMD_CHAR |
| RS485_CLASH_INT_CLR | 17 | WT | 0 | RS-485: коллизия передатчика и приёмника |
| RS485_FRM_ERR_INT_CLR | 16 | WT | 0 | RS-485: ошибка кадра в эхе собственной передачи |
| RS485_PARITY_ERR_INT_CLR | 15 | WT | 0 | RS-485: ошибка чётности в эхе собственной передачи |
| TX_DONE_INT_CLR | 14 | WT | 0 | Передатчик отправил все данные из FIFO |
| TX_BRK_IDLE_DONE_INT_CLR | 13 | WT | 0 | После последнего байта выдержана пауза TX_IDLE_NUM |
| TX_BRK_DONE_INT_CLR | 12 | WT | 0 | После передачи всех данных отправлены нули break |
| GLITCH_DET_INT_CLR | 11 | WT | 0 | Помеха посреди стартового бита |
| SW_XOFF_INT_CLR | 10 | WT | 0 | Принят символ XOFF при включённом программном управлении потоком |
| SW_XON_INT_CLR | 9 | WT | 0 | Принят символ XON при включённом программном управлении потоком |
| RXFIFO_TOUT_INT_CLR | 8 | WT | 0 | Приём байта длится дольше RX_TOUT_THRHD битовых интервалов |
| BRK_DET_INT_CLR | 7 | WT | 0 | После стоп-бита принят 0 — сигнал break |
| CTS_CHG_INT_CLR | 6 | WT | 0 | Изменился уровень на входе CTS |
| DSR_CHG_INT_CLR | 5 | WT | 0 | Изменился уровень на входе DSR |
| RXFIFO_OVF_INT_CLR | 4 | WT | 0 | Принято больше данных, чем вмещает RX FIFO |
| FRM_ERR_INT_CLR | 3 | WT | 0 | Ошибка кадра |
| PARITY_ERR_INT_CLR | 2 | WT | 0 | Принят байт с ошибкой чётности |
| TXFIFO_EMPTY_INT_CLR | 1 | WT | 0 | В TX FIFO меньше байтов, чем задано в TXFIFO_EMPTY_THRHD |
| RXFIFO_FULL_INT_CLR | 0 | WT | 0 | Принято больше байтов, чем задано в RXFIFO_FULL_THRHD |
UART_CLKDIV_REG(i) — делитель скорости обмена
Смещение 0x0014, после сброса 0x0000 02B6. TRM: регистр 26.7.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | CLKDIV_FRAG | — | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | CLKDIV | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| CLKDIV_FRAG | 23:20 | R/W | 0x0 | Дробная часть делителя скорости в шестнадцатых |
| CLKDIV | 11:0 | R/W | 0x2B6 | Целая часть делителя скорости |
UART_RX_FILT_REG(i) — фильтр помех на входе RXD
Смещение 0x0018, после сброса 0x0000 0008. TRM: регистр 26.8.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | GLITCH_FILT_EN | GLITCH_FILT | |||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| GLITCH_FILT_EN | 8 | R/W | 0 | 1 — включить фильтр помех на RXD |
| GLITCH_FILT | 7:0 | R/W | 0x08 | Импульсы короче этого значения отбрасываются |
UART_STATUS_REG(i) — заполнение FIFO и уровни линий
Смещение 0x001C, после сброса 0xE000 C000. TRM: регистр 26.19.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TXD | RTSN | DTRN | — | TXFIFO_CNT | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RXD | CTSN | DSRN | — | RXFIFO_CNT | |||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TXD | 31 | RO | 1 | Текущий уровень внутреннего сигнала TXD |
| RTSN | 30 | RO | 1 | Текущий уровень внутреннего сигнала RTS |
| DTRN | 29 | RO | 1 | Текущий уровень внутреннего сигнала DTR |
| TXFIFO_CNT | 25:16 | RO | 0x000 | Число байтов в TX FIFO |
| RXD | 15 | RO | 1 | Текущий уровень внутреннего сигнала RXD |
| CTSN | 14 | RO | 1 | Текущий уровень внутреннего сигнала CTS |
| DSRN | 13 | RO | 0 | Текущий уровень внутреннего сигнала DSR |
| RXFIFO_CNT | 9:0 | RO | 0x000 | Число принятых байтов в RX FIFO |
UART_CONF0_REG(i) — формат кадра, инверсия линий, сброс FIFO, IrDA
Смещение 0x0020, после сброса 0x1000 001C. TRM: регистр 26.9.
Формат кадра 8N1 — BIT_NUM = 3, PARITY_EN = 0, STOP_BIT_NUM = 1 — записан уже после сброса (0x1000 001C). Поля формата кадра, IrDA, петли и автоопределения скорости — синхронные: они вступают в силу после записи REG_UPDATE.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| MEM_CLK_EN | 28 | R/W | 1 | Тактирование памяти FIFO |
| AUTOBAUD_EN | 27 | R/W | 0 | 1 — автоопределение скорости |
| ERR_WR_MASK | 26 | R/W | 0 | |
| CLK_EN | 25 | R/W | 0 | |
| DTR_INV | 24 | R/W | 0 | 1 — инвертировать выход DTR |
| RTS_INV | 23 | R/W | 0 | 1 — инвертировать выход RTS |
| TXD_INV | 22 | R/W | 0 | 1 — инвертировать выход TXD |
| DSR_INV | 21 | R/W | 0 | 1 — инвертировать вход DSR |
| CTS_INV | 20 | R/W | 0 | 1 — инвертировать вход CTS |
| RXD_INV | 19 | R/W | 0 | 1 — инвертировать вход RXD |
| TXFIFO_RST | 18 | R/W | 0 | 1 — сброс TX FIFO |
| RXFIFO_RST | 17 | R/W | 0 | 1 — сброс RX FIFO |
| IRDA_EN | 16 | R/W | 0 | 1 — протокол IrDA |
| TX_FLOW_EN | 15 | R/W | 0 | 1 — аппаратное управление потоком передатчика |
| LOOPBACK | 14 | R/W | 0 | 1 — петля для проверки: передатчик замкнут на приёмник внутри чипа |
| IRDA_RX_INV | 13 | R/W | 0 | 1 — инвертировать вход приёмника IrDA |
| IRDA_TX_INV | 12 | R/W | 0 | 1 — инвертировать выход передатчика IrDA |
| IRDA_WCTL | 11 | R/W | 0 | 11-й бит передатчика IrDA: 0 — всегда 0, 1 — равен 10-му |
| IRDA_TX_EN | 10 | R/W | 0 | Запуск передатчика IrDA |
| IRDA_DPLX | 9 | R/W | 0 | 1 — петля IrDA |
| TXD_BRK | 8 | R/W | 0 | 1 — после передачи данных отправить нули break (TX_BRK_NUM штук) |
| SW_DTR | 7 | R/W | 0 | Программный уровень DTR |
| SW_RTS | 6 | R/W | 0 | Программный уровень RTS при программном управлении потоком |
| STOP_BIT_NUM | 5:4 | R/W | 0x1 | Стоп-биты: 1 — один, 2 — полтора, 3 — два (значения UART_STOP_BITS_1, _1_5, _2 ESP-IDF) |
| BIT_NUM | 3:2 | R/W | 0x3 | Длина слова: 0 — 5 бит, 1 — 6, 2 — 7, 3 — 8 бит (значения UART_DATA_5_BITS…UART_DATA_8_BITS ESP-IDF) |
| PARITY_EN | 1 | R/W | 0 | 1 — добавлять и проверять бит чётности |
| PARITY | 0 | R/W | 0 | Тип чётности: 0 — чётный, 1 — нечётный (ESP-IDF пишет младший бит UART_PARITY_EVEN = 2 и UART_PARITY_ODD = 3) |
UART_CONF1_REG(i) — пороги FIFO и таймаут приёма
Смещение 0x0024, после сброса 0x0001 8060. TRM: регистр 26.10.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | RX_TOUT_EN | RX_FLOW_EN | RX_TOUT_FLOW_DIS | DIS_RX_DAT_OVF | TXFIFO_EMPTY_THRHD | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TXFIFO_EMPTY_THRHD | RXFIFO_FULL_THRHD | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| RX_TOUT_EN | 23 | R/W | 0 | 1 — таймаут приёма (прерывание RXFIFO_TOUT) |
| RX_FLOW_EN | 22 | R/W | 0 | 1 — аппаратное управление потоком приёмника |
| RX_TOUT_FLOW_DIS | 21 | R/W | 0 | 1 — не считать паузу таймаута, пока работает аппаратное управление потоком |
| DIS_RX_DAT_OVF | 20 | R/W | 0 | 1 — не отслеживать переполнение RX FIFO |
| TXFIFO_EMPTY_THRHD | 19:10 | R/W | 0x060 | Порог прерывания TXFIFO_EMPTY: в TX FIFO меньше стольких байтов |
| RXFIFO_FULL_THRHD | 9:0 | R/W | 0x060 | Порог прерывания RXFIFO_FULL: принято больше стольких байтов (в разделе 26.4.2 TRM — «не меньше») |
UART_LOWPULSE_REG(i) — автоопределение скорости: самый короткий низкий импульс
Смещение 0x0028, после сброса 0x0000 0FFF. TRM: регистр 26.23.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| LOWPULSE_MIN_CNT | 11:0 | RO | 0xFFF |
UART_HIGHPULSE_REG(i) — автоопределение скорости: самый короткий высокий импульс
Смещение 0x002C, после сброса 0x0000 0FFF. TRM: регистр 26.24.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| HIGHPULSE_MIN_CNT | 11:0 | RO | 0xFFF |
UART_RXD_CNT_REG(i) — автоопределение скорости: число перепадов на RXD
Смещение 0x0030, после сброса 0x0000 0000. TRM: регистр 26.25.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| RXD_EDGE_CNT | 9:0 | RO | 0x000 |
UART_FLOW_CONF_REG(i) — программное управление потоком XON/XOFF
Смещение 0x0034, после сброса 0x0000 0000. TRM: регистр 26.11.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | SEND_XOFF | SEND_XON | FORCE_XOFF | FORCE_XON | XONOFF_DEL | SW_FLOW_CON_EN | |||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| SEND_XOFF | 5 | R/W/SS/SC | 0 | 1 — отправить XOFF; сбрасывается сам |
| SEND_XON | 4 | R/W/SS/SC | 0 | 1 — отправить XON; сбрасывается сам |
| FORCE_XOFF | 3 | R/W | 0 | 1 — остановить передатчик |
| FORCE_XON | 2 | R/W | 0 | 1 — заставить передатчик передавать |
| XONOFF_DEL | 1 | R/W | 0 | 1 — удалять символы XON и XOFF из принятых данных |
| SW_FLOW_CON_EN | 0 | R/W | 0 | 1 — программное управление потоком |
UART_SLEEP_CONF_REG(i) — порог пробуждения из лёгкого сна по RXD
Смещение 0x0038, после сброса 0x0000 00F0. TRM: регистр 26.12.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| ACTIVE_THRESHOLD | 9:0 | R/W | 0x0F0 | Пробуждение из лёгкого сна, когда фронтов на RXD не меньше ACTIVE_THRESHOLD + 3 (раздел 26.3 TRM; в описаниях полей TRM — «больше») |
UART_SWFC_CONF0_REG(i) — символ XOFF и порог его отправки
Смещение 0x003C, после сброса 0x0000 4CE0. TRM: регистр 26.13.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | XOFF_CHAR | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| XOFF_CHAR | XOFF_THRESHOLD | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| XOFF_CHAR | 17:10 | R/W | 0x13 | Символ XOFF |
| XOFF_THRESHOLD | 9:0 | R/W | 0x0E0 | В RX FIFO больше стольких байтов — отправляется XOFF |
UART_SWFC_CONF1_REG(i) — символ XON и порог его отправки
Смещение 0x0040, после сброса 0x0000 4400. TRM: регистр 26.14.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | XON_CHAR | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| XON_CHAR | XON_THRESHOLD | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| XON_CHAR | 17:10 | R/W | 0x11 | Символ XON |
| XON_THRESHOLD | 9:0 | R/W | 0x000 | В RX FIFO меньше стольких байтов — отправляется XON |
UART_TXBRK_CONF_REG(i) — длина сигнала break после передачи
Смещение 0x0044, после сброса 0x0000 000A. TRM: регистр 26.15.
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TX_BRK_NUM | 7:0 | R/W | 0x0A | Число нулевых символов break после передачи |
UART_IDLE_CONF_REG(i) — пауза между кадрами и порог конца кадра
Смещение 0x0048, после сброса 0x0004 0100. TRM: регистр 26.16.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TX_IDLE_NUM | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TX_IDLE_NUM | RX_IDLE_THRHD | ||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| TX_IDLE_NUM | 19:10 | R/W | 0x100 | Наименьшая пауза между передачами в битовых интервалах |
| RX_IDLE_THRHD | 9:0 | R/W | 0x100 | Пауза приёма дольше стольких битовых интервалов — конец кадра |
UART_RS485_CONF_REG(i) — режим RS-485 и задержки
Смещение 0x004C, после сброса 0x0000 0000. TRM: регистр 26.17.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | RS485_TX_DLY_NUM | RS485_RX_DLY_NUM | RS485RXBY_TX_EN | RS485TX_RX_EN | DL1_EN | DL0_EN | RS485_EN | ||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| RS485_TX_DLY_NUM | 9:6 | R/W | 0x0 | Задержка внутреннего сигнала передатчика |
| RS485_RX_DLY_NUM | 5 | R/W | 0 | Задержка внутреннего сигнала приёмника |
| RS485RXBY_TX_EN | 4 | R/W | 0 | 1 — передатчик передаёт, когда линия приёмника занята |
| RS485TX_RX_EN | 3 | R/W | 0 | 1 — приёмник принимает данные во время передачи |
| DL1_EN | 2 | R/W | 0 | 1 — пауза в 1 бит после стоп-бита |
| DL0_EN | 1 | R/W | 0 | 1 — пауза в 1 бит перед стартовым битом |
| RS485_EN | 0 | R/W | 0 | 1 — режим RS-485 |
UART_AT_CMD_PRECNT_REG(i) — последовательность AT_CMD: пауза перед ней
Смещение 0x0050, после сброса 0x0000 0901. TRM: регистр 26.28.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| PRE_IDLE_NUM | 15:0 | R/W | 0x0901 |
UART_AT_CMD_POSTCNT_REG(i) — последовательность AT_CMD: пауза после неё
Смещение 0x0054, после сброса 0x0000 0901. TRM: регистр 26.29.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| POST_IDLE_NUM | 15:0 | R/W | 0x0901 |
UART_AT_CMD_GAPTOUT_REG(i) — последовательность AT_CMD: наибольший промежуток между символами
Смещение 0x0058, после сброса 0x0000 000B. TRM: регистр 26.30.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| RX_GAP_TOUT | 15:0 | R/W | 0x000B |
UART_AT_CMD_CHAR_REG(i) — последовательность AT_CMD: символ и их число
Смещение 0x005C, после сброса 0x0000 032B. TRM: регистр 26.31.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| CHAR_NUM | AT_CMD_CHAR | ||||||||||||||
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| CHAR_NUM | 15:8 | R/W | 0x03 |
| AT_CMD_CHAR | 7:0 | R/W | 0x2B |
UART_MEM_CONF_REG(i) — размеры FIFO, порог управления потоком, таймаут, питание памяти
Смещение 0x0060, после сброса 0x0014 0012. TRM: регистр 26.2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | MEM_FORCE_PU | MEM_FORCE_PD | RX_TOUT_THRHD | RX_FLOW_THRHD | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RX_FLOW_THRHD | TX_SIZE | RX_SIZE | — | ||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| MEM_FORCE_PU | 28 | R/W | 0 | 1 — держать память UART включённой |
| MEM_FORCE_PD | 27 | R/W | 0 | 1 — выключить память UART |
| RX_TOUT_THRHD | 26:17 | R/W | 0x00A | Порог таймаута приёма в битовых интервалах |
| RX_FLOW_THRHD | 16:7 | R/W | 0x000 | Сколько байтов можно принять при аппаратном управлении потоком |
| TX_SIZE | 6:4 | R/W | 0x1 | Размер TX FIFO в блоках по 128 байт |
| RX_SIZE | 3:1 | R/W | 0x1 | Размер RX FIFO в блоках по 128 байт |
UART_MEM_TX_STATUS_REG(i) — адреса записи и чтения TX FIFO
Смещение 0x0064, после сброса 0x0000 0000. TRM: регистр 26.20.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TX_RADDR | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TX_RADDR | — | APB_TX_WADDR | |||||||||||||
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| TX_RADDR | 20:11 | RO | 0x000 |
| APB_TX_WADDR | 9:0 | RO | 0x000 |
UART_MEM_RX_STATUS_REG(i) — адреса записи и чтения RX FIFO
Смещение 0x0068, после сброса 0x0010 0200. TRM: регистр 26.21.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | RX_WADDR | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RX_WADDR | — | APB_RX_RADDR | |||||||||||||
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| RX_WADDR | 20:11 | RO | 0x200 |
| APB_RX_RADDR | 9:0 | RO | 0x200 |
UART_FSM_STATUS_REG(i) — состояния автоматов приёмника и передатчика
Смещение 0x006C, после сброса 0x0000 0000. TRM: регистр 26.22.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | ST_UTX_OUT | ST_URX_OUT | |||||||||||||
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| ST_UTX_OUT | 7:4 | RO | 0x0 |
| ST_URX_OUT | 3:0 | RO | 0x0 |
UART_POSPULSE_REG(i) — автоопределение скорости: самый короткий период по фронтам
Смещение 0x0070, после сброса 0x0000 0FFF. TRM: регистр 26.26.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| POSEDGE_MIN_CNT | 11:0 | RO | 0xFFF |
UART_NEGPULSE_REG(i) — автоопределение скорости: самый короткий период по спадам
Смещение 0x0074, после сброса 0x0000 0FFF. TRM: регистр 26.27.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| NEGEDGE_MIN_CNT | 11:0 | RO | 0xFFF |
UART_CLK_CONF_REG(i) — источник и делитель такта ядра UART, сбросы
Смещение 0x0078, после сброса 0x0370 1000. TRM: регистр 26.18.
После сброса SCLK_SEL = 3 (XTAL_CLK) и SCLK_DIV_NUM = 1. Формула делителя в TRM и драйвер ESP-IDF расходятся на единицу: TRM — SCLK_DIV_NUM + SCLK_DIV_B / SCLK_DIV_A, uart_ll.h — SCLK_DIV_NUM + 1. Описания полей SCLK_DIV_A и SCLK_DIV_B в TRM (A — числитель, B — знаменатель) тоже противоречат формуле раздела 26.4.1; ESP-IDF их не использует.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | RX_RST_CORE | TX_RST_CORE | RX_SCLK_EN | TX_SCLK_EN | RST_CORE | SCLK_EN | SCLK_SEL | SCLK_DIV_NUM | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SCLK_DIV_NUM | SCLK_DIV_A | SCLK_DIV_B | |||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| RX_RST_CORE | 27 | R/W | 0 | Сброс приёмника: записать 1, затем 0 |
| TX_RST_CORE | 26 | R/W | 0 | Сброс передатчика: записать 1, затем 0 |
| RX_SCLK_EN | 25 | R/W | 1 | 1 — такт приёмника |
| TX_SCLK_EN | 24 | R/W | 1 | 1 — такт передатчика |
| RST_CORE | 23 | R/W | 0 | Сброс приёмника и передатчика: записать 1, затем 0 |
| SCLK_EN | 22 | R/W | 1 | 1 — такт приёмника и передатчика |
| SCLK_SEL | 21:20 | R/W | 0x3 | Такт ядра UART: 1 — APB_CLK, 2 — RC_FAST_CLK, 3 — XTAL_CLK |
| SCLK_DIV_NUM | 19:12 | R/W | 0x01 | Целая часть делителя такта ядра; ESP-IDF записывает сюда делитель минус 1 |
| SCLK_DIV_A | 11:6 | R/W | 0x00 | Дробная часть делителя такта ядра (см. текст о формуле TRM) |
| SCLK_DIV_B | 5:0 | R/W | 0x00 | Дробная часть делителя такта ядра (см. текст о формуле TRM) |
UART_DATE_REG(i) — версия блока: дата ревизии аппаратуры
Смещение 0x007C, после сброса 0x0200 8270. TRM: регистр 26.32.
| Поле | Биты | Доступ | Сброс |
|---|---|---|---|
| DATE | 31:0 | R/W | 0x0200 8270 |
UART_ID_REG(i) — синхронизация настроек с ядром UART и номер версии
Смещение 0x0080, после сброса 0x4000 0500. TRM: регистр 26.33.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| REG_UPDATE | UPDATE_CTRL | ID | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| ID | |||||||||||||||
| Поле | Биты | Доступ | Сброс | Назначение |
|---|---|---|---|---|
| REG_UPDATE | 31 | R/W/SC | 0 | Запись 1 передаёт синхронные регистры в домен ядра UART; бит сбрасывается сам по окончании (UART_REG_UPDATE в ESP-IDF) |
| UPDATE_CTRL | 30 | R/W | 1 | Режим синхронизации: 1 (после сброса) — автоматический, 0 — по записи REG_UPDATE; по TRM перед настройкой бит сбрасывают (UART_HIGH_SPEED в ESP-IDF) |
| ID | 29:0 | R/W | 0x0000 0500 | Номер версии блока |
Частые вопросы
Как рассчитать CLKDIV для нужной скорости UART ESP32-S3?
Разделить частоту такта ядра UART на скорость: 80 000 000 / 115 200 = 694,44. Целая часть 694 идёт в CLKDIV, дробная 0,44 · 16 ≈ 7 — в CLKDIV_FRAG: делитель 694 + 7/16 = 694,4375, это пример из раздела 26.4.3.1 TRM. Целая часть CLKDIV — 12 бит, до 4095.
Почему запись в CLKDIV UART ESP32-S3 не меняет скорость?
CLKDIV — синхронный регистр. По TRM для его применения нужно сбросить бит UPDATE_CTRL в UART_ID_REG (UART_HIGH_SPEED в ESP-IDF), дождаться нуля в REG_UPDATE, записать делитель и установить REG_UPDATE — бит сбросится сам, когда значения переданы ядру UART. Кроме того, должно быть включено тактирование контроллера: у UART1 — бит SYSTEM_UART1_CLK_EN регистра SYSTEM_PERIP_CLK_EN0_REG, у UART2 — SYSTEM_UART2_CLK_EN в SYSTEM_PERIP_CLK_EN1_REG.
Источники
- Espressif. ESP32-S3 Technical Reference Manual, версия 1.8 — глава 26: таблица 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
- 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
- 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