ESP32软件方式固化VDD_SDIO为3.3V
参考官方文档:
1、乐鑫efuse工具使用:espefuse.py - ESP32 - — esptool.py latest documentation (espressif.com)
2、乐鑫efuse库使用:eFuse Manager - ESP32 - — ESP-IDF 编程指南 latest 文档 (espressif.com)
软件方式固化VDD_3V3之前:
使用乐鑫efuse工具 espefuse.py -p COM17 summary读取EMS控制器设备efuse信息如下:
在软件中读取相关位信息如下:
3.3V相关的电源控制位为0,之后设置相关控制位为1,然后复位后再次读取:
已通过软件的方式将3.3相关的电源控制位设置为1,之后再用乐鑫工具读取:
可见通过软件的方式成功将ESP32的电源固化为3.3V,避免低温工作异常。设置成功后ESP32启动的时候将忽略IO12引脚,产品设计时该引脚可用作其它功能。
固化代码如下:
#include "esp_efuse.h" #include "soc/efuse_reg.h" #include "esp_efuse_table.h" #define TAG "[MAIN]" static void efuse_fixed_vdd_to_3v3(void) { if (!esp_efuse_read_field_bit(ESP_EFUSE_XPD_SDIO_REG)) { ESP_LOGW(TAG, "efuse read xpd_sdio: false"); esp_efuse_write_field_bit(ESP_EFUSE_XPD_SDIO_REG); } else { ESP_LOGW(TAG, "efuse read xpd_sdio: true"); } if (!esp_efuse_read_field_bit(ESP_EFUSE_SDIO_TIEH)) { ESP_LOGW(TAG, "efuse read sdio_tieh: false"); esp_efuse_write_field_bit(ESP_EFUSE_SDIO_TIEH); } else { ESP_LOGW(TAG, "efuse read sdio_tieh: true"); } if (!esp_efuse_read_field_bit(ESP_EFUSE_SDIO_FORCE)) { ESP_LOGW(TAG, "efuse read sdio_force: false"); esp_efuse_write_field_bit(ESP_EFUSE_SDIO_FORCE); } else { ESP_LOGW(TAG, "efuse read sdio_force: true"); } } void app_main (void) { vTaskDelay(pdMS_TO_TICKS(100)); efuse_fixed_vdd_to_3v3(); }