nanoFramework ESP32 使用键盘睡眠后无法唤醒

Posted

技术标签:

【中文标题】nanoFramework ESP32 使用键盘睡眠后无法唤醒【英文标题】:nanoFramework ESP32 Not waking up after sleep with Keypad 【发布时间】:2021-01-20 10:41:24 【问题描述】:

我正在做一个带有数字键盘的项目,这是一个在 nanoFramework 中编程的 ESP32(CoreLibrary 1.9.0 p5,Esp32 1.3.2 p9)。 现在我想通过按键之一唤醒控制器。 用于处理矩阵的代码工作正常,按钮响应和工作:

var row4 = controller.OpenPin(32);
row4.SetDriveMode(GpioPinDriveMode.Output);
...
var col3 = controller.OpenPin(12);
col3.SetDriveMode(GpioPinDriveMode.InputPullDown);

在睡觉之前,我将驱动模式重新定义为一个引脚为 3.3V:

Sleep.EnableWakeupByPin(Sleep.WakeupGpioPin.Pin32, 1);
col3.SetDriveMode(GpioPinDriveMode.OutputOpenDrainPullUp);
Sleep.StartLightSleep();

所以ESP32按预期进入睡眠状态,但我无法用pin 32唤醒它。

我尝试过的:

当涉及到 RTC 引脚时,引脚编号似乎有点奇怪。 Pin32 似乎是 RTC-Pin9。但是WakeupGpioPin-enum 只包含普通的 GPIO 编号。 尝试交换两者,Pin12 为 WakeupPin,Pin32 为 Pullup。 从外部将引脚拉高或拉低 - 无效 根据espressif Docs,EnableWakeupByPin 中的“电平”参数似乎是电压电平和 1 蜂鸣音高。不过,我也试过 0。

【问题讨论】:

【参考方案1】:

引脚编号是根据 Espressif 文档。除非应用程序使用,否则您无需在调用 EnableWakeupByPin 之前配置 GPIO 引脚。

我已经对此进行了测试,看起来 Sleep.EnableWakeupByPin() 不起作用。我们将调查原因并加以解决。

尝试使用 Sleep.EnableWakeupByMultiPins()。我已经测试过了,这很有效。

Sleep.EnableWakeupByMultiPins(Sleep.WakeupGpioPin.Pin32, Sleep.WakeupMode.AnyHigh);

【讨论】:

太完美了,谢谢阿德里安。 GitHub 上已经有问题了吗?

以上是关于nanoFramework ESP32 使用键盘睡眠后无法唤醒的主要内容,如果未能解决你的问题,请参考以下文章

快速入门 .NET nanoFramework 开发 ESP32-Pico 应用

c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动

炫酷 RGB 之.NET nanoFramework 点灯大师

NanoFramework 以 AP 模式扫描 wifi 网络

用c#实现编写esp32单片机获取DHT11温度传感器参数

esp32怎么外接按键