Программирование ARM ESP32: контроллер eFuse Wed, April 24 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

ESP32: контроллер eFuse Печать
Добавил(а) microsin   

У ESP32 есть несколько энергонезависимых, однократно устанавливаемых настроек eFuse, в которых сохраняются системные параметры. Фундаментально eFuse это одиночный бит, который если запрограммирован в 1, то больше не может быть возвращен в 0. Программа может инструктировать контроллер eFuse запрограммировать каждый бит в каждой для каждого системного параметра, как это необходимо.

Примечание: здесь приведен перевод главы "eFuse Controller" документа [1].

Некоторые из этих параметров можно прочитать программно, используя контроллер eFuse. Некоторые из параметров напрямую использует аппаратура ESP32.

• Конфигурация eFuse содержит 33 системных параметра.
• Имеется опция защиты от записи.
• Имеется опция защиты от чтения программой.

[Функциональное описание eFuse]

Имена каждого из 33 системных параметров и их соответствующее номера и количество бит показаны в таблице 82. Среди этих параметров напрямую используются контроллером eFuse параметры efuse_wr_disable, efuse_rd_disable, BLK3_part_reserve и coding_scheme.

Таблица 82. Системные параметры.

Имя Ширина в битах Программная защита по efuse_wr_disable Защита от чтения по efuse_rd_disable Описание
efuse_wr_disable 16 1 - Управляется контроллером eFuse.
efuse_rd_disable 4 0 -
flash_crypt_cnt 7 2 - Управляет шифрованием/декодированием Flash.
WIFI_MAC_Address 56 3 - Wi-Fi MAC-адрес и CRC.
SPI_pad_config_hd 5 3 - Конфигурирует SPI I/O на определенные выводы.
XPD_SDIO_REG 1 5 - Включает регулятор питания Flash.
SDIO_TIEH 1 5 - Конфигурирует напряжение регулятора питания Flash: установите в для 3.3V, и установите в 0 для 1.8V.
sdio_force 1 5 - Определяет, могут ли XPD_SDIO_REG и SDIO_TIEH управлять регулятором питания Flash.
BLK3_part_reserve 2 10 3 Управляет контроллером eFuse.
SPI_pad_config_clk 5 6 - Конфигурирует SPI I/O на определенный контакт.
SPI_pad_config_q 5 6 -
SPI_pad_config_d 5 6 -
SPI_pad_config_cs0 5 6 -
flash_crypt_config 4 10 3 Управляет шифрованием/декодированием Flash.
coding_scheme* 2 10 3 Управляет контроллером eFuse.
console_debug_disable 1 15 - Отключает режим восстановления консоли отладки ROM BASIC, если установлено значение 1.
abstract_done_0 1 12 - Определяет состояние Secure Boot.
abstract_done_1 1 13 -
JTAG_disable 1 14 - Запрещает доступ к контроллерам JTAG, что эффективно запрещает внешнее использование JTAG.
download_dis_encrypt 1 15 - Управляет шифрованием/декодированием Flash.
download_dis_decrypt 1 15 -
download_dis_cache 1 15 - Запрещает кэш, когда режим загрузки (boot mode) находится в (Download Mode).
key_status 1 10 3 Определяет, развертывается ли BLOCK3 для целей пользователя.
BLOCK1* 256/192/128 7 0 Управляет шифрованием/декодированием Flash.
BLOCK2* 8 1 Ключ шифрования для Secure Boot.
BLOCK3* 9 2 Ключ шифрования для пользователя.
disable_app_cpu 1 3 - Запрещает APP CPU.
disable_bt 1 3 - Запрещает Bluetooth.
pkg_version 4 3 - Версия упаковки.
disable_cache 1 3 - Запрещает кэш.
CK8M Frequency 8 4 - Частота RTC8M_CLK.
vol_level_hp_inv 2 3 - Сохраняет уровень напряжения для CPU при работе на 240 МГц, или для flash/PSRAM при работе на 80 МГц.
dig_vol_l6 4 11 - Сохраняет разницу между цифровым регулятором напряжения на уровне 6 и 1.2V.
uart_download_dis 1 2 - Когда установлен в 1, окончательно запрещает режим Download. Допустимо только для ESP32 ECO V3.

efuse_wr_disable. Системный параметр efuse_wr_disable определяет, защищены ли все системные параметры от записи.

Поскольку efuse_wr_disable также является системным параметром, он также он определяет, защищен ли он от записи. Если системный параметр не защищен от записи, то его не запрограммированные биты могут быть запрограммированы из значения 0 в значение 1. Биты, которые ранее были запрограммированы в 1, останутся в состоянии 1. Когда системный параметр защищен от записи, то никакие его биты не могут быть запрограммированы: не запрограммированные биты останутся в 0, и запрограммированные биты останутся в 1.

Состояние защиты от записи каждого системного параметра соответствует биту в efuse_wr_disable. Когда этот бит находится в состоянии 0, системный параметр не защищен от записи. Когда бит efuse_wr_disable установлен в 1, системный параметр защищен от записи. Если системный параметр уже защищен от записи, то он останется защищенным. В столбце "Program-Protection by efuse_wr_disable" таблицы 82 перечисляет биты, которые определяют состояние защиты от записи каждого системного параметра.

efuse_rd_disable. Из 33 системных параметров 27 не защищены от чтения. Они помечены '-' в столбце "Защита от чтения по efuse_rd_disable" в таблице 82. Эти системные параметры, некоторые из которых используются программными и аппаратными модулями одновременно, могут быть в любое время считаны программным обеспечением через контроллер eFuse.

Остальные 6 системных параметров, если они не защищены от чтения программно, могут быть прочитаны как программой, и могут использоваться модулями аппаратуры. Когда они защищены от чтения программно, то могут использоваться только модулями аппаратуры.

Столбец "Программная защита по efuse_wr_disable" в таблице 82 перечисляет соответствующие биты в efuse_rd_disable, которые определяют состояние программной защиты от записи шести системных параметров. Если бит в системном параметре efuse_rd_disable 0, то системный параметр управляемый этим битом, не защищен от чтения программным обеспечением. Если бит в системном параметре efuse_rd_disable 1, то системный параметр, управляемый этим битом, защищен от чтения со стороны программного обеспечения. Если системный параметр защищен от чтения программным обеспечением, то он останется в этом состоянии.

coding_scheme. Как показано в таблице 82, только 3 системных параметра, BLOCK1, BLOCK2 и BLOCK3, имеют переменное количество бит. Их количество бит управляется другим системным параметром, coding_scheme. Несмотря на их переменную ширину в битах, параметрам BLOCK1, BLOCK2 и BLOCK3 назначается фиксированное количество битов в eFuse. Подробности см. в таблице 83.

Таблица 83. Кодирование BLOCK1, BLOCK2, BLOCK3.

coding_scheme[1:0] Ширина BLOCK1/2/3 Схема кодирования Количество бит в eFuse
00/11 256 None 256
01 192 3/4
10 128 Repeat

Три схемы кодирования объясняются следующим образом:

• BLOCKN представляет любой из следующих трех системных параметров: BLOCK1, BLOCK2 или BLOCK3.
• BLOCKN[255:0], BLOCKN[191:0] и BLOCKN[127:0] представляют каждый бит трех системных параметров в этих трех схемах кодирования.
• eBLOCKN[255:0] представляет каждый соответствующий бит этих системных параметров в eFuse после кодирования.

BLK3_part_reserve. Системные параметры coding_scheme, BLOCK1, BLOCK2 и BLOCK3 управляются параметром BLK3_part_reserve.

Когда значение BLK3_part_reserve равно 0, то coding_scheme, BLOCK1, BLOCK2 и BLOCK3 можно установить в любое значение.

Когда BLK3_part_reserve 1, coding_scheme, BLOCK1, BLOCK2 и BLOCK3 управляются схемой кодирования 3/4. Между тем недоступен BLOCK3[143 : 96], а именно eBLOCK3[191 : 128].

[Программирование системных параметров]

Программирование системных параметров переменной длины BLOCK1, BLOCK2 и BLOCK3 отличается от программирования системных параметров фиксированной длины. Мы программируем значение eBLOCKN[255:0] закодированных системных параметров BLOCK1, BLOCK2 и BLOCK3 вместо прямого программирования системных параметров. Ширина бит eBLOCKN[255:0] всегда 256. Системные параметры фиксированной длины, напротив, программируются без предварительного кодирования.

Каждый бит 30 системных параметров фиксированной длины и 3 кодированных системных параметра переменной длины соответствуют программированию бита регистра, как показано в таблице 84. Биты регистра будут использоваться, когда программируются системные параметры.

Таблица 84. Программирование регистров.

Системный параметр
Регистр
Имя Ширина Бит Имя Бит
efuse_wr_disable 16 [15:0] EFUSE_BLK0_WDATA0_REG [15:0]
efuse_rd_disable 4 [3:0] [19:16]
flash_crypt_cnt 7 [6:0] [26:20]
uart_download_dis 1 [0] [27]
WIFI_MAC_Address 56 [31:0] EFUSE_BLK0_WDATA1_REG [31:0]
[55:32] EFUSE_BLK0_WDATA2_REG [23:0]
disable_app_cpu 1 [0] EFUSE_BLK0_WDATA3_REG [0]
disable_bt 1 [0] [1]
pkg_version 4 [3:0] [2], [11:9]
disable_cache 1 [0] [3]
SPI_pad_config_hd 5 [4:0] [8:4]
BLK3_part_reserve 1 [0] [14]
CK8M Frequency 8 [7:0] EFUSE_BLK0_WDATA4_REG [7:0]
XPD_SDIO_REG 1 [0] [14]
SDIO_TIEH 1 [0] [15]
sdio_force 1 [0] [16]
SPI_pad_config_clk 5 [4:0] EFUSE_BLK0_WDATA5_REG [4:0]
SPI_pad_config_q 5 [4:0] [9:5]
SPI_pad_config_d 5 [4:0] [14:10]
SPI_pad_config_cs0 5 [4:0] [19:15]
vol_level_hp_inv 2 [1:0] [23:22]
dig_vol_l6 4 [3:0] [27:24]
flash_crypt_config 4 [3:0] [31:28]
coding_scheme 2 [1:0] EFUSE_BLK0_WDATA6_REG [1:0]
console_debug_disable 1 [0] [2]
abstract_done_0 1 [0] [4]
abstract_done_1 1 [0] [5]
JTAG_disable 1 [0] [6]
download_dis_encrypt 1 [0] [7]
download_dis_decrypt 1 [0] [8]
download_dis_cache 1 [0] [9]
key_status 1 [0] [10]
BLOCK1 256/192/128 [31:0] EFUSE_BLK1_WDATA0_REG [31:0]
[63:32] EFUSE_BLK1_WDATA1_REG [31:0]
[95:64] EFUSE_BLK1_WDATA2_REG [31:0]
[127:96] EFUSE_BLK1_WDATA3_REG [31:0]
[159:128] EFUSE_BLK1_WDATA4_REG [31:0]
[191:160] EFUSE_BLK1_WDATA5_REG [31:0]
[223:192] EFUSE_BLK1_WDATA6_REG [31:0]
[255:224] EFUSE_BLK1_WDATA7_REG [31:0]
BLOCK2 256/192/128 [31:0] EFUSE_BLK2_WDATA0_REG [31:0]
[63:32] EFUSE_BLK2_WDATA1_REG [31:0]
[95:64] EFUSE_BLK2_WDATA2_REG [31:0]
[127:96] EFUSE_BLK2_WDATA3_REG [31:0]
[159:128] EFUSE_BLK2_WDATA4_REG [31:0]
[191:160] EFUSE_BLK2_WDATA5_REG [31:0]
[223:192] EFUSE_BLK2_WDATA6_REG [31:0]
[255:224] EFUSE_BLK2_WDATA7_REG [31:0]
BLOCK3 256/192/128 [31:0] EFUSE_BLK3_WDATA0_REG [31:0]
[63:32] EFUSE_BLK3_WDATA1_REG [31:0]
[95:64] EFUSE_BLK3_WDATA2_REG [31:0]
[127:96] EFUSE_BLK3_WDATA3_REG [31:0]
[159:128] EFUSE_BLK3_WDATA4_REG [31:0]
[191:160] EFUSE_BLK3_WDATA5_REG [31:0]
[223:192] EFUSE_BLK3_WDATA6_REG [31:0]
[255:224] EFUSE_BLK3_WDATA7_REG [31:0]

Процесс программирования системных параметров следующий:

1. Конфигурируется биты EFUSE_CLK_SEL0 bit, EFUSE_CLK_SEL1 регистра EFUSE_CLK, и бит EFUSE_DAC_CLK_DIV регистра EFUSE_DAC_CONF.
2. Устанавливается соответствующий бит регистра системного параметра, который должен быть запрограммирован в 1.
3. Записывается 0x5A5A в регистр EFUSE_CONF.
4. Записывается 0x2 в регистр EFUSE_CMD.
5. Опрашивается регистр EFUSE_CMD, пока он не станет равным 0x0, либо ожидается срабатывания прерывания завершения программирования.
6. Записывается 0x5A5A в регистр EFUSE_CONF.
7. Записывается 0x1 в регистр EFUSE_CMD.
8. Опрашивается регистр EFUSE_CMD, пока он не станет равным 0x0, либо ожидается срабатывания прерывания завершения программирования.
9. Устанавливается в 0 соответствующий бит регистре, который был запрограммирован.

Конфигурационные значения бит EFUSE_CLK_SEL0 bit, EFUSE_CLK_SEL1 регистра EFUSE_CLK, и бита EFUSE_DAC_CLK_DIV регистра EFUSE_DAC_CONF основываются на текущей частоте шины APB_CLK, как показано в таблице 85.

Таблица 85. Конфигурация тайминга программирования.

Регистр
Конфигурационное значение
Частота APB_CLK
26 МГц 40 МГц 80 МГц
EFUSE_CLK EFUSE_CLK_SEL0[7:0] 250 160 80
EFUSE_CLK_SEL1[7:0] 255 255 128
EFUSE_DAC_CONF EFUSE_DAC_CLK_DIV[7:0] 52 89 100

Существует 2 метода проверки генерации прерываний программирования и завершения чтения (program/read-done interrupt). Метод 1:

1. Опрашивать бит 1/0 в регистре EFUSE_INT_RAW, пока бит 1/0 не установится в 1, что означает генерацию прерываний program/readdone.
2. Установить бит 1/0 в регистре EFUSE_INT_CLR в 1, чтобы очистить статус прерываний program/read-done.

Метод 2:

1. Установить бит 1/0 в регистре EFUSE_INT_ENA в 1, чтобы разрешить контроллеру eFuse генерировать прерывания program/read-done.
2. Сконфигурировать Interrupt Matrix для разрешения ядру CPU отвечать на прерывание EFUSE_INT.
3. Когда сгенерируется прерывание program/read-done, выполнить чтение бита 1/0 в регистре EFUSE_INT_ST чтобы идентифицировать прерывание program/read-done.
5. Установить бит 1/0 в регистре EFUSE_INT_CLR в 1, чтобы очистить статус прерываний program/read-done.

Программирование различных системных параметров, и даже программирование различных бит в одного и того же системного параметра может быть выполнено по отдельности, несколькими процедурами программирования. Однако рекомендуется минимизировать количество циклов программирования, и программировать за одно действие все биты, которые должны быть запрограммированы в системном параметре. Кроме того, после программирования всех системных параметров, управляемых определенным битом efuse_wr_disable, этот бит должен быть немедленно запрограммирован. Программирование системных параметров, управляемых определенным битом efuse_wr_disable, и программирование этого бита может быть завершено одновременно.

Повторное программирование уже запрограммированных бит строго запрещено.

Программное чтение системных параметров. Каждый бит из 30 системных параметров фиксированной длины и 3 параметра переменной длины соответствуют биту регистра, считываемому программно, как показано в таблице 86. Программа может использовать значение каждого системного параметра путем чтения соответствующего регистра.

Битовая ширина системных параметров BLOCK1, BLOCK2 и BLOCK3 изменяемая. Хотя 256 бит регистров назначены каждому из трех параметров, как показано в таблице 86, некоторые из этих 256 бит бесполезны в схемах кодирования 3/4 и Repeat. В схеме кодирования None используется каждый соответствующий бит BLOCKN[255:0]. В схеме кодирования 3/4 полезны только соответствующие биты регистра BLOCKN[191:0]. В схеме кодирования Repeat полезны только соответствующие биты регистра BLOCKN[127:0]. В различных схемах кодирования значения бесполезных бит регистров, прочитанных программой, содержат недостоверные значения. Значения полезных бит регистров, прочитанных программой, являются системными параметрами BLOCK1, BLOCK2 и BLOCK3, а не их значениями после кодирования.

Таблица 86. Программное чтение регистров.

Системный параметр
Регистр
Имя Ширина Бит Имя Бит
efuse_wr_disable 16 [15:0] EFUSE_BLK0_WDATA0_REG [15:0]
efuse_rd_disable 4 [3:0] [19:16]
flash_crypt_cnt 7 [6:0] [26:20]
uart_download_dis 1 [0] [27]
WIFI_MAC_Address 56 [31:0] EFUSE_BLK0_WDATA1_REG [31:0]
[55:32] EFUSE_BLK0_WDATA2_REG [23:0]
disable_app_cpu 1 [0] EFUSE_BLK0_WDATA3_REG [0]
disable_bt 1 [0] [1]
pkg_version 4 [3:0] [2], [11:9]
disable_cache 1 [0] [3]
SPI_pad_config_hd 5 [4:0] [8:4]
BLK3_part_reserve 1 [0] [14]
CK8M Frequency 8 [7:0] EFUSE_BLK0_WDATA4_REG [7:0]
XPD_SDIO_REG 1 [0] [14]
SDIO_TIEH 1 [0] [15]
sdio_force 1 [0] [16]
SPI_pad_config_clk 5 [4:0] EFUSE_BLK0_WDATA5_REG [4:0]
SPI_pad_config_q 5 [4:0] [9:5]
SPI_pad_config_d 5 [4:0] [14:10]
SPI_pad_config_cs0 5 [4:0] [19:15]
vol_level_hp_inv 2 [1:0] [23:22]
dig_vol_l6 4 [3:0] [27:24]
flash_crypt_config 4 [3:0] [31:28]
coding_scheme 2 [1:0] EFUSE_BLK0_WDATA6_REG [1:0]
console_debug_disable 1 [0] [2]
abstract_done_0 1 [0] [4]
abstract_done_1 1 [0] [5]
JTAG_disable 1 [0] [6]
download_dis_encrypt 1 [0] [7]
download_dis_decrypt 1 [0] [8]
download_dis_cache 1 [0] [9]
key_status 1 [0] [10]
BLOCK1 256/192/128 [31:0] EFUSE_BLK1_WDATA0_REG [31:0]
[63:32] EFUSE_BLK1_WDATA1_REG [31:0]
[95:64] EFUSE_BLK1_WDATA2_REG [31:0]
[127:96] EFUSE_BLK1_WDATA3_REG [31:0]
[159:128] EFUSE_BLK1_WDATA4_REG [31:0]
[191:160] EFUSE_BLK1_WDATA5_REG [31:0]
[223:192] EFUSE_BLK1_WDATA6_REG [31:0]
[255:224] EFUSE_BLK1_WDATA7_REG [31:0]
BLOCK2 256/192/128 [31:0] EFUSE_BLK2_WDATA0_REG [31:0]
[63:32] EFUSE_BLK2_WDATA1_REG [31:0]
[95:64] EFUSE_BLK2_WDATA2_REG [31:0]
[127:96] EFUSE_BLK2_WDATA3_REG [31:0]
[159:128] EFUSE_BLK2_WDATA4_REG [31:0]
[191:160] EFUSE_BLK2_WDATA5_REG [31:0]
[223:192] EFUSE_BLK2_WDATA6_REG [31:0]
[255:224] EFUSE_BLK2_WDATA7_REG [31:0]
BLOCK3 256/192/128 [31:0] EFUSE_BLK3_WDATA0_REG [31:0]
[63:32] EFUSE_BLK3_WDATA1_REG [31:0]
[95:64] EFUSE_BLK3_WDATA2_REG [31:0]
[127:96] EFUSE_BLK3_WDATA3_REG [31:0]
[159:128] EFUSE_BLK3_WDATA4_REG [31:0]
[191:160] EFUSE_BLK3_WDATA5_REG [31:0]
[223:192] EFUSE_BLK3_WDATA6_REG [31:0]
[255:224] EFUSE_BLK3_WDATA7_REG [31:0]

Использование системных параметров модулями аппаратуры. Аппаратные модули напрямую соединены с используемыми ими системными параметрами. Программное обеспечение не может изменить это поведение. Аппаратные модули используются декодированные значения системных параметров BLOCK1, BLOCK2 и BLOCK3, а не их закодированные значения.

Прерывания. Для реакции на события eFuse существуют следующие прерывания:

EFUSE_PGM_DONE_INT: срабатывает, когда процесс программирования eFuse завершился.
EFUSE_READ_DONE_INT: срабатывает, когда чтение eFuse завершилось.

[Общее описание регистров eFuse]

Подробное описание регистров и бит eFuse см. в документе [1].

Имя Описание Адрес Доступ
Регистры eFuse data read
EFUSE_BLK0_RDATA0_REG Возвратит слово 0 в eFuse BLOCK 0 0x3FF5A000 RO
EFUSE_BLK0_RDATA1_REG Возвратит слово 1 в eFuse BLOCK 0 0x3FF5A004 RO
EFUSE_BLK0_RDATA2_REG Возвратит слово 2 в eFuse BLOCK 0 0x3FF5A008 RO
EFUSE_BLK0_RDATA3_REG Возвратит слово 3 в eFuse BLOCK 0 0x3FF5A00C RO
EFUSE_BLK0_RDATA4_REG Возвратит слово 4 в eFuse BLOCK 0 0x3FF5A010 RO
EFUSE_BLK0_RDATA5_REG Возвратит слово 5 в eFuse BLOCK 0 0x3FF5A014 RO
EFUSE_BLK0_RDATA6_REG Возвратит слово 6 в eFuse BLOCK 0 0x3FF5A018 RO
EFUSE_BLK1_RDATA0_REG Возвратит слово 0 в eFuse BLOCK 1 0x3FF5A038 RO
EFUSE_BLK1_RDATA1_REG Возвратит слово 1 в eFuse BLOCK 1 0x3FF5A03C RO
EFUSE_BLK1_RDATA2_REG Возвратит слово 2 в eFuse BLOCK 1 0x3FF5A040 RO
EFUSE_BLK1_RDATA3_REG Возвратит слово 3 в eFuse BLOCK 1 0x3FF5A044 RO
EFUSE_BLK1_RDATA4_REG Возвратит слово 4 в eFuse BLOCK 1 0x3FF5A048 RO
EFUSE_BLK1_RDATA5_REG Возвратит слово 5 в eFuse BLOCK 1 0x3FF5A04C RO
EFUSE_BLK1_RDATA6_REG Возвратит слово 6 в eFuse BLOCK 1 0x3FF5A050 RO
EFUSE_BLK1_RDATA7_REG Возвратит слово 7 в eFuse BLOCK 1 0x3FF5A054 RO
EFUSE_BLK2_RDATA0_REG Возвратит слово 0 в eFuse BLOCK 2 0x3FF5A068 RO
EFUSE_BLK2_RDATA1_REG Возвратит слово 1 в eFuse BLOCK 2 0x3FF5A06C RO
EFUSE_BLK2_RDATA2_REG Возвратит слово 2 в eFuse BLOCK 2 0x3FF5A060 RO
EFUSE_BLK2_RDATA3_REG Возвратит слово 3 в eFuse BLOCK 2 0x3FF5A064 RO
EFUSE_BLK2_RDATA4_REG Возвратит слово 4 в eFuse BLOCK 2 0x3FF5A068 RO
EFUSE_BLK2_RDATA5_REG Возвратит слово 5 в eFuse BLOCK 2 0x3FF5A06C RO
EFUSE_BLK2_RDATA6_REG Возвратит слово 6 в eFuse BLOCK 2 0x3FF5A070 RO
EFUSE_BLK2_RDATA7_REG Возвратит слово 7 в eFuse BLOCK 2 0x3FF5A074 RO
EFUSE_BLK3_RDATA0_REG Возвратит слово 0 в eFuse BLOCK 3 0x3FF5A078 RO
EFUSE_BLK3_RDATA1_REG Возвратит слово 1 в eFuse BLOCK 3 0x3FF5A07C RO
EFUSE_BLK3_RDATA2_REG Возвратит слово 2 в eFuse BLOCK 3 0x3FF5A080 RO
EFUSE_BLK3_RDATA3_REG Возвратит слово 3 в eFuse BLOCK 3 0x3FF5A084 RO
EFUSE_BLK3_RDATA4_REG Возвратит слово 4 в eFuse BLOCK 3 0x3FF5A088 RO
EFUSE_BLK3_RDATA5_REG Возвратит слово 5 в eFuse BLOCK 3 0x3FF5A08C RO
EFUSE_BLK3_RDATA6_REG Возвратит слово 6 в eFuse BLOCK 3 0x3FF5A090 RO
EFUSE_BLK3_RDATA7_REG Возвратит слово 7 в eFuse BLOCK 3 0x3FF5A094 RO
Регистры eFuse data write
EFUSE_BLK0_WDATA0_REG Запишет данные в слово 0 eFuse BLOCK 0 0x3FF5A01C R/W
EFUSE_BLK0_WDATA1_REG Запишет данные в слово 1 eFuse BLOCK 0 0x3FF5A020 R/W
EFUSE_BLK0_WDATA2_REG Запишет данные в слово 2 eFuse BLOCK 0 0x3FF5A024 R/W
EFUSE_BLK0_WDATA3_REG Запишет данные в слово 3 eFuse BLOCK 0 0x3FF5A028 R/W
EFUSE_BLK0_WDATA4_REG Запишет данные в слово 4 eFuse BLOCK 0 0x3FF5A02C R/W
EFUSE_BLK0_WDATA5_REG Запишет данные в слово 5 eFuse BLOCK 0 0x3FF5A030 R/W
EFUSE_BLK0_WDATA6_REG Запишет данные в слово 6 eFuse BLOCK 0 0x3FF5A034 R/W
EFUSE_BLK1_WDATA0_REG Запишет данные в слово 0 eFuse BLOCK 1 0x3FF5A098 R/W
EFUSE_BLK1_WDATA1_REG Запишет данные в слово 1 eFuse BLOCK 1 0x3FF5A09C R/W
EFUSE_BLK1_WDATA2_REG Запишет данные в слово 2 eFuse BLOCK 1 0x3FF5A0A0 R/W
EFUSE_BLK1_WDATA3_REG Запишет данные в слово 3 eFuse BLOCK 1 0x3FF5A0A4 R/W
EFUSE_BLK1_WDATA4_REG Запишет данные в слово 4 eFuse BLOCK 1 0x3FF5A0A8 R/W
EFUSE_BLK1_WDATA5_REG Запишет данные в слово 5 eFuse BLOCK 1 0x3FF5A0AC R/W
EFUSE_BLK1_WDATA6_REG Запишет данные в слово 6 eFuse BLOCK 1 0x3FF5A0B0 R/W
EFUSE_BLK1_WDATA7_REG Запишет данные в слово 7 eFuse BLOCK 1 0x3FF5A0B4 R/W
EFUSE_BLK2_WDATA0_REG Запишет данные в слово 0 eFuse BLOCK 2 0x3FF5A0B8 R/W
EFUSE_BLK2_WDATA1_REG Запишет данные в слово 1 eFuse BLOCK 2 0x3FF5A0BC R/W
EFUSE_BLK2_WDATA2_REG Запишет данные в слово 2 eFuse BLOCK 2 0x3FF5A0C0 R/W
EFUSE_BLK2_WDATA3_REG Запишет данные в слово 3 eFuse BLOCK 2 0x3FF5A0C4 R/W
EFUSE_BLK2_WDATA4_REG Запишет данные в слово 4 eFuse BLOCK 2 0x3FF5A0C8 R/W
EFUSE_BLK2_WDATA5_REG Запишет данные в слово 5 eFuse BLOCK 2 0x3FF5A0CC R/W
EFUSE_BLK2_WDATA6_REG Запишет данные в слово 6 eFuse BLOCK 2 0x3FF5A0D0 R/W
EFUSE_BLK2_WDATA7_REG Запишет данные в слово 7 eFuse BLOCK 2 0x3FF5A0D4 R/W
EFUSE_BLK3_WDATA0_REG Запишет данные в слово 0 eFuse BLOCK 3 0x3FF5A0D8 R/W
EFUSE_BLK3_WDATA1_REG Запишет данные в слово 1 eFuse BLOCK 3 0x3FF5A0DC R/W
EFUSE_BLK3_WDATA2_REG Запишет данные в слово 2 eFuse BLOCK 3 0x3FF5A0E0 R/W
EFUSE_BLK3_WDATA3_REG Запишет данные в слово 3 eFuse BLOCK 3 0x3FF5A0E4 R/W
EFUSE_BLK3_WDATA4_REG Запишет данные в слово 4 eFuse BLOCK 3 0x3FF5A0E8 R/W
EFUSE_BLK3_WDATA5_REG Запишет данные в слово 5 eFuse BLOCK 3 0x3FF5A0EC R/W
EFUSE_BLK3_WDATA6_REG Запишет данные в слово 6 eFuse BLOCK 3 0x3FF5A0F0 R/W
EFUSE_BLK3_WDATA7_REG Запишет данные в слово 7 eFuse BLOCK 3 0x3FF5A0F4 R/W
Регистры управления
EFUSE_CLK_REG Регистр управления таймингом 0x3FF5A0F8 R/W
EFUSE_CONF_REG Регистр кода операции 0x3FF5A0FC R/W
EFUSE_CMD_REG Регистр команды чтения/записи 0x3FF5A104 R/W
Регистры прерывания
EFUSE_INT_RAW_REG Сырое состояние прерываний 0x3FF5A108 RO
EFUSE_INT_ST_REG Маскируемое состояние прерываний 0x3FF5A10C RO
EFUSE_INT_ENA_REG Биты разрешения прерываний 0x3FF5A110 R/W
EFUSE_INT_CLR_REG Биты очистки прерываний 0x3FF5A114 WO
Прочие регистры
EFUSE_DAC_CONF_REG Конфигурация тайминга eFuse 0x3FF5A118 R/W
EFUSE_DEC_STATUS_REG Состояние схемы кодирования 3/4 0x3FF5A11C RO

Примечание: в столбце "Доступ" RO означает только чтение (read only), R/W чтение/запись (read/write), WO только запись (write only).

[Словарик]

APB Advanced Peripheral Bus, продвинутая шина периферийных устройств.

ECO Engineering Change Orders, указания по исправлению ошибок кристалла в зависимости от его версии [2].

[Ссылки]

1. ESP32 Technical Reference Manual site:docs.espressif.com.
2. ESP32 ECO and Workarounds for Bugs site:espressif.com.
3ESP32 eFuse Manager.

 

Добавить комментарий


Защитный код
Обновить

Top of Page