ESP32-S3的GPIO19/GPIO20始终为高电平,如何配置为通用GPIO?
解决ESP32-S3 GPIO19/GPIO20始终高电平的问题
针对你遇到的问题,以下是几个可行的排查和解决步骤:
禁用JTAG引脚复用
ESP32-S3的GPIO19(TDI)和GPIO20(TDO)默认被JTAG调试功能占用,即使禁用TinyUSB也不会自动释放这两个引脚。需要在ESP-IDF的menuconfig中修改JTAG配置:- 打开
idf.py menuconfig - 进入
Component config > ESP System Settings > JTAG related options - 选择
Use alternate pins for JTAG,将JTAG切换到其他空闲引脚;或者直接禁用Enable JTAG(不推荐,会失去调试功能) - 保存配置后重新编译烧录
- 打开
显式配置引脚上下拉模式
即使设置为输出模式,引脚可能默认带有上拉电阻导致无法输出低电平。在设置输出方向后添加上下拉配置:#define CAM_PWR GPIO_NUM_20 // ... gpio_pad_select_gpio(CAM_PWR); gpio_set_direction(CAM_PWR, GPIO_MODE_OUTPUT); // 添加下拉配置确保低电平有效 gpio_set_pull_mode(CAM_PWR, GPIO_PULLDOWN_ONLY); gpio_set_level(CAM_PWR, 0);排查硬件冲突
检查GPIO19/20是否连接了外部上拉电阻,或者与其他模块(比如你提到的摄像头)的硬件电路存在冲突。可以断开外部电路,单独测试引脚输出是否正常。确认代码执行顺序
确保GPIO初始化代码在其他可能占用这两个引脚的外设初始化之前执行,避免其他驱动抢先占用引脚资源。
内容的提问来源于stack exchange,提问作者Adharsh K
相关产品推荐
相关产品推荐

