Esp32-C3使用gpio唤醒深度睡眠,rtc gpio0~5始终置低,导致低电平唤醒一直复位,高电平唤醒无效?

为省电环保,需要让芯片进入深度睡眠,然后在需要时唤醒它,而不是复位重启
我使用vscode+platformIO+arduino开发DfRobot的esp32-c3的这块开发板。因为esp32-C3官方称它深度水睡眠时电流只有5μa,这样的功耗是非常诱人的。为了在不需要它工作时让它休眠,需要时再唤醒它,这想着就觉得很爽,再加上这块板子只有20.5mm×25mm这么大,完美的environment friendly。

esp32-c3和esp32系列不一样不支持ext0/1唤醒,也没有Touchpad不支持触摸唤醒,而esp_sleep_gpio_wakeup仅支持lightsleep。根据乐鑫官方文档所说esp32-c3可以使用

esp_deep_sleep_enable_gpio_wakeup(uint64_t gpio_pin_mask, esp_deepsleep_gpio_wake_up_mode_t mode )

这个函数就可以把芯片从deepsleep中唤醒:

并且似乎不需要在使用这个函数之前把IO拉高或拉低。


问题描述

事实情况似乎和官方文档所说的不一样

根据乐鑫的官方文档,GPIO 0~5都是RTC GPIO,于是我先用上面这个函数设置高电平唤醒,然后进入睡眠

esp_deep_sleep_enable_gpio_wakeup(1, ESP_GPIO_WAKEUP_GPIO_HIGH);
esp_deep_sleep_start();

进入深度睡眠后,用万用表测得1号引脚为低电平,但连线接3v3后无反应,GPIO 1始终置低。于是我设置低电平唤醒:

esp_deep_sleep_enable_gpio_wakeup(1, ESP_GPIO_WAKEUP_GPIO_LOW)
esp_deep_sleep_start();

睡眠后可以唤醒,但由于GPIO 0始终置低,所以进入睡眠后会立即唤醒导致芯片一直处于唤醒状态。我还尝试了0,3,4,5号IO都是如此。尤其比较离谱的是这个板子GPIO 2始终置高,导致使用GPIO 2高电平唤醒就会和0,1,3~5正好相反,设置高电平唤醒时芯片一直会不断被唤醒,无法睡眠,接地时也无任何反应。


原因分析:

可能需要在芯片进入睡眠前,对GPIO进行配置

根据上述情况分析,GPIO本身的状态应该是和开发板外部电路设计有关,本身不是问题,问题在于当把IO拉高或拉低时,芯片并没有对信号做出回应。所以应该需要配置IO使它对信号能够做出反应。


解决方案:

最后还得是github

在github上找了一番,发现有个人也问这个问题,而且最后他自己解决了,巧的是他也用arduino框架开发C3。

原文网址:https://github.com/espressif/arduino-esp32/issues/6656
看了他的代码,简化了一下,使用以下代码即可完成使用指定GPIO唤醒Esp32-C3深度睡眠:

//定义用于RTC_GPIO唤醒的IO,0b为二进制,“0010”为2^(gpio 1)的二进制数
//gpio0~3 为0b1111,即2^0+2^1+2^2+2^3=15的二进制数
const uint64_t WAKEUP_PIN_BITMASK = 0b0010;
//配置唤醒源
gpio_deep_sleep_hold_dis();     //在深度睡眠时禁用所有数字gpio pad保持功能。
esp_deep_sleep_enable_gpio_wakeup(WAKEUP_PIN_BITMASK, ESP_GPIO_WAKEUP_GPIO_HIGH);
gpio_set_direction(GPIO_NUM_1, GPIO_MODE_INPUT);    //GPIO定向,设置为输入或输出
//开始睡眠
esp_deep_sleep_start();

完美解决!

Esp32-C3使用gpio唤醒深度睡眠,rtc gpio0~5始终置低,导致低电平唤醒一直复位,高电平唤醒无效?相关推荐

  1. ESP32入门之GPIO:点亮一盏LED灯

    目录 前言 一.硬件准备 二.使用步骤 1.硬件连接 2. 代码实现 2.1 LED初始化 2.2 KEY初始化 2.3 main函数 2.4 中断处理与任务函数 三 完整代码 总结 参考资料 ​​ ...

  2. Arduino ESP32 通过定时器(Timer)功能唤醒深度睡眠

    Arduino ESP32 通过定时器(Timer)功能唤醒深度睡眠 通过定时器功能,设置5秒,时间到就唤醒深度睡眠 实例代码 /*通过定时器功能唤醒深度睡眠(设置为5秒) */#define uS_ ...

  3. 乐鑫Esp32学习之旅⑦ esp32上利用GPIO中断做一个按键的短按和长按的回调事件,再也无须担心触发源。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  4. 老宇哥带你玩转ESP32:03 GPIO数字输入与数字输出

    今天我们来点灯. 多路复用器与GPIO矩阵 ESP32芯片有34个物理 GPIO Pad,每个Pad可以当作通用IO,也可以当作外设的引脚,GPIO 引脚通过非常复杂的 GPIO 矩阵互连,这基本上就 ...

  5. ESP32 + ESP-IDF |GPIO 01 - 驱动外部两个LED灯,以每300ms的时间间隔闪烁

    文章目录 一.前言 二.VSCODE + ESP-IDF 2.1.快速创建项目 2.2.选择串口通道,ESP芯片型号 三.代码 3.1.main.c 3.1.1.头文件 3.1.2.全局变量 3.1. ...

  6. STM32进入低功耗模式以及唤醒(RTC+中断)

    此文献给做单片机工作的同僚,希望大家在嵌入式硬件的道路上越走越远,第一篇,望大家多多指导,不喜勿喷! 这里主要说一下,本人在调试STM32低功耗功能时遇到的问题以及解决思路与大家分享一下. 在确认使用 ...

  7. STM32CubeMX | STM32 F1系列HAL库低功耗STOP和STANDBY模式唤醒(RTC时钟唤醒+外部中断唤醒示例)

    STM32CubeMX | STM32 F1系列HAL库低功耗STOP和STANDBY模式唤醒(RTC时钟唤醒+外部中断唤醒示例) 目录 STM32CubeMX | STM32 F1系列HAL库低功耗 ...

  8. Esp32 C3 Arduino 串口开发(1)

    网上合宙的esp32 C3 的测试版 9.9元,简洁小巧,用于学习测试非常方便.原来是装的Luatos,可以直接用Arduino开发.Arduino安装的为最新版 V2.00RC8,有点类似 vSco ...

  9. Arduino IDE ESP32 C3 “Some indexes could not be updated.”错误

    过程 最近用XIAO ESP32 C3的板子做个小项目,使用Arduino IDE进行开发,在按照文档步骤,在File\Perference\Additional Board Manager URLs ...

最新文章

  1. 如何正确选择聚类算法? | CSDN博文精选
  2. pythonrequest方法_解决Python requests 报错方法集锦
  3. 不知道对象的传递那些参数
  4. 阅读开源源码的正确姿势建议
  5. MySQL 避免行锁升级为表锁——使用高效的索引
  6. modprobe:FATAL: could not load /lib/modules/2.6.35-22-generic/modules.dep No such file or directory
  7. [JavaWeb-HTML]CSS与html结合方式
  8. shebang_Shebang来Java了吗?
  9. 机器学习复制粘贴笔记要点
  10. ant-design-vue 环境搭建及入门
  11. mysql权限系统的工作原理_Mysql权限系统工作原理
  12. 24 反转链表(第3章 高质量的代码-代码的鲁棒性)
  13. ADO.NET连接Access数据库实例
  14. CSS优先级、CSS选择器、编写CSS时的注意事项
  15. R和Rstudio安装教程
  16. VSCode加入右键功能菜单
  17. webpack插件之HtmlWebpackPlugin
  18. authorize.AuthorizationException: User: livy is not allowed to impersonate
  19. html学生项目总结反思,小学月考总结与反思(精选10篇)
  20. 屏蔽百度搜索右边的热点和广告推广

热门文章

  1. Cent OS网络基本配置——修改配置文件
  2. Qt的gui编程是,点击一次button出现两次action
  3. SATA电源线的作用
  4. Spring Boot3.0正式发布及新特性解读
  5. 2022-2027年中国分散染料行业市场全景评估及发展战略规划报告
  6. linux iptable命令用法
  7. 关于Flash Media Server
  8. 50欧姆 50Ω 同轴双端口衰减器(DC-40GHz ;2W---10KW)
  9. 蓝桥杯 2019年号字串
  10. OpenCV学习之路(附加资料分享)