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

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

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

eFuse ESP32-C3 — 4096 бит однократно программируемой памяти в 11 блоках. Контроллер по адресу 0x6000 8800 при сбросе копирует их в регистры EFUSE_RD_*, и программа читает настройки оттуда, не трогая сами перемычки. После программирования новое состояние видно только после команды чтения (бит READ_CMD регистра EFUSE_CMD_REG) или сброса.

BLOCK0 хранит системные параметры: запреты записи и чтения других блоков, отключение JTAG и режима прошивки, назначения ключей KEY_PURPOSE, включение Secure Boot и счётчик шифрования флеш-памяти. BLOCK1 содержит MAC-адрес и настройки выводов флеш-памяти, BLOCK2 — калибровку АЦП и данные производителя, BLOCK3 свободен для пользователя, BLOCK4–9 — шесть 256-битных ключей.

Пережжённый бит вернуть нельзя, поэтому программировать eFuse лучше утилитой espefuse.py, которая проверяет зависимости. Регистры EFUSE_PGM_DATAn и EFUSE_PGM_CHECK_VALUEn — буфер программирования — здесь не описаны.

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

Пример на C

Чтение MAC-адреса из BLOCK1 (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 lo = REG_READ(EFUSE_RD_MAC_SPI_SYS_0_REG);
uint32_t hi = REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_1_REG, EFUSE_MAC_1);
uint8_t mac[6] = { hi >> 8, hi, lo >> 24, lo >> 16, lo >> 8, lo };

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

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

Регистр (ESP-IDF)СмещениеНазначениеПосле сброса
EFUSE_RD_WR_DIS_REG0x002CBLOCK0: запреты записи0x0000 0000
EFUSE_RD_REPEAT_DATA0_REG0x0030BLOCK0: запреты чтения, отключение JTAG, USB и кэша0x0000 0000
EFUSE_RD_REPEAT_DATA1_REG0x0034BLOCK0: назначения ключей 0 и 1, отзыв ключей Secure Boot0x0000 0000
EFUSE_RD_REPEAT_DATA2_REG0x0038BLOCK0: назначения ключей 2–5, включение Secure Boot0x0000 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: системные данные0x0000 0000
EFUSE_RD_MAC_SPI_SYS_5_REG0x0058BLOCK1: системные данные0x0000 0000
EFUSE_RD_SYS_PART1_DATAn_REG0x005C + n · 0x0004BLOCK2: системные данные, слово n0x0000 0000
EFUSE_RD_USR_DATAn_REG0x007C + n · 0x0004BLOCK3: данные пользователя, слово n0x0000 0000
EFUSE_RD_KEY0_DATAn_REG0x009C + n · 0x0004BLOCK4: ключ 0, слово n0x0000 0000
EFUSE_RD_KEY1_DATAn_REG0x00BC + n · 0x0004BLOCK5: ключ 1, слово n0x0000 0000
EFUSE_RD_KEY2_DATAn_REG0x00DC + n · 0x0004BLOCK6: ключ 2, слово n0x0000 0000
EFUSE_RD_KEY3_DATAn_REG0x00FC + n · 0x0004BLOCK7: ключ 3, слово n0x0000 0000
EFUSE_RD_KEY4_DATAn_REG0x011C + n · 0x0004BLOCK8: ключ 4, слово n0x0000 0000
EFUSE_RD_KEY5_DATAn_REG0x013C + n · 0x0004BLOCK9: ключ 5, слово n0x0000 0000
EFUSE_RD_SYS_PART2_DATAn_REG0x015C + n · 0x0004BLOCK10: системные данные, слово n0x0000 0000
EFUSE_RD_REPEAT_ERR0_REG0x017CОшибки программирования BLOCK0, слово 10x0000 0000
EFUSE_RD_REPEAT_ERR1_REG0x0180Ошибки программирования BLOCK0, слово 20x0000 0000
EFUSE_RD_REPEAT_ERR2_REG0x0184Ошибки программирования BLOCK0, слово 30x0000 0000
EFUSE_RD_REPEAT_ERR3_REG0x0188Ошибки программирования BLOCK0, слово 40x0000 0000
EFUSE_RD_REPEAT_ERR4_REG0x0190Ошибки программирования BLOCK0, слово 50x0000 0000
EFUSE_RD_RS_ERR0_REG0x01C0Ошибки кода Рида — Соломона BLOCK1–80x0000 0000
EFUSE_RD_RS_ERR1_REG0x01C4Ошибки кода Рида — Соломона BLOCK9–100x0000 0000
EFUSE_CLK_REG0x01C8Тактирование и питание памяти eFuse0x0000 0002
EFUSE_CONF_REG0x01CCКод операции: чтение или программирование0x0000 0000
EFUSE_STATUS_REG0x01D0Состояние контроллера0x0000 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_REG0x01F0Тайминги программирования: включение питания0x0028 8000
EFUSE_WR_TIM_CONF2_REG0x01F4Тайминги программирования: выключение питания0x0000 0190
EFUSE_DATE_REG0x01FCВерсия блока: дата ревизии аппаратуры0x0200 6300

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

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

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

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

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

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

31302928272625242322212019181716
—VDD_SPI_AS_GPIOUSB_EXCHG_PINS—DIS_DOWNLOAD_MANUAL_ENCRYPTDIS_PAD_JTAGSOFT_DIS_JTAG
1514131211109876543210
JTAG_SEL_ENABLEDIS_TWAIRPT4_RESERVED6DIS_FORCE_DOWNLOADDIS_USB_SERIAL_JTAGDIS_DOWNLOAD_ICACHEDIS_USB_JTAGDIS_ICACHEDIS_RTC_RAM_BOOTRD_DIS
ПолеБитыДоступСбросНазначение
VDD_SPI_AS_GPIO26RO0Вывод VDD_SPI работает как GPIO
USB_EXCHG_PINS25RO0Поменять местами D+ и D− USB
DIS_DOWNLOAD_MANUAL_ENCRYPT20RO0Запретить шифрование флеш-памяти в режиме прошивки
DIS_PAD_JTAG19RO0Отключить JTAG на выводах навсегда
SOFT_DIS_JTAG18:16RO0x0Программное отключение JTAG; снимается модулем HMAC
JTAG_SEL_ENABLE15RO0
DIS_TWAI14RO0Отключить контроллер TWAI (CAN)
RPT4_RESERVED613RO0
DIS_FORCE_DOWNLOAD12RO0Запретить принудительный вход в режим прошивки
DIS_USB_SERIAL_JTAG11RO0Отключить контроллер USB Serial/JTAG
DIS_DOWNLOAD_ICACHE10RO0
DIS_USB_JTAG9RO0Отключить JTAG через USB
DIS_ICACHE8RO0Отключить кэш инструкций
DIS_RTC_RAM_BOOT7RO0
RD_DIS6:0RO0x00Запрет чтения блоков 4–10 программой

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

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

31302928272625242322212019181716
KEY_PURPOSE_1KEY_PURPOSE_0SECURE_BOOT_KEY_REVOKE2SECURE_BOOT_KEY_REVOKE1SECURE_BOOT_KEY_REVOKE0SPI_BOOT_CRYPT_CNTWDT_DELAY_SEL
1514131211109876543210
RPT4_RESERVED2
ПолеБитыДоступСбросНазначение
KEY_PURPOSE_131:28RO0x0Назначение ключа 1
KEY_PURPOSE_027:24RO0x0Назначение ключа 0
SECURE_BOOT_KEY_REVOKE223RO0
SECURE_BOOT_KEY_REVOKE122RO0
SECURE_BOOT_KEY_REVOKE021RO0
SPI_BOOT_CRYPT_CNT20:18RO0x0Шифрование флеш-памяти: нечётное число единиц — включено
WDT_DELAY_SEL17:16RO0x0Порог сторожа RWDT при загрузке
RPT4_RESERVED215:0RO0x0000

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

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

31302928272625242322212019181716
FLASH_TPUWRPT4_RESERVED0SECURE_BOOT_AGGRESSIVE_REVOKESECURE_BOOT_ENRPT4_RESERVED3
1514131211109876543210
KEY_PURPOSE_5KEY_PURPOSE_4KEY_PURPOSE_3KEY_PURPOSE_2
ПолеБитыДоступСбросНазначение
FLASH_TPUW31:28RO0x0Ожидание после включения питания флеш-памяти
RPT4_RESERVED027:22RO0x00
SECURE_BOOT_AGGRESSIVE_REVOKE21RO0Агрессивный отзыв ключей Secure Boot
SECURE_BOOT_EN20RO0Secure Boot включён
RPT4_RESERVED319: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 883C, после сброса 0x0000 0000. TRM: регистр 4.16.

31302928272625242322212019181716
ERR_RST_ENABLERPT4_RESERVED1SECURE_VERSION
1514131211109876543210
SECURE_VERSIONFORCE_SEND_RESUMERPT4_RESERVED5UART_PRINT_CONTROLENABLE_SECURITY_DOWNLOADDIS_USB_SERIAL_JTAG_DOWNLOAD_MODERPT4_RESERVED7USB_PRINT_CHANNELRPT4_RESERVED8DIS_DOWNLOAD_MODE
ПолеБитыДоступСбросНазначение
ERR_RST_ENABLE31RO0
RPT4_RESERVED130RO0
SECURE_VERSION29:14RO0x0000Версия безопасности для защиты от отката прошивки
FORCE_SEND_RESUME13RO0
RPT4_RESERVED512:8RO0x00
UART_PRINT_CONTROL7:6RO0x0Вывод сообщений ПЗУ при загрузке
ENABLE_SECURITY_DOWNLOAD5RO0Безопасный режим прошивки: только ограниченные команды
DIS_USB_SERIAL_JTAG_DOWNLOAD_MODE4RO0
RPT4_RESERVED73RO0
USB_PRINT_CHANNEL2RO0
RPT4_RESERVED81RO0
DIS_DOWNLOAD_MODE0RO0Запретить режим прошивки

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

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

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

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

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

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

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

Смещение 0x0048, адрес 0x6000 8848, после сброса 0x0000 0000. TRM: регистр 4.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 884C, после сброса 0x0000 0000. TRM: регистр 4.20.

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

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

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

31302928272625242322212019181716
SYS_DATA_PART0_0SPI_PAD_CONF_2
1514131211109876543210
SPI_PAD_CONF_2
ПолеБитыДоступСброс
SYS_DATA_PART0_031:18RO0x0000
SPI_PAD_CONF_217:0RO0x00000

EFUSE_RD_MAC_SPI_SYS_4_REG — bLOCK1: системные данные

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

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

EFUSE_RD_MAC_SPI_SYS_5_REG — bLOCK1: системные данные

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EFUSE_RD_REPEAT_ERR0_REG — ошибки программирования BLOCK0, слово 1

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

31302928272625242322212019181716
—VDD_SPI_AS_GPIO_ERRUSB_EXCHG_PINS_ERR—DIS_DOWNLOAD_MANUAL_ENCRYPT_ERRDIS_PAD_JTAG_ERRSOFT_DIS_JTAG_ERR
1514131211109876543210
JTAG_SEL_ENABLE_ERRDIS_TWAI_ERRRPT4_RESERVED6_ERRDIS_FORCE_DOWNLOAD_ERRDIS_USB_SERIAL_JTAG_ERRDIS_DOWNLOAD_ICACHE_ERRDIS_USB_JTAG_ERRDIS_ICACHE_ERRDIS_RTC_RAM_BOOT_ERRRD_DIS_ERR
ПолеБитыДоступСброс
VDD_SPI_AS_GPIO_ERR26RO0
USB_EXCHG_PINS_ERR25RO0
DIS_DOWNLOAD_MANUAL_ENCRYPT_ERR20RO0
DIS_PAD_JTAG_ERR19RO0
SOFT_DIS_JTAG_ERR18:16RO0x0
JTAG_SEL_ENABLE_ERR15RO0
DIS_TWAI_ERR14RO0
RPT4_RESERVED6_ERR13RO0
DIS_FORCE_DOWNLOAD_ERR12RO0
DIS_USB_SERIAL_JTAG_ERR11RO0
DIS_DOWNLOAD_ICACHE_ERR10RO0
DIS_USB_JTAG_ERR9RO0
DIS_ICACHE_ERR8RO0
DIS_RTC_RAM_BOOT_ERR7RO0
RD_DIS_ERR6:0RO0x00

EFUSE_RD_REPEAT_ERR1_REG — ошибки программирования BLOCK0, слово 2

Смещение 0x0180, адрес 0x6000 8980, после сброса 0x0000 0000. TRM: регистр 4.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
RPT4_RESERVED2_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
RPT4_RESERVED2_ERR15:0RO0x0000

EFUSE_RD_REPEAT_ERR2_REG — ошибки программирования BLOCK0, слово 3

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

31302928272625242322212019181716
FLASH_TPUW_ERRRPT4_RESERVED0_ERRSECURE_BOOT_AGGRESSIVE_REVOKE_ERRSECURE_BOOT_EN_ERRRPT4_RESERVED3_ERR
1514131211109876543210
KEY_PURPOSE_5_ERRKEY_PURPOSE_4_ERRKEY_PURPOSE_3_ERRKEY_PURPOSE_2_ERR
ПолеБитыДоступСброс
FLASH_TPUW_ERR31:28RO0x0
RPT4_RESERVED0_ERR27:22RO0x00
SECURE_BOOT_AGGRESSIVE_REVOKE_ERR21RO0
SECURE_BOOT_EN_ERR20RO0
RPT4_RESERVED3_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, слово 4

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

31302928272625242322212019181716
ERR_RST_ENABLE_ERRRPT4_RESERVED1_ERRSECURE_VERSION_ERR
1514131211109876543210
SECURE_VERSION_ERRFORCE_SEND_RESUME_ERRRPT4_RESERVED5_ERRUART_PRINT_CONTROL_ERRENABLE_SECURITY_DOWNLOAD_ERRDIS_USB_SERIAL_JTAG_DOWNLOAD_MODE_ERRRPT4_RESERVED7_ERRUSB_PRINT_CHANNEL_ERRRPT4_RESERVED8_ERRDIS_DOWNLOAD_MODE_ERR
ПолеБитыДоступСброс
ERR_RST_ENABLE_ERR31RO0
RPT4_RESERVED1_ERR30RO0
SECURE_VERSION_ERR29:14RO0x0000
FORCE_SEND_RESUME_ERR13RO0
RPT4_RESERVED5_ERR12:8RO0x00
UART_PRINT_CONTROL_ERR7:6RO0x0
ENABLE_SECURITY_DOWNLOAD_ERR5RO0
DIS_USB_SERIAL_JTAG_DOWNLOAD_MODE_ERR4RO0
RPT4_RESERVED7_ERR3RO0
USB_PRINT_CHANNEL_ERR2RO0
RPT4_RESERVED8_ERR1RO0
DIS_DOWNLOAD_MODE_ERR0RO0

EFUSE_RD_REPEAT_ERR4_REG — ошибки программирования BLOCK0, слово 5

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

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

EFUSE_RD_RS_ERR0_REG — ошибки кода Рида — Соломона BLOCK1–8

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

31302928272625242322212019181716
KEY3_FAILKEY4_ERR_NUMKEY2_FAILKEY3_ERR_NUMKEY1_FAILKEY2_ERR_NUMKEY0_FAILKEY1_ERR_NUM
1514131211109876543210
USR_DATA_FAILKEY0_ERR_NUMSYS_PART1_FAILUSR_DATA_ERR_NUMMAC_SPI_8M_FAILSYS_PART1_NUM—MAC_SPI_8M_ERR_NUM
ПолеБитыДоступСбросНазначение
KEY3_FAIL31RO0
KEY4_ERR_NUM30:28RO0x0
KEY2_FAIL27RO0
KEY3_ERR_NUM26:24RO0x0
KEY1_FAIL23RO0
KEY2_ERR_NUM22:20RO0x0
KEY0_FAIL19RO0
KEY1_ERR_NUM18:16RO0x0
USR_DATA_FAIL15RO0
KEY0_ERR_NUM14:12RO0x0
SYS_PART1_FAIL11RO0
USR_DATA_ERR_NUM10:8RO0x0
MAC_SPI_8M_FAIL7RO0BLOCK1: ошибок больше, чем исправимо
SYS_PART1_NUM6:4RO0x0
MAC_SPI_8M_ERR_NUM2:0RO0x0BLOCK1: число исправленных ошибок

EFUSE_RD_RS_ERR1_REG — ошибки кода Рида — Соломона BLOCK9–10

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

1514131211109876543210
—KEY5_FAILSYS_PART2_ERR_NUMKEY4_FAILKEY5_ERR_NUM
ПолеБитыДоступСброс
KEY5_FAIL7RO0
SYS_PART2_ERR_NUM6:4RO0x0
KEY4_FAIL3RO0
KEY5_ERR_NUM2:0RO0x0

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

Смещение 0x01C8, адрес 0x6000 89C8, после сброса 0x0000 0002. TRM: регистр 4.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 89CC, после сброса 0x0000 0000. TRM: регистр 4.104.

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

EFUSE_STATUS_REG — состояние контроллера

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

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

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

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

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

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

Смещение 0x01D8, адрес 0x6000 89D8, после сброса 0x0000 0000. TRM: регистр 4.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 89DC, после сброса 0x0000 0000. TRM: регистр 4.112.

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

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

Смещение 0x01E0, адрес 0x6000 89E0, после сброса 0x0000 0000. TRM: регистр 4.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 89E4, после сброса 0x0000 0000. TRM: регистр 4.114.

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

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

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

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

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

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

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

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

Смещение 0x01F0, адрес 0x6000 89F0, после сброса 0x0028 8000. TRM: регистр 4.108.

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

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

Смещение 0x01F4, адрес 0x6000 89F4, после сброса 0x0000 0190. TRM: регистр 4.109.

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

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

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

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

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

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

Младшие 32 бита MAC лежат в EFUSE_RD_MAC_SPI_SYS_0_REG, старшие 16 — в поле MAC_1 регистра EFUSE_RD_MAC_SPI_SYS_1_REG. Байты идут в обратном порядке: старший байт регистра 1 — первый байт адреса. Функция esp_efuse_mac_get_default делает то же; CRC заводского MAC в eFuse ESP32-C3 нет — он есть только у ESP32.

Что означают регистры EFUSE_RD_RS_ERR ESP32-C3?

Блоки 1–10 защищены кодом Рида — Соломона. В EFUSE_RD_RS_ERR0_REG и RS_ERR1_REG на каждый блок есть число исправленных ошибок (поле *_ERR_NUM) и флаг *_FAIL: если он установлен, ошибок больше, чем код может исправить, и данные блока недостоверны.

Источники

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

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