Module efuse

Source
Available on crate feature unstable only.
Expand description

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

§Reading of eFuses (ESP32-C6)

§Overview

The efuse module provides functionality for reading eFuse data from the ESP32-C6 chip, allowing access to various chip-specific information such as:

  • MAC address
  • ADC calibration data
  • Chip version

and more. It is useful for retrieving chip-specific configuration and identification data during runtime.

The Efuse struct represents the eFuse peripheral and is responsible for reading various eFuse fields and values.

§Examples

§Read data from the eFuse storage.


let mac_address = Efuse::read_base_mac_address();

println!(
    "MAC: {:#X}:{:#X}:{:#X}:{:#X}:{:#X}:{:#X}",
    mac_address[0],
    mac_address[1],
    mac_address[2],
    mac_address[3],
    mac_address[4],
    mac_address[5]
);

println!("MAC address {:02x?}", Efuse::mac_address());
println!("Flash Encryption {:?}", Efuse::flash_encryption());

Structs§

Efuse
A struct representing the eFuse functionality of the chip.

Constants§

ACTIVE_HP_DBIAS
Stores the active hp dbias
ACTIVE_LP_DBIAS
Stores the active lp dbias
ADC1_CAL_VOL_ATTEN0
ADC1 calibration voltage at atten0
ADC1_CAL_VOL_ATTEN1
ADC1 calibration voltage at atten1
ADC1_CAL_VOL_ATTEN2
ADC1 calibration voltage at atten2
ADC1_CAL_VOL_ATTEN3
ADC1 calibration voltage at atten3
ADC1_INIT_CODE_ATTEN0
ADC1 init code at atten0
ADC1_INIT_CODE_ATTEN0_CH0
ADC1 init code at atten0 ch0
ADC1_INIT_CODE_ATTEN0_CH1
ADC1 init code at atten0 ch1
ADC1_INIT_CODE_ATTEN0_CH2
ADC1 init code at atten0 ch2
ADC1_INIT_CODE_ATTEN0_CH3
ADC1 init code at atten0 ch3
ADC1_INIT_CODE_ATTEN0_CH4
ADC1 init code at atten0 ch4
ADC1_INIT_CODE_ATTEN0_CH5
ADC1 init code at atten0 ch5
ADC1_INIT_CODE_ATTEN0_CH6
ADC1 init code at atten0 ch6
ADC1_INIT_CODE_ATTEN1
ADC1 init code at atten1
ADC1_INIT_CODE_ATTEN2
ADC1 init code at atten2
ADC1_INIT_CODE_ATTEN3
ADC1 init code at atten3
BLK_VERSION_MAJOR
BLK_VERSION_MAJOR of BLOCK2
BLK_VERSION_MINOR
BLK_VERSION_MINOR of BLOCK2
BLOCK_KEY0
Key0 or user data
BLOCK_KEY1
Key1 or user data
BLOCK_KEY2
Key2 or user data
BLOCK_KEY3
Key3 or user data
BLOCK_KEY4
Key4 or user data
BLOCK_KEY5
Key5 or user data
BLOCK_SYS_DATA2
System data part 2 (reserved)
BLOCK_USR_DATA
User data
CRYPT_DPA_ENABLE
Represents whether anti-dpa attack is enabled. 1:enabled. 0: disabled
CUSTOM_MAC
Custom MAC
DBIAS_VOL_GAP
Stores the hp and lp dbias vol gap
DISABLE_BLK_VERSION_MAJOR
Disables check of blk version major
DISABLE_WAFER_VERSION_MAJOR
Disables check of wafer version major
DIS_DIRECT_BOOT
Represents whether direct boot mode is disabled or enabled. 1: disabled. 0: enabled
DIS_DOWNLOAD_ICACHE
Represents whether icache is disabled or enabled in Download mode. 1: disabled. 0: enabled
DIS_DOWNLOAD_MANUAL_ENCRYPT
Represents whether flash encrypt function is disabled or enabled(except in SPI boot mode). 1: disabled. 0: enabled
DIS_DOWNLOAD_MODE
Represents whether Download mode is disabled or enabled. 1: disabled. 0: enabled
DIS_FORCE_DOWNLOAD
Represents whether the function that forces chip into download mode is disabled or enabled. 1: disabled. 0: enabled
DIS_ICACHE
Represents whether icache is disabled or enabled. 1: disabled. 0: enabled
DIS_PAD_JTAG
Represents whether JTAG is disabled in the hard way(permanently). 1: disabled. 0: enabled
DIS_TWAI
Represents whether TWAI function is disabled or enabled. 1: disabled. 0: enabled
DIS_USB_JTAG
Represents whether the function of usb switch to jtag is disabled or enabled. 1: disabled. 0: enabled
DIS_USB_SERIAL_JTAG
Represents whether USB-Serial-JTAG is disabled or enabled. 1: disabled. 0: enabled
DIS_USB_SERIAL_JTAG_DOWNLOAD_MODE
Represents whether the USB-Serial-JTAG download function is disabled or enabled. 1: disabled. 0: enabled
DIS_USB_SERIAL_JTAG_ROM_PRINT
Represents whether print from USB-Serial-JTAG is disabled or enabled. 1: disabled. 0: enabled
DSLP_LP_DBG
Stores the dslp lp dbg
DSLP_LP_DBIAS
Stores the dslp lp dbias
ENABLE_SECURITY_DOWNLOAD
Represents whether security download is enabled or disabled. 1: enabled. 0: disabled
FLASH_CAP
FLASH_TEMP
FLASH_TPUW
Represents the flash waiting time after power-up; in unit of ms. When the value less than 15; the waiting time is the programmed value. Otherwise; the waiting time is 2 times the programmed value
FLASH_VENDOR
FORCE_SEND_RESUME
Represents whether ROM code is forced to send a resume command during SPI boot. 1: forced. 0:not forced
JTAG_SEL_ENABLE
Represents whether the selection between usb_to_jtag and pad_to_jtag through strapping gpio15 when both EFUSE_DIS_PAD_JTAG and EFUSE_DIS_USB_JTAG are equal to 0 is enabled or disabled. 1: enabled. 0: disabled
KEY_PURPOSE_0
Represents the purpose of Key0
KEY_PURPOSE_1
Represents the purpose of Key1
KEY_PURPOSE_2
Represents the purpose of Key2
KEY_PURPOSE_3
Represents the purpose of Key3
KEY_PURPOSE_4
Represents the purpose of Key4
KEY_PURPOSE_5
Represents the purpose of Key5
LSLP_HP_DBG
Stores the lslp hp dbg
LSLP_HP_DBIAS
Stores the lslp hp dbias
MAC0
MAC address
MAC1
MAC address
MAC_EXT
Stores the extended bits of MAC address
OCODE
ADC OCode
OPTIONAL_UNIQUE_ID
Optional unique 128-bit ID
PKG_VERSION
Package version
RD_DIS
Disable reading from BlOCK4-10
RESERVED_0_162
reserved
RESERVED_1_136
reserved
RESERVED_2_253
reserved
RESERVED_3_192
reserved
RESERVED_3_248
reserved
RPT4_RESERVED0_0
Reserved
RPT4_RESERVED0_1
Reserved
RPT4_RESERVED0_2
Reserved
RPT4_RESERVED1_0
Reserved
RPT4_RESERVED2_0
Reserved
RPT4_RESERVED2_1
Reserved
RPT4_RESERVED3_0
Reserved
RPT4_RESERVED3_1
Reserved
RPT4_RESERVED3_2
Reserved
RPT4_RESERVED3_3
Reserved
RPT4_RESERVED3_4
Reserved
RPT4_RESERVED3_5
Reserved
RPT4_RESERVED4_0
Reserved
SECURE_BOOT_AGGRESSIVE_REVOKE
Represents whether revoking aggressive secure boot is enabled or disabled. 1: enabled. 0: disabled
SECURE_BOOT_DISABLE_FAST_WAKE
Represents whether FAST VERIFY ON WAKE is disabled or enabled when Secure Boot is enabled. 1: disabled. 0: enabled
SECURE_BOOT_EN
Represents whether secure boot is enabled or disabled. 1: enabled. 0: disabled
SECURE_BOOT_KEY_REVOKE0
Revoke 1st secure boot key
SECURE_BOOT_KEY_REVOKE1
Revoke 2nd secure boot key
SECURE_BOOT_KEY_REVOKE2
Revoke 3rd secure boot key
SECURE_VERSION
Represents the version used by ESP-IDF anti-rollback feature
SEC_DPA_LEVEL
Represents the spa secure level by configuring the clock random divide mode
SOFT_DIS_JTAG
Represents whether JTAG is disabled in soft way. Odd number: disabled. Even number: enabled
SPI_BOOT_CRYPT_CNT
Enables flash encryption when 1 or 3 bits are set and disables otherwise
SPI_DOWNLOAD_MSPI_DIS
Represents whether SPI0 controller during boot_mode_download is disabled or enabled. 1: disabled. 0: enabled
SPI_PAD_CONF_1
Stores the first part of SPI_PAD_CONF
SPI_PAD_CONF_2
Stores the second part of SPI_PAD_CONF
SWAP_UART_SDIO_EN
Represents whether pad of uart and sdio is swapped or not. 1: swapped. 0: not swapped
SYS_DATA_PART0_2
Stores the second 32 bits of the zeroth part of system data
TEMP_CALIB
Temperature calibration data
UART_PRINT_CONTROL
Set the default UARTboot message output mode
USB_DREFH
Represents the single-end input threshold vrefh; 1.76 V to 2 V with step of 80 mV
USB_DREFL
Represents the single-end input threshold vrefl; 1.76 V to 2 V with step of 80 mV
USB_EXCHG_PINS
Represents whether the D+ and D- pins is exchanged. 1: exchanged. 0: not exchanged
VDD_SPI_AS_GPIO
Represents whether vdd spi pin is functioned as gpio. 1: functioned. 0: not functioned
WAFER_VERSION_MAJOR
WAFER_VERSION_MINOR
WDT_DELAY_SEL
Represents whether RTC watchdog timeout threshold is selected at startup. 1: selected. 0: not selected
WR_DIS
Disable programming of individual eFuses