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

Регистры INTERRUPT ESP32-S3

Регистры матрицы прерываний ESP32-S3 для ядра 0: на какое из 32 прерываний ядра попадает каждый из 99 источников периферии, как источник отключить и где прочитать его текущее состояние. Набор регистров ядра 1 такой же и лежит на 0x800 дальше.

Содержание

У каждого ядра Xtensa ESP32-S3 32 прерывания: 26 периферийных и 6 внутренних — таймеры 6, 15 и 16, программные 7 и 29, профилирование 11. Тип и приоритет каждого номера заданы аппаратно (таблица 9.3-2 TRM): например, 17 и 18 — по уровню с приоритетом 1, 10 и 22 — по фронту, 14 — немаскируемое. Матрица по адресу 0x600C 2000 соединяет 99 источников с этими входами; регистры ядра 1 (INTERRUPT_CORE1_*) начинаются со смещения 0x800.

Регистр INTERRUPT_CORE0_<источник>_MAP_REG хранит 5-битный номер прерывания ядра 0, на которое идёт источник. Номер любого периферийного прерывания (0…5, 8…10, 12…14, 17…28, 30, 31) подключает источник; несколько источников могут делить одно прерывание. Запись номера внутреннего прерывания (6, 7, 11, 15, 16 или 29) отключает источник: к ним источники не подключены.

Текущее состояние источников показывают INTERRUPT_CORE0_INTR_STATUS_0…3_REG — по биту на источник в порядке таблицы 9.3-1 TRM. Разрешение и маскирование самих прерываний ядра делаются не здесь, а регистром INTENABLE процессора.

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

Пример на C

UART0 → прерывание 17 ядра 0 и проверка источника (soc/interrupt_core0_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/interrupt_core0_reg.h"

REG_WRITE(INTERRUPT_CORE0_UART_INTR_MAP_REG, 17);     // по уровню, приоритет 1
bool pending = REG_READ(INTERRUPT_CORE0_INTR_STATUS_0_REG) & BIT(27);  // UART_INTR — бит 27
REG_WRITE(INTERRUPT_CORE0_UART_INTR_MAP_REG, 6);      // отключить: 6 — внутреннее прерывание

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

Регистр (ESP-IDF)СмещениеНазначениеПосле сброса
INTERRUPT_CORE0_MAC_INTR_MAP_REG0x0000Источник Wi-Fi MAC → прерывание ядра0x0000 0010
INTERRUPT_CORE0_MAC_NMI_MAP_REG0x0004Источник Wi-Fi MAC (NMI) → прерывание ядра0x0000 0010
INTERRUPT_CORE0_PWR_INTR_MAP_REG0x0008Источник Wi-Fi PWR → прерывание ядра0x0000 0010
INTERRUPT_CORE0_BB_INT_MAP_REG0x000CИсточник Wi-Fi BB → прерывание ядра0x0000 0010
INTERRUPT_CORE0_BT_MAC_INT_MAP_REG0x0010Источник BT MAC → прерывание ядра0x0000 0010
INTERRUPT_CORE0_BT_BB_INT_MAP_REG0x0014Источник BT BB → прерывание ядра0x0000 0010
INTERRUPT_CORE0_BT_BB_NMI_MAP_REG0x0018Источник BT BB (NMI) → прерывание ядра0x0000 0010
INTERRUPT_CORE0_RWBT_IRQ_MAP_REG0x001CИсточник RWBT → прерывание ядра0x0000 0010
INTERRUPT_CORE0_RWBLE_IRQ_MAP_REG0x0020Источник RWBLE → прерывание ядра0x0000 0010
INTERRUPT_CORE0_RWBT_NMI_MAP_REG0x0024Источник RWBT (NMI) → прерывание ядра0x0000 0010
INTERRUPT_CORE0_RWBLE_NMI_MAP_REG0x0028Источник RWBLE (NMI) → прерывание ядра0x0000 0010
INTERRUPT_CORE0_I2C_MST_INT_MAP_REG0x002CИсточник внутреннего I2C-ведущего → прерывание ядра0x0000 0010
INTERRUPT_CORE0_UHCI0_INTR_MAP_REG0x0038Источник UHCI0 → прерывание ядра0x0000 0010
INTERRUPT_CORE0_GPIO_INTERRUPT_PRO_MAP_REG0x0040Источник GPIO → прерывание ядра0x0000 0010
INTERRUPT_CORE0_GPIO_INTERRUPT_PRO_NMI_MAP_REG0x0044Источник GPIO (NMI) → прерывание ядра0x0000 0010
INTERRUPT_CORE0_SPI_INTR_n_MAP_REG0x004C + n · 0x0004Источник SPI n → прерывание ядра0x0000 0010
INTERRUPT_CORE0_LCD_CAM_INT_MAP_REG0x0060Источник LCD_CAM → прерывание ядра0x0000 0010
INTERRUPT_CORE0_I2Sn_INT_MAP_REG0x0064 + n · 0x0004Источник I2S n → прерывание ядра0x0000 0010
INTERRUPT_CORE0_UART_INTR_MAP_REG0x006CИсточник UART0 → прерывание ядра0x0000 0010
INTERRUPT_CORE0_UARTn_INTR_MAP_REG0x006C + n · 0x0004Источник UART n → прерывание ядра0x0000 0010
INTERRUPT_CORE0_SDIO_HOST_INTERRUPT_MAP_REG0x0078Источник SD/MMC-хоста → прерывание ядра0x0000 0010
INTERRUPT_CORE0_PWMn_INTR_MAP_REG0x007C + n · 0x0004Источник MCPWM n → прерывание ядра0x0000 0010
INTERRUPT_CORE0_LEDC_INT_MAP_REG0x008CИсточник LEDC → прерывание ядра0x0000 0010
INTERRUPT_CORE0_EFUSE_INT_MAP_REG0x0090Источник eFuse → прерывание ядра0x0000 0010
INTERRUPT_CORE0_CAN_INT_MAP_REG0x0094Источник TWAI → прерывание ядра0x0000 0010
INTERRUPT_CORE0_USB_INTR_MAP_REG0x0098Источник USB OTG → прерывание ядра0x0000 0010
INTERRUPT_CORE0_RTC_CORE_INTR_MAP_REG0x009CИсточник RTC_CNTL → прерывание ядра0x0000 0010
INTERRUPT_CORE0_RMT_INTR_MAP_REG0x00A0Источник RMT → прерывание ядра0x0000 0010
INTERRUPT_CORE0_PCNT_INTR_MAP_REG0x00A4Источник PCNT → прерывание ядра0x0000 0010
INTERRUPT_CORE0_I2C_EXTn_INTR_MAP_REG0x00A8 + n · 0x0004Источник I2C n → прерывание ядра0x0000 0010
INTERRUPT_CORE0_TG_Tn_INT_MAP_REG0x00C8 + n · 0x0004Источник таймера Tn группы TIMG0 → прерывание ядра0x0000 0010
INTERRUPT_CORE0_TG_WDT_INT_MAP_REG0x00D0Источник сторожа группы TIMG0 → прерывание ядра0x0000 0010
INTERRUPT_CORE0_TG1_Tn_INT_MAP_REG0x00D4 + n · 0x0004Источник таймера Tn группы TIMG1 → прерывание ядра0x0000 0010
INTERRUPT_CORE0_TG1_WDT_INT_MAP_REG0x00DCИсточник сторожа группы TIMG1 → прерывание ядра0x0000 0010
INTERRUPT_CORE0_CACHE_IA_INT_MAP_REG0x00E0Источник недопустимого доступа к кэшу → прерывание ядра0x0000 0010
INTERRUPT_CORE0_SYSTIMER_TARGETn_INT_MAP_REG0x00E4 + n · 0x0004Источник компаратора n системного таймера → прерывание ядра0x0000 0010
INTERRUPT_CORE0_SPI_MEM_REJECT_INTR_MAP_REG0x00F0Источник отказа доступа SPI0 и SPI1 → прерывание ядра0x0000 0010
INTERRUPT_CORE0_DCACHE_PRELOAD_INT_MAP_REG0x00F4Источник предзагрузки кэша данных → прерывание ядра0x0000 0010
INTERRUPT_CORE0_ICACHE_PRELOAD_INT_MAP_REG0x00F8Источник предзагрузки кэша инструкций → прерывание ядра0x0000 0010
INTERRUPT_CORE0_DCACHE_SYNC_INT_MAP_REG0x00FCИсточник синхронизации кэша данных → прерывание ядра0x0000 0010
INTERRUPT_CORE0_ICACHE_SYNC_INT_MAP_REG0x0100Источник синхронизации кэша инструкций → прерывание ядра0x0000 0010
INTERRUPT_CORE0_APB_ADC_INT_MAP_REG0x0104Источник APB_SARADC → прерывание ядра0x0000 0010
INTERRUPT_CORE0_DMA_IN_CHn_INT_MAP_REG0x0108 + n · 0x0004Источник приёмного канала n GDMA → прерывание ядра0x0000 0010
INTERRUPT_CORE0_DMA_OUT_CHn_INT_MAP_REG0x011C + n · 0x0004Источник передающего канала n GDMA → прерывание ядра0x0000 0010
INTERRUPT_CORE0_RSA_INT_MAP_REG0x0130Источник ускорителя RSA → прерывание ядра0x0000 0010
INTERRUPT_CORE0_AES_INT_MAP_REG0x0134Источник ускорителя AES → прерывание ядра0x0000 0010
INTERRUPT_CORE0_SHA_INT_MAP_REG0x0138Источник ускорителя SHA → прерывание ядра0x0000 0010
INTERRUPT_CORE0_CPU_INTR_FROM_CPU_n_MAP_REG0x013C + n · 0x0004Программное межъядерное прерывание n → прерывание ядра0x0000 0010
INTERRUPT_CORE0_DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR_MAP_REG0x0150Нарушение прав доступа GDMA → прерывание ядра0x0000 0010
INTERRUPT_CORE0_CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP_REG0x0154Ядро 0: нарушение прав доступа к IRAM → прерывание ядра0x0000 0010
INTERRUPT_CORE0_CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP_REG0x0158Ядро 0: нарушение прав доступа к DRAM → прерывание ядра0x0000 0010
INTERRUPT_CORE0_CORE_n_PIF_PMS_MONITOR_VIOLATE_INTR_MAP_REG0x015C + n · 0x0010Ядро n: нарушение прав доступа к периферии → прерывание ядра0x0000 0010
INTERRUPT_CORE0_CORE_n_PIF_PMS_MONITOR_VIOLATE_SIZE_INTR_MAP_REG0x0160 + n · 0x0010Ядро n: нарушение размера доступа к периферии → прерывание ядра0x0000 0010
INTERRUPT_CORE0_CORE_1_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP_REG0x0164Ядро 1: нарушение прав доступа к IRAM → прерывание ядра0x0000 0010
INTERRUPT_CORE0_CORE_1_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP_REG0x0168Ядро 1: нарушение прав доступа к DRAM → прерывание ядра0x0000 0010
INTERRUPT_CORE0_BACKUP_PMS_VIOLATE_INTR_MAP_REG0x0174Нарушение прав доступа модуля сохранения → прерывание ядра0x0000 0010
INTERRUPT_CORE0_CACHE_COREn_ACS_INT_MAP_REG0x0178 + n · 0x0004Ядро n: ошибка доступа к кэшу → прерывание ядра0x0000 0010
INTERRUPT_CORE0_USB_DEVICE_INT_MAP_REG0x0180Источник USB Serial/JTAG → прерывание ядра0x0000 0010
INTERRUPT_CORE0_PERI_BACKUP_INT_MAP_REG0x0184Источник модуля сохранения периферии → прерывание ядра0x0000 0010
INTERRUPT_CORE0_DMA_EXTMEM_REJECT_INT_MAP_REG0x0188Отказ доступа GDMA к внешней памяти → прерывание ядра0x0000 0010
INTERRUPT_CORE0_INTR_STATUS_n_REG0x018C + n · 0x0004Текущее состояние источников, группа n из 320x0000 0000
INTERRUPT_CORE0_CLOCK_GATE_REG0x019CТактирование регистров0x0000 0001
INTERRUPT_CORE0_INTERRUPT_DATE_REG0x07FCВерсия блока: дата ревизии аппаратуры0x0201 2300

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

INTERRUPT_CORE0_MAC_INTR_MAP_REG — источник Wi-Fi MAC → прерывание ядра

Смещение 0x0000, адрес 0x600C 2000, после сброса 0x0000 0010. TRM: регистр 9.1 (INTERRUPT_CORE0_MAC_INTR_MAP_REG).

Имена регистров в SVD и TRM расходятся: SVD — PRO_MAC_INTR_MAP, CAN_INT_MAP, GPIO_INTERRUPT_PRO_MAP; TRM — MAC_INTR_MAP, TWAI_INT_MAP, GPIO_INTERRUPT_CPU_MAP. Показаны имена SVD и макросы ESP-IDF. Регистры SVD, которых нет в TRM (SLC0, SLC1, UHCI1, SPI4, PWM2, PWM3, SPI2_DMA и другие), не показаны.

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

INTERRUPT_CORE0_MAC_NMI_MAP_REG — источник Wi-Fi MAC (NMI) → прерывание ядра

Смещение 0x0004, адрес 0x600C 2004, после сброса 0x0000 0010. TRM: регистр 9.2.

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

INTERRUPT_CORE0_PWR_INTR_MAP_REG — источник Wi-Fi PWR → прерывание ядра

Смещение 0x0008, адрес 0x600C 2008, после сброса 0x0000 0010. TRM: регистр 9.3.

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

INTERRUPT_CORE0_BB_INT_MAP_REG — источник Wi-Fi BB → прерывание ядра

Смещение 0x000C, адрес 0x600C 200C, после сброса 0x0000 0010. TRM: регистр 9.4.

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

INTERRUPT_CORE0_BT_MAC_INT_MAP_REG — источник BT MAC → прерывание ядра

Смещение 0x0010, адрес 0x600C 2010, после сброса 0x0000 0010. TRM: регистр 9.5.

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

INTERRUPT_CORE0_BT_BB_INT_MAP_REG — источник BT BB → прерывание ядра

Смещение 0x0014, адрес 0x600C 2014, после сброса 0x0000 0010. TRM: регистр 9.6.

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

INTERRUPT_CORE0_BT_BB_NMI_MAP_REG — источник BT BB (NMI) → прерывание ядра

Смещение 0x0018, адрес 0x600C 2018, после сброса 0x0000 0010. TRM: регистр 9.7.

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

INTERRUPT_CORE0_RWBT_IRQ_MAP_REG — источник RWBT → прерывание ядра

Смещение 0x001C, адрес 0x600C 201C, после сброса 0x0000 0010. TRM: регистр 9.8.

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

INTERRUPT_CORE0_RWBLE_IRQ_MAP_REG — источник RWBLE → прерывание ядра

Смещение 0x0020, адрес 0x600C 2020, после сброса 0x0000 0010. TRM: регистр 9.9.

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

INTERRUPT_CORE0_RWBT_NMI_MAP_REG — источник RWBT (NMI) → прерывание ядра

Смещение 0x0024, адрес 0x600C 2024, после сброса 0x0000 0010. TRM: регистр 9.10.

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

INTERRUPT_CORE0_RWBLE_NMI_MAP_REG — источник RWBLE (NMI) → прерывание ядра

Смещение 0x0028, адрес 0x600C 2028, после сброса 0x0000 0010. TRM: регистр 9.11.

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

INTERRUPT_CORE0_I2C_MST_INT_MAP_REG — источник внутреннего I2C-ведущего → прерывание ядра

Смещение 0x002C, адрес 0x600C 202C, после сброса 0x0000 0010. TRM: регистр 9.12.

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

INTERRUPT_CORE0_UHCI0_INTR_MAP_REG — источник UHCI0 → прерывание ядра

Смещение 0x0038, адрес 0x600C 2038, после сброса 0x0000 0010. TRM: регистр 9.13.

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

INTERRUPT_CORE0_GPIO_INTERRUPT_PRO_MAP_REG — источник GPIO → прерывание ядра

Смещение 0x0040, адрес 0x600C 2040, после сброса 0x0000 0010. TRM: регистр 9.14 (INTERRUPT_CORE0_GPIO_INTERRUPT_CPU_MAP_REG).

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

INTERRUPT_CORE0_GPIO_INTERRUPT_PRO_NMI_MAP_REG — источник GPIO (NMI) → прерывание ядра

Смещение 0x0044, адрес 0x600C 2044, после сброса 0x0000 0010. TRM: регистр 9.15 (INTERRUPT_CORE0_GPIO_INTERRUPT_CPU_NMI_MAP_REG).

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

INTERRUPT_CORE0_SPI_INTR_n_MAP_REG — источник SPI n → прерывание ядра

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

Копии 1…3: по перечислению источников ESP-IDF (soc/interrupts.h) это SPI1, SPI2 и SPI3; источник SPI1 относится к флеш-памяти.

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

INTERRUPT_CORE0_LCD_CAM_INT_MAP_REG — источник LCD_CAM → прерывание ядра

Смещение 0x0060, адрес 0x600C 2060, после сброса 0x0000 0010. TRM: регистр 9.19.

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

INTERRUPT_CORE0_I2Sn_INT_MAP_REG — источник I2S n → прерывание ядра

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

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

INTERRUPT_CORE0_UART_INTR_MAP_REG — источник UART0 → прерывание ядра

Смещение 0x006C, адрес 0x600C 206C, после сброса 0x0000 0010. TRM: регистр 9.22.

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

INTERRUPT_CORE0_UARTn_INTR_MAP_REG — источник UART n → прерывание ядра

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

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

INTERRUPT_CORE0_SDIO_HOST_INTERRUPT_MAP_REG — источник SD/MMC-хоста → прерывание ядра

Смещение 0x0078, адрес 0x600C 2078, после сброса 0x0000 0010. TRM: регистр 9.25.

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

INTERRUPT_CORE0_PWMn_INTR_MAP_REG — источник MCPWM n → прерывание ядра

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

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

INTERRUPT_CORE0_LEDC_INT_MAP_REG — источник LEDC → прерывание ядра

Смещение 0x008C, адрес 0x600C 208C, после сброса 0x0000 0010. TRM: регистр 9.28.

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

INTERRUPT_CORE0_EFUSE_INT_MAP_REG — источник eFuse → прерывание ядра

Смещение 0x0090, адрес 0x600C 2090, после сброса 0x0000 0010. TRM: регистр 9.29.

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

INTERRUPT_CORE0_CAN_INT_MAP_REG — источник TWAI → прерывание ядра

Смещение 0x0094, адрес 0x600C 2094, после сброса 0x0000 0010. TRM: регистр 9.30 (INTERRUPT_CORE0_TWAI_INT_MAP_REG).

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

INTERRUPT_CORE0_USB_INTR_MAP_REG — источник USB OTG → прерывание ядра

Смещение 0x0098, адрес 0x600C 2098, после сброса 0x0000 0010. TRM: регистр 9.31.

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

INTERRUPT_CORE0_RTC_CORE_INTR_MAP_REG — источник RTC_CNTL → прерывание ядра

Смещение 0x009C, адрес 0x600C 209C, после сброса 0x0000 0010. TRM: регистр 9.32.

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

INTERRUPT_CORE0_RMT_INTR_MAP_REG — источник RMT → прерывание ядра

Смещение 0x00A0, адрес 0x600C 20A0, после сброса 0x0000 0010. TRM: регистр 9.33.

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

INTERRUPT_CORE0_PCNT_INTR_MAP_REG — источник PCNT → прерывание ядра

Смещение 0x00A4, адрес 0x600C 20A4, после сброса 0x0000 0010. TRM: регистр 9.34.

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

INTERRUPT_CORE0_I2C_EXTn_INTR_MAP_REG — источник I2C n → прерывание ядра

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

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

INTERRUPT_CORE0_TG_Tn_INT_MAP_REG — источник таймера Tn группы TIMG0 → прерывание ядра

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

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

INTERRUPT_CORE0_TG_WDT_INT_MAP_REG — источник сторожа группы TIMG0 → прерывание ядра

Смещение 0x00D0, адрес 0x600C 20D0, после сброса 0x0000 0010. TRM: регистр 9.39.

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

INTERRUPT_CORE0_TG1_Tn_INT_MAP_REG — источник таймера Tn группы TIMG1 → прерывание ядра

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

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

INTERRUPT_CORE0_TG1_WDT_INT_MAP_REG — источник сторожа группы TIMG1 → прерывание ядра

Смещение 0x00DC, адрес 0x600C 20DC, после сброса 0x0000 0010. TRM: регистр 9.42.

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

INTERRUPT_CORE0_CACHE_IA_INT_MAP_REG — источник недопустимого доступа к кэшу → прерывание ядра

Смещение 0x00E0, адрес 0x600C 20E0, после сброса 0x0000 0010. TRM: регистр 9.43.

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

INTERRUPT_CORE0_SYSTIMER_TARGETn_INT_MAP_REG — источник компаратора n системного таймера → прерывание ядра

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

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

INTERRUPT_CORE0_SPI_MEM_REJECT_INTR_MAP_REG — источник отказа доступа SPI0 и SPI1 → прерывание ядра

Смещение 0x00F0, адрес 0x600C 20F0, после сброса 0x0000 0010. TRM: регистр 9.47.

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

INTERRUPT_CORE0_DCACHE_PRELOAD_INT_MAP_REG — источник предзагрузки кэша данных → прерывание ядра

Смещение 0x00F4, адрес 0x600C 20F4, после сброса 0x0000 0010. TRM: регистр 9.48.

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

INTERRUPT_CORE0_ICACHE_PRELOAD_INT_MAP_REG — источник предзагрузки кэша инструкций → прерывание ядра

Смещение 0x00F8, адрес 0x600C 20F8, после сброса 0x0000 0010. TRM: регистр 9.49.

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

INTERRUPT_CORE0_DCACHE_SYNC_INT_MAP_REG — источник синхронизации кэша данных → прерывание ядра

Смещение 0x00FC, адрес 0x600C 20FC, после сброса 0x0000 0010. TRM: регистр 9.50.

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

INTERRUPT_CORE0_ICACHE_SYNC_INT_MAP_REG — источник синхронизации кэша инструкций → прерывание ядра

Смещение 0x0100, адрес 0x600C 2100, после сброса 0x0000 0010. TRM: регистр 9.51.

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

INTERRUPT_CORE0_APB_ADC_INT_MAP_REG — источник APB_SARADC → прерывание ядра

Смещение 0x0104, адрес 0x600C 2104, после сброса 0x0000 0010. TRM: регистр 9.52.

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

INTERRUPT_CORE0_DMA_IN_CHn_INT_MAP_REG — источник приёмного канала n GDMA → прерывание ядра

5 копий, n = 0…4: смещение 0x0108 + n · 0x0004, после сброса 0x0000 0010. TRM: регистр 9.53.

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

INTERRUPT_CORE0_DMA_OUT_CHn_INT_MAP_REG — источник передающего канала n GDMA → прерывание ядра

5 копий, n = 0…4: смещение 0x011C + n · 0x0004, после сброса 0x0000 0010. TRM: регистр 9.58.

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

INTERRUPT_CORE0_RSA_INT_MAP_REG — источник ускорителя RSA → прерывание ядра

Смещение 0x0130, адрес 0x600C 2130, после сброса 0x0000 0010. TRM: регистр 9.63.

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

INTERRUPT_CORE0_AES_INT_MAP_REG — источник ускорителя AES → прерывание ядра

Смещение 0x0134, адрес 0x600C 2134, после сброса 0x0000 0010. TRM: регистр 9.64.

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

INTERRUPT_CORE0_SHA_INT_MAP_REG — источник ускорителя SHA → прерывание ядра

Смещение 0x0138, адрес 0x600C 2138, после сброса 0x0000 0010. TRM: регистр 9.65.

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

INTERRUPT_CORE0_CPU_INTR_FROM_CPU_n_MAP_REG — программное межъядерное прерывание n → прерывание ядра

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

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

INTERRUPT_CORE0_DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR_MAP_REG — нарушение прав доступа GDMA → прерывание ядра

Смещение 0x0150, адрес 0x600C 2150, после сброса 0x0000 0010. TRM: регистр 9.70.

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

INTERRUPT_CORE0_CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP_REG — ядро 0: нарушение прав доступа к IRAM → прерывание ядра

Смещение 0x0154, адрес 0x600C 2154, после сброса 0x0000 0010. TRM: регистр 9.71.

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

INTERRUPT_CORE0_CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP_REG — ядро 0: нарушение прав доступа к DRAM → прерывание ядра

Смещение 0x0158, адрес 0x600C 2158, после сброса 0x0000 0010. TRM: регистр 9.72.

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

INTERRUPT_CORE0_CORE_n_PIF_PMS_MONITOR_VIOLATE_INTR_MAP_REG — ядро n: нарушение прав доступа к периферии → прерывание ядра

2 копии, n = 0, 1: смещение 0x015C + n · 0x0010, после сброса 0x0000 0010. TRM: регистр 9.73.

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

INTERRUPT_CORE0_CORE_n_PIF_PMS_MONITOR_VIOLATE_SIZE_INTR_MAP_REG — ядро n: нарушение размера доступа к периферии → прерывание ядра

2 копии, n = 0, 1: смещение 0x0160 + n · 0x0010, после сброса 0x0000 0010. TRM: регистр 9.74.

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

INTERRUPT_CORE0_CORE_1_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP_REG — ядро 1: нарушение прав доступа к IRAM → прерывание ядра

Смещение 0x0164, адрес 0x600C 2164, после сброса 0x0000 0010. TRM: регистр 9.75.

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

INTERRUPT_CORE0_CORE_1_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP_REG — ядро 1: нарушение прав доступа к DRAM → прерывание ядра

Смещение 0x0168, адрес 0x600C 2168, после сброса 0x0000 0010. TRM: регистр 9.76.

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

INTERRUPT_CORE0_BACKUP_PMS_VIOLATE_INTR_MAP_REG — нарушение прав доступа модуля сохранения → прерывание ядра

Смещение 0x0174, адрес 0x600C 2174, после сброса 0x0000 0010. TRM: регистр 9.79.

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

INTERRUPT_CORE0_CACHE_COREn_ACS_INT_MAP_REG — ядро n: ошибка доступа к кэшу → прерывание ядра

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

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

INTERRUPT_CORE0_USB_DEVICE_INT_MAP_REG — источник USB Serial/JTAG → прерывание ядра

Смещение 0x0180, адрес 0x600C 2180, после сброса 0x0000 0010. TRM: регистр 9.82.

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

INTERRUPT_CORE0_PERI_BACKUP_INT_MAP_REG — источник модуля сохранения периферии → прерывание ядра

Смещение 0x0184, адрес 0x600C 2184, после сброса 0x0000 0010. TRM: регистр 9.83.

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

INTERRUPT_CORE0_DMA_EXTMEM_REJECT_INT_MAP_REG — отказ доступа GDMA к внешней памяти → прерывание ядра

Смещение 0x0188, адрес 0x600C 2188, после сброса 0x0000 0010. TRM: регистр 9.84.

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

INTERRUPT_CORE0_INTR_STATUS_n_REG — текущее состояние источников, группа n из 32

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

ПолеБитыДоступСбросНазначение
INTR_STATUS_n31:0RO0x0000 0000Бит на источник по таблице 9.3-1 TRM: 1 — источник выставил прерывание

INTERRUPT_CORE0_CLOCK_GATE_REG — тактирование регистров

Смещение 0x019C, адрес 0x600C 219C, после сброса 0x0000 0001. TRM: регистр 9.89.

ПолеБитыДоступСбросНазначение
CLK_EN0R/W11 — такт регистров включён

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

Смещение 0x07FC, адрес 0x600C 27FC, после сброса 0x0201 2300. TRM: регистр 9.90.

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

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

Как вручную подключить прерывание UART0 ESP32-S3 к ядру 0?

Записать номер свободного периферийного прерывания ядра, например 17 (по уровню, приоритет 1), в INTERRUPT_CORE0_UART_INTR_MAP_REG и разрешить это прерывание в регистре INTENABLE ядра. Чтобы отключить источник, в тот же регистр записывают номер внутреннего прерывания, например 6 (раздел 9.3.3.3 TRM).

Почему после сброса все MAP-регистры ESP32-S3 равны 16?

Значение 16 после сброса — номер внутреннего прерывания (таймер 2 ядра), к которому периферийные источники не подключаются. Поэтому все источники после сброса отключены, пока программа не запишет в регистр номер периферийного прерывания.

Источники

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

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

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

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