E-Fuse#
Introduction#
Electrically programmable fuses or eFUSEs contains one-time programmable memory that are used to store configuration or data in integrated circuits (ICs). E-fuse use 32-bit addressing with each address containing 8 bits. The eFuse controller is used to program and read these bits.
Once information is programmed into an eFUSE, it is typically irreversible. Due to their irreversible nature, eFUSEs are suitable for storing critical data that cannot be altered.
eFUSEs find application in various areas, including
Supports eFuse programming and read operations
Supports memory mapped and FSM based read operation
Configuration#
The following apis allows users to read and write into the E-fuse 256-bit address.
sl_si91x_efuse_fsm_read_byte or sl_si91x_efuse_memory_mapped_read_byte or sl_si91x_efuse_memory_mapped_read_word
Usage#
The Efuse application provides an example of how to use various write and read operations to write to and read from OTP (one-time programmable) memory. The WRITE_ENABLE macro must first be enabled before an application may write to memory. By default, only read operations are carried out at the designated memory address. The efuse can be initialized and configured using the following apis in default mode. And it also has other apis where one can use them as per requirements which are discussed in functions.
sl_si91x_efuse_fsm_read_byte can be used to read byte when the mode of read is FSM.
sl_si91x_efuse_memory_mapped_read_byte can be used to read byte when the mode of read is Memory mapped mode.
sl_si91x_efuse_memory_mapped_read_word can be used to read word when the mode of read is Memory mapped mode.
Modules#
Functions#
This API is used to get the release, sqa and dev version of EFUSE.
This API is used to enable peripheral clock for efuse.
This API is used to disable peripheral clock for efuse.
This API is used to Initialize the eFUSE.
This API is used to un-initialize the eFUSE.
This API is used to set the eFUSE address for read and write operations.
This API is used to get the eFUSE address for read and write operations.
This API is used to write the bit in the position of an 8-bit location in eFUSE specified address.
This API is used to read the 1 word (16 bits) of data from 32x8 byte eFUSE memory (OTP) in memory mapped mode.
This API is used to read a 1 byte of data from 32x8 byte eFUSE memory(OTP) in memory mapped mode.
This API is used to read a 1 byte of data from 32x8 byte eFUSE memory (OTP) in fsm mode.
This API is used to enable the EFUSE.
This API is used to Disable the EFUSE.
Variable Documentation#
release#
uint8_t sl_efuse_version_t::release
70
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
major#
uint8_t sl_efuse_version_t::major
71
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
minor#
uint8_t sl_efuse_version_t::minor
72
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
Function Documentation#
sl_si91x_efuse_get_version#
sl_efuse_version_t sl_si91x_efuse_get_version (void )
This API is used to get the release, sqa and dev version of EFUSE.
N/A |
Returns
sl_efuse_version_t type structure
84
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
sl_si91x_efuse_enable_clock#
sl_status_t sl_si91x_efuse_enable_clock (void )
This API is used to enable peripheral clock for efuse.
N/A |
Returns
returns status 0 if successful, else error code.
SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument
SL_STATUS_OK - Success
94
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
sl_si91x_efuse_disable_clock#
sl_status_t sl_si91x_efuse_disable_clock (void )
This API is used to disable peripheral clock for efuse.
N/A |
Returns
returns status 0 if successful, else error code.
SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument
SL_STATUS_OK - Success
112
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
sl_si91x_efuse_init#
sl_status_t sl_si91x_efuse_init (void )
This API is used to Initialize the eFUSE.
N/A |
This API first enables the efuse clock and then efuse.
Returns
returns status 0 if successful,else error code.
SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument
SL_STATUS_OK - Success
123
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
sl_si91x_efuse_deinit#
sl_status_t sl_si91x_efuse_deinit (void )
This API is used to un-initialize the eFUSE.
N/A |
This API first disables the efuse and then efuse clock.
Pre-conditions:
Returns
returns status 0 if successful,else error code.
SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument
SL_STATUS_OK - Success
142
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
sl_si91x_efuse_set_address#
sl_status_t sl_si91x_efuse_set_address (uint16_t address)
This API is used to set the eFUSE address for read and write operations.
[in] | address | - Holds the address at which the data has to be written in the efuse Max is 0x31. |
Pre-condition:
Returns
returns status 0 if successful, else error code.
SL_STATUS_INVALID_PARAMETER (0x0021) - The parameter is invalid argument
SL_STATUS_OK - Success
158
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
sl_si91x_efuse_get_address#
sl_status_t sl_si91x_efuse_get_address (uint16_t * read_address)
This API is used to get the eFUSE address for read and write operations.
[out] | read_address | - Pointer holds the address at which the data has to be written in the efuse |
Pre-conditions:
Returns
returns status 0 if successful, else error code as follow:
SL_STATUS_INVALID_PARAMETER (0x0021) - The parameter is invalid argument
SL_STATUS_OK - Success
175
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
sl_si91x_efuse_write_bit#
sl_status_t sl_si91x_efuse_write_bit (uint16_t address, uint8_t bit_pos, uint32_t hold_time)
This API is used to write the bit in the position of an 8-bit location in eFUSE specified address.
[in] | address | - Holds the address at which the data has to be written in the efuse Max is 0x31. |
[in] | bit_pos | - Variable that holds the position of bit on which the data will be placed (1 - 7). |
[in] | hold_time | - eFUSE strobe hold time, depends on clock frequency of eFUSE controller |
There is only one programming scheme, which is single bit programming.
Pre-conditions:
Returns
returns status 0 if successful, else error code as follow.
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_OK - Success
195
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
sl_si91x_efuse_memory_mapped_read_word#
sl_status_t sl_si91x_efuse_memory_mapped_read_word (uint16_t address, uint16_t * read_word, uint32_t soc_clk)
This API is used to read the 1 word (16 bits) of data from 32x8 byte eFUSE memory (OTP) in memory mapped mode.
[in] | address | - Holds the address from where we are reading the 1 word (max value is 0x31). of data (max value is 0x31). |
[out] | read_word | - Pointer that points to the data which is stored in the efuse |
[in] | soc_clk | - It is input clock frequency of eFUSE controller in range between (1000000 -180000000). |
Returns
returns status 0 if successful, else error code as follow.
SL_STATUS_INVALID_PARAMETER (0x0021) - The parameter is an invalid argument
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_OK - Success
219
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
sl_si91x_efuse_memory_mapped_read_byte#
sl_status_t sl_si91x_efuse_memory_mapped_read_byte (uint16_t address, uint8_t * read_byte, uint32_t soc_clk)
This API is used to read a 1 byte of data from 32x8 byte eFUSE memory(OTP) in memory mapped mode.
[in] | address | - Holds the address from where we are reading the 1 byte of data (max value is 0x31). |
[out] | read_byte | - Pointer that points to the 8 bit data which is stored in the efuse |
[in] | soc_clk | - It is input clock frequency in range between (1000000 -180000000). |
Returns
returns status 0 if successful, else error code as follow.
SL_STATUS_INVALID_PARAMETER (0x0021) - The parameter is an invalid argument
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_OK - Success
241
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
sl_si91x_efuse_fsm_read_byte#
sl_status_t sl_si91x_efuse_fsm_read_byte (uint16_t address, uint8_t * read_byte, uint32_t soc_clk)
This API is used to read a 1 byte of data from 32x8 byte eFUSE memory (OTP) in fsm mode.
[in] | address | - Holds the address from where we are reading the 1 byte of data (max value is 0x31). |
[out] | read_byte | - Pointer that points to the 8 bit data which is stored in the efuse |
[in] | soc_clk | - It is input clock frequency in range between (1000000 -180000000). |
Returns
returns status 0 if successful, else error code as follow.
SL_STATUS_INVALID_PARAMETER (0x0021) - The parameter is an invalid argument
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_OK - Success
263
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
sl_si91x_efuse_enable#
__STATIC_INLINE void sl_si91x_efuse_enable (void )
This API is used to enable the EFUSE.
N/A |
Returns
none
273
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h
sl_si91x_efuse_disable#
__STATIC_INLINE void sl_si91x_efuse_disable (void )
This API is used to Disable the EFUSE.
N/A |
Returns
none
291
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_efuse.h