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();
}

 

posted @ 2023-12-07 15:20  yeshenmeng  阅读(238)  评论(0编辑  收藏  举报