eFuse 使用¶
FAQ1 eFuse原理及作用¶
eFuse是一种通过熔化金属熔丝实现数据存储的一次性可编程存储器,其数据一旦写入便无法修改或擦除。
eFuse广泛应用于存储设备唯一身份识别码(ID)、加密密钥等敏感信息,以确保数据安全性和完整性。
FAQ2 思澈量产芯片eFuse存储区域¶
思澈量产的 SF32LB55X / SF32LB56X / SF32LB58X / SF32LB52X 系列芯片,eFuse 共 256 Bytes,分为 BANK0->BANK3 四个区域,每个区域 32 Bytes,其中 BANK0 和 BANK3 已经占用,用户可以使用 BANK1 和 BANK2。
FAQ3 什么场景会使用eFuse保存数据¶
思澈量产的 SF32LB55X / SF32LB56X / SF32LB58X 系列芯片都有内封 FLASH,一般来说用户的一些特殊数据可以保存在内封 FLASH 的 OTP 区域即可,基本上不需要使用 eFuse。
思澈量产的 SF32LB52X系列芯片,大部分都没有内封 FLASH,用户的一些特殊数据,如算法加密码等需要保存在 eFuse。
概括来说,有内封 FLASH 的芯片,建议使用 FLASH 的 OTP 区域,没有内封 FLASH 的芯片,如无其他可用方案,可以使用 eFuse,需要注意最多 64 Bytes可用。
FAQ4 eFuse写数据的硬件要求¶
对于 SF32LB55X / SF32LB56X / SF32LB58X 系列芯片,读写 eFuse 时硬件上没有特殊要求。
对于 SF32LB52X 系列芯片,写 eFuse 时硬件上要求 PA30 必须外供 2.5V,且 AVDD_ANA 不低于 2.5V。
FAQ5 eFuse读写API¶
/**
* @brief Write data to efuse starting from bit_offset
* @param bit_offset bit_offset in efuse, must be 32bits aligned, bank0: 0~255, bank1: 256~511, bank2: 512~767, bank2: 768~1023
* @param data point to the data to be written
* @param size data size in byte, must be multiple of 4bytes and written data cannot cross bank boundary
* @retval size successfully written
*/
int32_t HAL_EFUSE_Write(uint16_t bit_offset, uint8_t *data, int32_t size);
/**
* @brief Read data to efuse starting from bit_offset
* @param bit_offset bit_offset in efuse, must be 32bits aligned, bank0: 0~255, bank1: 256~511, bank2: 512~767, bank2: 768~1023
* @param data point to buffer to save read data
* @param size data size in byte, must be multiple of 4bytes and read data cannot cross bank boundary
* @retval size successfully read
*/
int32_t HAL_EFUSE_Read(uint16_t bit_offset, uint8_t *data, int size);
FAQ6 SF32LB52X芯片烧录算法加密数据到eFuse完整方案¶
SF32LB52X烧录算法加密数据到 eFuse,solution 提供如下方案:
对于裸芯片烧录,需要制作烧录底座及烧录夹具,若是已经贴片在PCBA板上则需要制作烧录夹具,硬件上需要满足 FAQ2 描述。
方案提供了一个运行在 ram 的工程,用户可以在工程中添加算法计算代码并调用 API 将数据写入 eFuse。 请参考 算法调试工程,按照附件中说明文档描述使用即可,附件中的示例工程是运行在ram上的,提供了动态库供用户通过串口将ram bin下载到目标芯片运行。