如何将ESP32-PICO-MINI的GPIO8(SD_DATA_1)上电默认电平设为低?
解决ESP32 GPIO8上电默认低电平的问题
硬件临时方案
- 若使用开发板,检查GPIO8是否搭载上拉电阻,如有则拆除;若为自研电路板,直接给GPIO8焊接10k-100kΩ的下拉电阻到GND,从硬件层面强制上电低电平。
软件永久解决方案(基于ESP-IDF)
1. 禁用SD卡外设默认初始化
GPIO8默认绑定SD_DATA_1功能,系统启动时会自动初始化SD卡外设导致引脚拉高,需先禁用该默认配置:
- 在Eclipse中打开ESP-IDF的
menuconfig(快捷键:Ctrl+Shift+P → 输入ESP-IDF: Open Configuration Editor) - 依次进入
Component config→SDMMC/SDIO/SD Host Controller - 取消勾选
SDMMC peripheral enabled by default选项,保存配置。
2. 启动早期设置GPIO8为低电平
无需等待app_main执行,在系统启动最早期阶段配置引脚:
- 代码中引入头文件:
#include "esp_rom_gpio.h" - 在
app_main函数的第一行(或更早的初始化代码中)添加:// 初始化GPIO8为输出模式并设置低电平 esp_early_gpio_init(GPIO_NUM_8); esp_early_gpio_set_direction(GPIO_NUM_8, GPIO_MODE_OUTPUT); esp_early_gpio_set_level(GPIO_NUM_8, 0);
3. 特殊型号的EFUSE配置(可选)
部分ESP32衍生型号(如ESP32-S3)中,GPIO8的默认功能由EFUSE固化,若上述方法无效,可通过EFUSE禁用SD卡引脚默认功能:
- 注意:EFUSE烧写后无法恢复,操作前确认芯片型号与需求
- 在终端执行ESP-IDF命令:
esp-idf.py efuse set SDIO_SLOT 0
验证
编译烧录固件后,使用示波器或万用表测量GPIO8上电瞬间的电平,确认无高电平脉冲输出。
内容的提问来源于stack exchange,提问作者peropata
相关产品推荐
相关产品推荐

