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

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

Регистры контроллера eFuse ESP32-S3 для чтения: копии блоков однократно программируемой памяти — запреты и системные настройки BLOCK0, MAC-адрес BLOCK1, пользовательские данные BLOCK3, ключи BLOCK4–9 — и регистры ошибок, тактирования и команд. Регистры программирования на этой странице не показаны.

eFuse ESP32-S3 — 4 Кбит однократно программируемой памяти в 11 блоках: BLOCK0 — 640 бит, BLOCK1 — 288, BLOCK2…10 — по 352 бита с кодом коррекции. Контроллер по адресу 0x6000 7000 при сбросе копирует их в регистры EFUSE_RD_*. Чтобы перечитать после программирования, записывают 0x5AA5 в OP_CODE регистра EFUSE_CONF_REG, затем 1 в READ_CMD регистра EFUSE_CMD_REG и ждут, пока EFUSE_CMD_REG станет 0.

BLOCK0 хранит запреты записи (WR_DIS) и чтения ключевых блоков (RD_DIS), отключение JTAG, USB, режимов загрузки, назначение ключей KEY_PURPOSE_0…5, включение Secure Boot, счётчик шифрования флеш-памяти, задержку RTC-сторожа WDT_DELAY_SEL и выбор питания выводов. Каждый бит BLOCK0, кроме WR_DIS, записан в четырёх копиях; ошибки копий видны в RD_REPEAT_ERR0…4.

BLOCK1 — MAC-адрес и настройки выводов флеш-памяти, BLOCK2 — системные данные, BLOCK3 — данные пользователя, BLOCK4…9 — ключи KEY0…KEY5, BLOCK10 — системные данные. Блоки 1…10 защищены кодом Рида — Соломона RS(44, 32), который исправляет до 6 байт; результат декодирования — в RD_RS_ERR0 и RS_ERR1. Буфер программирования EFUSE_PGM_DATAn и EFUSE_PGM_CHECK_VALUEn на странице не показан.

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

Пример на C

Чтение MAC и перечитывание eFuse (soc/efuse_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/efuse_reg.h"

uint32_t mac_lo = REG_READ(EFUSE_RD_MAC_SPI_SYS_0_REG);                        // младшие 32 бита
uint32_t mac_hi = REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_1_REG, EFUSE_MAC_1);       // старшие 16

REG_WRITE(EFUSE_CONF_REG, 0x5AA5);                  // код операции чтения
REG_WRITE(EFUSE_CMD_REG, EFUSE_READ_CMD);
while (REG_READ(EFUSE_CMD_REG) != 0) {}             // копии в RD_* обновлены

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

Регистры записи (PGM_DATAn, PGM_CHECK_VALUEn) на этой странице не показаны: она описывает чтение eFuse.

Регистр (ESP-IDF)СмещениеНазначениеПосле сброса
EFUSE_RD_WR_DIS_REG0x002CBLOCK0: запреты записи0x0000 0000
EFUSE_RD_REPEAT_DATA0_REG0x0030BLOCK0: запреты чтения, отключение кэша, JTAG, USB OTG, TWAI0x0000 0000
EFUSE_RD_REPEAT_DATA1_REG0x0034BLOCK0: назначения ключей 0 и 1, отзыв ключей Secure Boot, задержка RWDT0x0000 0000
EFUSE_RD_REPEAT_DATA2_REG0x0038BLOCK0: назначения ключей 2–5, Secure Boot, USB PHY и JTAG0x0000 0000
EFUSE_RD_REPEAT_DATA3_REG0x003CBLOCK0: режимы загрузки, вывод ROM, флеш-память, версия безопасности0x0000 0000
EFUSE_RD_REPEAT_DATA4_REG0x0040BLOCK0: зарезервированные биты0x0000 0000
EFUSE_RD_MAC_SPI_SYS_0_REG0x0044BLOCK1: MAC-адрес, младшие 32 бита0x0000 0000
EFUSE_RD_MAC_SPI_SYS_1_REG0x0048BLOCK1: MAC-адрес, старшие 16 бит, выводы флеш-памяти0x0000 0000
EFUSE_RD_MAC_SPI_SYS_2_REG0x004CBLOCK1: настройки выводов флеш-памяти0x0000 0000
EFUSE_RD_MAC_SPI_SYS_3_REG0x0050BLOCK1: выводы флеш-памяти, версии кристалла и корпуса0x0000 0000
EFUSE_RD_MAC_SPI_SYS_4_REG0x0054BLOCK1: системные данные, биты 8…390x0000 0000
EFUSE_RD_MAC_SPI_SYS_5_REG0x0058BLOCK1: системные данные, биты 40…710x0000 0000
EFUSE_RD_SYS_PART1_DATA0_REG0x005CBLOCK2: уникальный номер, биты 0…310x0000 0000
EFUSE_RD_SYS_PART1_DATA1_REG0x0060BLOCK2: уникальный номер, биты 32…630x0000 0000
EFUSE_RD_SYS_PART1_DATA2_REG0x0064BLOCK2: уникальный номер, биты 64…950x0000 0000
EFUSE_RD_SYS_PART1_DATA3_REG0x0068BLOCK2: уникальный номер, биты 96…1270x0000 0000
EFUSE_RD_SYS_PART1_DATA4_REG0x006CBLOCK2: системные данные0x0000 0000
EFUSE_RD_SYS_PART1_DATA5_REG0x0070BLOCK2: системные данные0x0000 0000
EFUSE_RD_SYS_PART1_DATA6_REG0x0074BLOCK2: системные данные0x0000 0000
EFUSE_RD_SYS_PART1_DATA7_REG0x0078BLOCK2: системные данные0x0000 0000
EFUSE_RD_USR_DATAn_REG0x007C + n · 0x0004BLOCK3: данные пользователя, слово n0x0000 0000
EFUSE_RD_KEY0_DATAn_REG0x009C + n · 0x0004BLOCK4: ключ KEY0, слово n0x0000 0000
EFUSE_RD_KEY1_DATAn_REG0x00BC + n · 0x0004BLOCK5: ключ KEY1, слово n0x0000 0000
EFUSE_RD_KEY2_DATAn_REG0x00DC + n · 0x0004BLOCK6: ключ KEY2, слово n0x0000 0000
EFUSE_RD_KEY3_DATAn_REG0x00FC + n · 0x0004BLOCK7: ключ KEY3, слово n0x0000 0000
EFUSE_RD_KEY4_DATAn_REG0x011C + n · 0x0004BLOCK8: ключ KEY4, слово n0x0000 0000
EFUSE_RD_KEY5_DATAn_REG0x013C + n · 0x0004BLOCK9: ключ KEY5, слово n0x0000 0000
EFUSE_RD_SYS_PART2_DATAn_REG0x015C + n · 0x0004BLOCK10: системные данные, слово n0x0000 0000
EFUSE_RD_REPEAT_ERR0_REG0x017CОшибки копий BLOCK0 к RD_REPEAT_DATA00x0000 0000
EFUSE_RD_REPEAT_ERR1_REG0x0180Ошибки копий BLOCK0 к RD_REPEAT_DATA10x0000 0000
EFUSE_RD_REPEAT_ERR2_REG0x0184Ошибки копий BLOCK0 к RD_REPEAT_DATA20x0000 0000
EFUSE_RD_REPEAT_ERR3_REG0x0188Ошибки копий BLOCK0 к RD_REPEAT_DATA30x0000 0000
EFUSE_RD_REPEAT_ERR4_REG0x0190Ошибки копий BLOCK0 к RD_REPEAT_DATA40x0000 0000
EFUSE_RD_RS_ERR0_REG0x01C0Ошибки RS-кода: BLOCK1, BLOCK2, BLOCK3, KEY0…KEY40x0000 0000
EFUSE_RD_RS_ERR1_REG0x01C4Ошибки RS-кода: KEY5 и BLOCK100x0000 0000
EFUSE_CLK_REG0x01C8Тактирование и питание памяти eFuse0x0000 0002
EFUSE_CONF_REG0x01CCКод операции: чтение или программирование0x0000 0000
EFUSE_STATUS_REG0x01D0Состояние автомата и ошибки программирования BLOCK00x0000 0000
EFUSE_CMD_REG0x01D4Команды чтения и программирования, номер блока0x0000 0000
EFUSE_INT_RAW_REG0x01D8Необработанные флаги прерываний0x0000 0000
EFUSE_INT_ST_REG0x01DCФлаги прерываний после маски разрешения0x0000 0000
EFUSE_INT_ENA_REG0x01E0Разрешение прерываний0x0000 0000
EFUSE_INT_CLR_REG0x01E4Сброс флагов прерываний записью 10x0000 0000
EFUSE_DAC_CONF_REG0x01E8Напряжение программирования0x0001 FE1C
EFUSE_RD_TIM_CONF_REG0x01ECТайминг чтения0x1200 0000
EFUSE_WR_TIM_CONF1_REG0x01F4Тайминг программирования: включение питания0x0028 8000
EFUSE_WR_TIM_CONF2_REG0x01F8Тайминг программирования: выключение питания0x0000 0190
EFUSE_DATE_REG0x01FCВерсия блока: дата ревизии аппаратуры0x0200 3310

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

EFUSE_RD_WR_DIS_REG — bLOCK0: запреты записи

Смещение 0x002C, адрес 0x6000 702C, после сброса 0x0000 0000. TRM: регистр 5.12.

ПолеБитыДоступСбросНазначение
WR_DIS31:0RO0x0000 0000Бит на группу параметров: 1 — программирование запрещено

EFUSE_RD_REPEAT_DATA0_REG — bLOCK0: запреты чтения, отключение кэша, JTAG, USB OTG, TWAI

Смещение 0x0030, адрес 0x6000 7030, после сброса 0x0000 0000. TRM: регистр 5.13.

31302928272625242322212019181716
—EXT_PHY_ENABLEUSB_EXCHG_PINS—DIS_DOWNLOAD_MANUAL_ENCRYPTDIS_PAD_JTAGSOFT_DIS_JTAG
1514131211109876543210
DIS_APP_CPUDIS_TWAIDIS_USB_OTGDIS_FORCE_DOWNLOADDIS_DOWNLOAD_DCACHEDIS_DOWNLOAD_ICACHEDIS_DCACHEDIS_ICACHERPT4_RESERVED3RD_DIS
ПолеБитыДоступСбросНазначение
EXT_PHY_ENABLE26RO01 — внешний USB PHY
USB_EXCHG_PINS25RO01 — выводы D+ и D− USB переставлены
DIS_DOWNLOAD_MANUAL_ENCRYPT20RO0
DIS_PAD_JTAG19RO01 — JTAG на выводах выключен навсегда
SOFT_DIS_JTAG18:16RO0x0Нечётное число единиц — JTAG выключен программно
DIS_APP_CPU15RO01 — второе ядро выключено
DIS_TWAI14RO01 — TWAI выключен
DIS_USB_OTG13RO01 — USB OTG выключен
DIS_FORCE_DOWNLOAD12RO01 — запрещён принудительный вход в режим загрузки
DIS_DOWNLOAD_DCACHE11RO0
DIS_DOWNLOAD_ICACHE10RO0
DIS_DCACHE9RO01 — кэш данных выключен
DIS_ICACHE8RO01 — кэш инструкций выключен
RPT4_RESERVED37RO0
RD_DIS6:0RO0x00Бит на блок 4…10: 1 — чтение блока программой запрещено

EFUSE_RD_REPEAT_DATA1_REG — bLOCK0: назначения ключей 0 и 1, отзыв ключей Secure Boot, задержка RWDT

Смещение 0x0034, адрес 0x6000 7034, после сброса 0x0000 0000. TRM: регистр 5.14.

31302928272625242322212019181716
KEY_PURPOSE_1KEY_PURPOSE_0SECURE_BOOT_KEY_REVOKE2SECURE_BOOT_KEY_REVOKE1SECURE_BOOT_KEY_REVOKE0SPI_BOOT_CRYPT_CNTWDT_DELAY_SEL
1514131211109876543210
—VDD_SPI_FORCEVDD_SPI_TIEHVDD_SPI_XPD—
ПолеБитыДоступСбросНазначение
KEY_PURPOSE_131:28RO0x0Назначение ключа KEY1
KEY_PURPOSE_027:24RO0x0Назначение ключа KEY0
SECURE_BOOT_KEY_REVOKE223RO0
SECURE_BOOT_KEY_REVOKE122RO0
SECURE_BOOT_KEY_REVOKE021RO0
SPI_BOOT_CRYPT_CNT20:18RO0x0Счётчик включения шифрования флеш-памяти
WDT_DELAY_SEL17:16RO0x0Множитель длительности стадии 0 RTC-сторожа
VDD_SPI_FORCE6RO0
VDD_SPI_TIEH5RO0
VDD_SPI_XPD4RO0

EFUSE_RD_REPEAT_DATA2_REG — bLOCK0: назначения ключей 2–5, Secure Boot, USB PHY и JTAG

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

31302928272625242322212019181716
FLASH_TPUW—USB_PHY_SELSTRAP_JTAG_SELDIS_USB_SERIAL_JTAGDIS_USB_JTAGSECURE_BOOT_AGGRESSIVE_REVOKESECURE_BOOT_ENRPT4_RESERVED0
1514131211109876543210
KEY_PURPOSE_5KEY_PURPOSE_4KEY_PURPOSE_3KEY_PURPOSE_2
ПолеБитыДоступСбросНазначение
FLASH_TPUW31:28RO0x0Ожидание флеш-памяти после включения питания, мс
USB_PHY_SEL25RO0Какой контроллер получает встроенный USB PHY
STRAP_JTAG_SEL24RO0
DIS_USB_SERIAL_JTAG23RO01 — USB Serial/JTAG выключен
DIS_USB_JTAG22RO0
SECURE_BOOT_AGGRESSIVE_REVOKE21RO0
SECURE_BOOT_EN20RO01 — Secure Boot включён
RPT4_RESERVED019:16RO0x0
KEY_PURPOSE_515:12RO0x0
KEY_PURPOSE_411:8RO0x0
KEY_PURPOSE_37:4RO0x0
KEY_PURPOSE_23:0RO0x0

EFUSE_RD_REPEAT_DATA3_REG — bLOCK0: режимы загрузки, вывод ROM, флеш-память, версия безопасности

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

31302928272625242322212019181716
DIS_USB_OTG_DOWNLOAD_MODE—SECURE_VERSION
1514131211109876543210
SECURE_VERSIONFORCE_SEND_RESUMEFLASH_ECC_ENFLASH_PAGE_SIZEFLASH_TYPEPIN_POWER_SELECTIONUART_PRINT_CONTROLENABLE_SECURITY_DOWNLOADDIS_USB_SERIAL_JTAG_DOWNLOAD_MODEFLASH_ECC_MODEDIS_USB_PRINTDIS_LEGACY_SPI_BOOTDIS_DOWNLOAD_MODE
ПолеБитыДоступСбросНазначение
DIS_USB_OTG_DOWNLOAD_MODE31RO0
SECURE_VERSION29:14RO0x0000Версия безопасности для защиты от отката прошивки
FORCE_SEND_RESUME13RO0
FLASH_ECC_EN12RO0
FLASH_PAGE_SIZE11:10RO0x0Страница флеш-памяти: 0 — 256 байт, 1 — 512, 2 — 1 КБ, 3 — 2 КБ
FLASH_TYPE9RO0Линий данных флеш-памяти: 0 — четыре, 1 — восемь
PIN_POWER_SELECTION8RO0Питание GPIO33…37, GPIO47 и GPIO48
UART_PRINT_CONTROL7:6RO0x0Вывод сообщений ROM в UART при загрузке
ENABLE_SECURITY_DOWNLOAD5RO0
DIS_USB_SERIAL_JTAG_DOWNLOAD_MODE4RO0
FLASH_ECC_MODE3RO0
DIS_USB_PRINT2RO0
DIS_LEGACY_SPI_BOOT1RO0
DIS_DOWNLOAD_MODE0RO01 — режим загрузки запрещён

EFUSE_RD_REPEAT_DATA4_REG — bLOCK0: зарезервированные биты

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

ПолеБитыДоступСброс
RPT4_RESERVED223:0RO0x000000

EFUSE_RD_MAC_SPI_SYS_0_REG — bLOCK1: MAC-адрес, младшие 32 бита

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

ПолеБитыДоступСбросНазначение
MAC_031:0RO0x0000 0000Младшие 32 бита MAC-адреса

EFUSE_RD_MAC_SPI_SYS_1_REG — bLOCK1: MAC-адрес, старшие 16 бит, выводы флеш-памяти

Смещение 0x0048, адрес 0x6000 7048, после сброса 0x0000 0000. TRM: регистр 5.19.

31302928272625242322212019181716
SPI_PAD_CONF_0
1514131211109876543210
MAC_1
ПолеБитыДоступСбросНазначение
SPI_PAD_CONF_031:16RO0x0000
MAC_115:0RO0x0000Старшие 16 бит MAC-адреса

EFUSE_RD_MAC_SPI_SYS_2_REG — bLOCK1: настройки выводов флеш-памяти

Смещение 0x004C, адрес 0x6000 704C, после сброса 0x0000 0000. TRM: регистр 5.20.

ПолеБитыДоступСброс
SPI_PAD_CONF_131:0RO0x0000 0000

EFUSE_RD_MAC_SPI_SYS_3_REG — bLOCK1: выводы флеш-памяти, версии кристалла и корпуса

Смещение 0x0050, адрес 0x6000 7050, после сброса 0x0000 0000. TRM: регистр 5.21.

TRM делит биты 23:18 на PKG_VERSION и WAFER_VERSION, SVD объединяет биты 31:18 в одно поле SYS_DATA_PART0_0; страница следует TRM. В ESP-IDF биты 20:18 называются WAFER_VERSION_MINOR_LO, биты 26:24 — BLK_VERSION_MINOR.

31302928272625242322212019181716
SYS_DATA_PART0_0PKG_VERSIONWAFER_VERSIONSPI_PAD_CONF_2
1514131211109876543210
SPI_PAD_CONF_2
ПолеБитыДоступСбросНазначение
SYS_DATA_PART0_031:24RO0x00Системные данные, биты 0…7 (в ESP-IDF здесь BLK_VERSION_MINOR и другие поля)
PKG_VERSION23:21RO0x0Версия корпуса
WAFER_VERSION20:18RO0x0Версия кристалла (WAFER_VERSION_MINOR_LO в ESP-IDF)
SPI_PAD_CONF_217:0RO0x00000

EFUSE_RD_MAC_SPI_SYS_4_REG — bLOCK1: системные данные, биты 8…39

Смещение 0x0054, адрес 0x6000 7054, после сброса 0x0000 0000. TRM: регистр 5.22.

ПолеБитыДоступСброс
SYS_DATA_PART0_131:0RO0x0000 0000

EFUSE_RD_MAC_SPI_SYS_5_REG — bLOCK1: системные данные, биты 40…71

Смещение 0x0058, адрес 0x6000 7058, после сброса 0x0000 0000. TRM: регистр 5.23.

ПолеБитыДоступСброс
SYS_DATA_PART0_231:0RO0x0000 0000

EFUSE_RD_SYS_PART1_DATA0_REG — bLOCK2: уникальный номер, биты 0…31

Смещение 0x005C, адрес 0x6000 705C, после сброса 0x0000 0000. TRM: регистр 5.24.

ПолеБитыДоступСброс
OPTIONAL_UNIQUE_ID_031:0RO0x0000 0000

EFUSE_RD_SYS_PART1_DATA1_REG — bLOCK2: уникальный номер, биты 32…63

Смещение 0x0060, адрес 0x6000 7060, после сброса 0x0000 0000. TRM: регистр 5.25.

ПолеБитыДоступСброс
OPTIONAL_UNIQUE_ID_131:0RO0x0000 0000

EFUSE_RD_SYS_PART1_DATA2_REG — bLOCK2: уникальный номер, биты 64…95

Смещение 0x0064, адрес 0x6000 7064, после сброса 0x0000 0000. TRM: регистр 5.26.

ПолеБитыДоступСброс
OPTIONAL_UNIQUE_ID_231:0RO0x0000 0000

EFUSE_RD_SYS_PART1_DATA3_REG — bLOCK2: уникальный номер, биты 96…127

Смещение 0x0068, адрес 0x6000 7068, после сброса 0x0000 0000. TRM: регистр 5.27.

ПолеБитыДоступСброс
OPTIONAL_UNIQUE_ID_331:0RO0x0000 0000

EFUSE_RD_SYS_PART1_DATA4_REG — bLOCK2: системные данные

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

ПолеБитыДоступСброс
SYS_DATA_PART1_031:0RO0x0000 0000

EFUSE_RD_SYS_PART1_DATA5_REG — bLOCK2: системные данные

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

ПолеБитыДоступСброс
SYS_DATA_PART1_131:0RO0x0000 0000

EFUSE_RD_SYS_PART1_DATA6_REG — bLOCK2: системные данные

Смещение 0x0074, адрес 0x6000 7074, после сброса 0x0000 0000. TRM: регистр 5.30.

ПолеБитыДоступСброс
SYS_DATA_PART1_231:0RO0x0000 0000

EFUSE_RD_SYS_PART1_DATA7_REG — bLOCK2: системные данные

Смещение 0x0078, адрес 0x6000 7078, после сброса 0x0000 0000. TRM: регистр 5.31.

ПолеБитыДоступСброс
SYS_DATA_PART1_331:0RO0x0000 0000

EFUSE_RD_USR_DATAn_REG — bLOCK3: данные пользователя, слово n

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

ПолеБитыДоступСброс
USR_DATAn31:0RO0x0000 0000

EFUSE_RD_KEY0_DATAn_REG — bLOCK4: ключ KEY0, слово n

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

ПолеБитыДоступСброс
KEY0_DATAn31:0RO0x0000 0000

EFUSE_RD_KEY1_DATAn_REG — bLOCK5: ключ KEY1, слово n

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

ПолеБитыДоступСброс
KEY1_DATAn31:0RO0x0000 0000

EFUSE_RD_KEY2_DATAn_REG — bLOCK6: ключ KEY2, слово n

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

ПолеБитыДоступСброс
KEY2_DATAn31:0RO0x0000 0000

EFUSE_RD_KEY3_DATAn_REG — bLOCK7: ключ KEY3, слово n

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

ПолеБитыДоступСброс
KEY3_DATAn31:0RO0x0000 0000

EFUSE_RD_KEY4_DATAn_REG — bLOCK8: ключ KEY4, слово n

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

ПолеБитыДоступСброс
KEY4_DATAn31:0RO0x0000 0000

EFUSE_RD_KEY5_DATAn_REG — bLOCK9: ключ KEY5, слово n

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

ПолеБитыДоступСброс
KEY5_DATAn31:0RO0x0000 0000

EFUSE_RD_SYS_PART2_DATAn_REG — bLOCK10: системные данные, слово n

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

ПолеБитыДоступСброс
SYS_DATA_PART2_n31:0RO0x0000 0000

EFUSE_RD_REPEAT_ERR0_REG — ошибки копий BLOCK0 к RD_REPEAT_DATA0

Смещение 0x017C, адрес 0x6000 717C, после сброса 0x0000 0000. TRM: регистр 5.96.

31302928272625242322212019181716
—EXT_PHY_ENABLE_ERRUSB_EXCHG_PINS_ERR—DIS_DOWNLOAD_MANUAL_ENCRYPT_ERRDIS_PAD_JTAG_ERRSOFT_DIS_JTAG_ERR
1514131211109876543210
DIS_APP_CPU_ERRDIS_TWAI_ERRDIS_USB_OTG_ERRDIS_FORCE_DOWNLOAD_ERRDIS_DOWNLOAD_DCACHE_ERRDIS_DOWNLOAD_ICACHE_ERRDIS_DCACHE_ERRDIS_ICACHE_ERRDIS_RTC_RAM_BOOT_ERRRD_DIS_ERR
ПолеБитыДоступСброс
EXT_PHY_ENABLE_ERR26RO0
USB_EXCHG_PINS_ERR25RO0
DIS_DOWNLOAD_MANUAL_ENCRYPT_ERR20RO0
DIS_PAD_JTAG_ERR19RO0
SOFT_DIS_JTAG_ERR18:16RO0x0
DIS_APP_CPU_ERR15RO0
DIS_TWAI_ERR14RO0
DIS_USB_OTG_ERR13RO0
DIS_FORCE_DOWNLOAD_ERR12RO0
DIS_DOWNLOAD_DCACHE_ERR11RO0
DIS_DOWNLOAD_ICACHE_ERR10RO0
DIS_DCACHE_ERR9RO0
DIS_ICACHE_ERR8RO0
DIS_RTC_RAM_BOOT_ERR7RO0
RD_DIS_ERR6:0RO0x00

EFUSE_RD_REPEAT_ERR1_REG — ошибки копий BLOCK0 к RD_REPEAT_DATA1

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

31302928272625242322212019181716
KEY_PURPOSE_1_ERRKEY_PURPOSE_0_ERRSECURE_BOOT_KEY_REVOKE2_ERRSECURE_BOOT_KEY_REVOKE1_ERRSECURE_BOOT_KEY_REVOKE0_ERRSPI_BOOT_CRYPT_CNT_ERRWDT_DELAY_SEL_ERR
1514131211109876543210
—VDD_SPI_FORCE_ERRVDD_SPI_TIEH_ERRVDD_SPI_XPD_ERR—
ПолеБитыДоступСброс
KEY_PURPOSE_1_ERR31:28RO0x0
KEY_PURPOSE_0_ERR27:24RO0x0
SECURE_BOOT_KEY_REVOKE2_ERR23RO0
SECURE_BOOT_KEY_REVOKE1_ERR22RO0
SECURE_BOOT_KEY_REVOKE0_ERR21RO0
SPI_BOOT_CRYPT_CNT_ERR20:18RO0x0
WDT_DELAY_SEL_ERR17:16RO0x0
VDD_SPI_FORCE_ERR6RO0
VDD_SPI_TIEH_ERR5RO0
VDD_SPI_XPD_ERR4RO0

EFUSE_RD_REPEAT_ERR2_REG — ошибки копий BLOCK0 к RD_REPEAT_DATA2

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

31302928272625242322212019181716
FLASH_TPUW_ERR—USB_PHY_SEL_ERRSTRAP_JTAG_SEL_ERRDIS_USB_SERIAL_JTAG_ERRDIS_USB_JTAG_ERRSECURE_BOOT_AGGRESSIVE_REVOKE_ERRSECURE_BOOT_EN_ERRRPT4_RESERVED0_ERR
1514131211109876543210
KEY_PURPOSE_5_ERRKEY_PURPOSE_4_ERRKEY_PURPOSE_3_ERRKEY_PURPOSE_2_ERR
ПолеБитыДоступСброс
FLASH_TPUW_ERR31:28RO0x0
USB_PHY_SEL_ERR25RO0
STRAP_JTAG_SEL_ERR24RO0
DIS_USB_SERIAL_JTAG_ERR23RO0
DIS_USB_JTAG_ERR22RO0
SECURE_BOOT_AGGRESSIVE_REVOKE_ERR21RO0
SECURE_BOOT_EN_ERR20RO0
RPT4_RESERVED0_ERR19:16RO0x0
KEY_PURPOSE_5_ERR15:12RO0x0
KEY_PURPOSE_4_ERR11:8RO0x0
KEY_PURPOSE_3_ERR7:4RO0x0
KEY_PURPOSE_2_ERR3:0RO0x0

EFUSE_RD_REPEAT_ERR3_REG — ошибки копий BLOCK0 к RD_REPEAT_DATA3

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

31302928272625242322212019181716
DIS_USB_OTG_DOWNLOAD_MODE_ERR—SECURE_VERSION_ERR
1514131211109876543210
SECURE_VERSION_ERRFORCE_SEND_RESUME_ERRFLASH_ECC_EN_ERRFLASH_PAGE_SIZE_ERRFLASH_TYPE_ERRPIN_POWER_SELECTION_ERRUART_PRINT_CONTROL_ERRENABLE_SECURITY_DOWNLOAD_ERRDIS_USB_SERIAL_JTAG_DOWNLOAD_MODE_ERRFLASH_ECC_MODE_ERRDIS_USB_PRINT_ERRDIS_LEGACY_SPI_BOOT_ERRDIS_DOWNLOAD_MODE_ERR
ПолеБитыДоступСброс
DIS_USB_OTG_DOWNLOAD_MODE_ERR31RO0
SECURE_VERSION_ERR29:14RO0x0000
FORCE_SEND_RESUME_ERR13RO0
FLASH_ECC_EN_ERR12RO0
FLASH_PAGE_SIZE_ERR11:10RO0x0
FLASH_TYPE_ERR9RO0
PIN_POWER_SELECTION_ERR8RO0
UART_PRINT_CONTROL_ERR7:6RO0x0
ENABLE_SECURITY_DOWNLOAD_ERR5RO0
DIS_USB_SERIAL_JTAG_DOWNLOAD_MODE_ERR4RO0
FLASH_ECC_MODE_ERR3RO0
DIS_USB_PRINT_ERR2RO0
DIS_LEGACY_SPI_BOOT_ERR1RO0
DIS_DOWNLOAD_MODE_ERR0RO0

EFUSE_RD_REPEAT_ERR4_REG — ошибки копий BLOCK0 к RD_REPEAT_DATA4

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

ПолеБитыДоступСброс
RPT4_RESERVED2_ERR23:0RO0x000000

EFUSE_RD_RS_ERR0_REG — ошибки RS-кода: BLOCK1, BLOCK2, BLOCK3, KEY0…KEY4

Смещение 0x01C0, адрес 0x6000 71C0, после сброса 0x0000 0000. TRM: регистр 5.101.

Рисунок 5.101 TRM в текстовом виде противоречив: флаг KEY4_FAIL и MAC_SPI_8M_FAIL оба в бите 3, бита 7 нет. Показаны поля SVD, совпадающие с ESP-IDF v6.1: флаг *_FAIL каждого блока лежит сразу над его счётчиком *_ERR_NUM.

31302928272625242322212019181716
KEY4_FAILKEY4_ERR_NUMKEY3_FAILKEY3_ERR_NUMKEY2_FAILKEY2_ERR_NUMKEY1_FAILKEY1_ERR_NUM
1514131211109876543210
KEY0_FAILKEY0_ERR_NUMUSR_DATA_FAILUSR_DATA_ERR_NUMSYS_PART1_FAILSYS_PART1_NUMMAC_SPI_8M_FAILMAC_SPI_8M_ERR_NUM
ПолеБитыДоступСбросНазначение
KEY4_FAIL31RO0
KEY4_ERR_NUM30:28RO0x0
KEY3_FAIL27RO0
KEY3_ERR_NUM26:24RO0x0
KEY2_FAIL23RO0
KEY2_ERR_NUM22:20RO0x0
KEY1_FAIL19RO0
KEY1_ERR_NUM18:16RO0x0
KEY0_FAIL15RO0
KEY0_ERR_NUM14:12RO0x0
USR_DATA_FAIL11RO01 — данные BLOCK3 недостоверны
USR_DATA_ERR_NUM10:8RO0x0Число исправленных байтов BLOCK3
SYS_PART1_FAIL7RO01 — данные BLOCK2 недостоверны
SYS_PART1_NUM6:4RO0x0Число исправленных байтов BLOCK2
MAC_SPI_8M_FAIL3RO01 — данные BLOCK1 недостоверны
MAC_SPI_8M_ERR_NUM2:0RO0x0Число исправленных байтов BLOCK1

EFUSE_RD_RS_ERR1_REG — ошибки RS-кода: KEY5 и BLOCK10

Смещение 0x01C4, адрес 0x6000 71C4, после сброса 0x0000 0000. TRM: регистр 5.102.

1514131211109876543210
—SYS_PART2_FAILSYS_PART2_ERR_NUMKEY5_FAILKEY5_ERR_NUM
ПолеБитыДоступСброс
SYS_PART2_FAIL7RO0
SYS_PART2_ERR_NUM6:4RO0x0
KEY5_FAIL3RO0
KEY5_ERR_NUM2:0RO0x0

EFUSE_CLK_REG — тактирование и питание памяти eFuse

Смещение 0x01C8, адрес 0x6000 71C8, после сброса 0x0000 0002. TRM: регистр 5.103.

31302928272625242322212019181716
—CLK_EN
1514131211109876543210
—EFUSE_MEM_FORCE_PUMEM_CLK_FORCE_ONEFUSE_MEM_FORCE_PD
ПолеБитыДоступСброс
CLK_EN16R/W0
EFUSE_MEM_FORCE_PU2R/W0
MEM_CLK_FORCE_ON1R/W1
EFUSE_MEM_FORCE_PD0R/W0

EFUSE_CONF_REG — код операции: чтение или программирование

Смещение 0x01CC, адрес 0x6000 71CC, после сброса 0x0000 0000. TRM: регистр 5.104.

ПолеБитыДоступСбросНазначение
OP_CODE15:0R/W0x0000Код операции: 0x5AA5 — чтение

EFUSE_STATUS_REG — состояние автомата и ошибки программирования BLOCK0

Смещение 0x01D0, адрес 0x6000 71D0, после сброса 0x0000 0000. TRM: регистр 5.110.

31302928272625242322212019181716
—REPEAT_ERR_CNT
1514131211109876543210
REPEAT_ERR_CNT—STATE
ПолеБитыДоступСбросНазначение
REPEAT_ERR_CNT17:10RO0x00Число ошибочных битов при программировании BLOCK0
STATE3:0RO0x0Состояние автомата eFuse

EFUSE_CMD_REG — команды чтения и программирования, номер блока

Смещение 0x01D4, адрес 0x6000 71D4, после сброса 0x0000 0000. TRM: регистр 5.105.

1514131211109876543210
—BLK_NUMPGM_CMDREAD_CMD
ПолеБитыДоступСбросНазначение
BLK_NUM5:2R/W0x0Номер программируемого блока 0…10
PGM_CMD1R/WS/SC0Запись 1 — программирование; сбрасывается по окончании
READ_CMD0R/WS/SC0Запись 1 — перечитать eFuse; сбрасывается по окончании

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

Смещение 0x01D8, адрес 0x6000 71D8, после сброса 0x0000 0000. TRM: регистр 5.111.

1514131211109876543210
—PGM_DONE_INT_RAWREAD_DONE_INT_RAW
ПолеБитыДоступСбросНазначение
PGM_DONE_INT_RAW1R/WC/SS0Программирование закончено
READ_DONE_INT_RAW0R/WC/SS0Чтение eFuse закончено

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

Смещение 0x01DC, адрес 0x6000 71DC, после сброса 0x0000 0000. TRM: регистр 5.112.

1514131211109876543210
—PGM_DONE_INT_STREAD_DONE_INT_ST
ПолеБитыДоступСбросНазначение
PGM_DONE_INT_ST1RO0Программирование закончено
READ_DONE_INT_ST0RO0Чтение eFuse закончено

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

Смещение 0x01E0, адрес 0x6000 71E0, после сброса 0x0000 0000. TRM: регистр 5.113.

1514131211109876543210
—PGM_DONE_INT_ENAREAD_DONE_INT_ENA
ПолеБитыДоступСбросНазначение
PGM_DONE_INT_ENA1R/W0Программирование закончено
READ_DONE_INT_ENA0R/W0Чтение eFuse закончено

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

Смещение 0x01E4, адрес 0x6000 71E4, после сброса 0x0000 0000. TRM: регистр 5.114.

1514131211109876543210
—PGM_DONE_INT_CLRREAD_DONE_INT_CLR
ПолеБитыДоступСбросНазначение
PGM_DONE_INT_CLR1WO0Программирование закончено
READ_DONE_INT_CLR0WO0Чтение eFuse закончено

EFUSE_DAC_CONF_REG — напряжение программирования

Смещение 0x01E8, адрес 0x6000 71E8, после сброса 0x0001 FE1C. TRM: регистр 5.106.

31302928272625242322212019181716
—OE_CLRDAC_NUM
1514131211109876543210
DAC_NUM—DAC_CLK_DIV
ПолеБитыДоступСброс
OE_CLR17R/W0
DAC_NUM16:9R/W0xFF
DAC_CLK_DIV7:0R/W0x1C

EFUSE_RD_TIM_CONF_REG — тайминг чтения

Смещение 0x01EC, адрес 0x6000 71EC, после сброса 0x1200 0000. TRM: регистр 5.107.

ПолеБитыДоступСброс
READ_INIT_NUM31:24R/W0x12

EFUSE_WR_TIM_CONF1_REG — тайминг программирования: включение питания

Смещение 0x01F4, адрес 0x6000 71F4, после сброса 0x0028 8000. TRM: регистр 5.108 (EFUSE_WR_TIME_CONF1_REG).

ПолеБитыДоступСброс
PWR_ON_NUM23:8R/W0x2880

EFUSE_WR_TIM_CONF2_REG — тайминг программирования: выключение питания

Смещение 0x01F8, адрес 0x6000 71F8, после сброса 0x0000 0190. TRM: регистр 5.109.

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

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

Смещение 0x01FC, адрес 0x6000 71FC, после сброса 0x0200 3310. TRM: регистр 5.115.

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

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

Как прочитать MAC-адрес ESP32-S3 из регистров eFuse?

По TRM младшие 32 бита MAC лежат в EFUSE_RD_MAC_SPI_SYS_0_REG (поле MAC_0), старшие 16 — в поле MAC_1 регистра EFUSE_RD_MAC_SPI_SYS_1_REG. Готовый 6-байтный адрес возвращает функция esp_efuse_mac_get_default из mac_addr.c ESP-IDF: она читает поле ESP_EFUSE_MAC_FACTORY функцией esp_efuse_read_field_blob.

Что показывают регистры EFUSE_RD_RS_ERR ESP32-S3?

Для каждого блока 1…10 — число байтов, исправленных кодом RS(44, 32) (поля *_ERR_NUM), и флаг *_FAIL: 1 означает, что ошибок больше шести и данные блока недостоверны. Регистры обновляются при каждом чтении eFuse.

Источники

  1. Espressif. ESP32-S3 Technical Reference Manual, версия 1.8 — глава 5: таблица 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

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