nanoFramework ESP32键盘睡眠后未唤醒

时间:2020-10-05 14:35:19

标签: c# sleep esp32 keypad nanoframework

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

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会按预期进入睡眠状态,但是我无法通过32号针将其唤醒。

我尝试过的事情:

  • 对于RTC引脚,引脚编号似乎有些奇怪。 Pin32似乎是RTC-Pin9。但是WakeupGpioPin枚举只包含普通的GPIO编号。
  • 试图交换两者,即Pin12作为WakeupPin和Pin32作为上拉。
  • 从外部将引脚拉高或拉低-没有效果
  • 根据espressif DocsEnableWakeupByPin中的“ level”参数似乎是电压电平和1蜂鸣。但是,我也尝试了0。

1 个答案:

答案 0 :(得分:1)

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

我已经测试过了,看来Sleep.EnableWakeupByPin()无法正常工作。我们将调查原因并予以解决。

尝试使用Sleep.EnableWakeupByMultiPins()。我已经测试过并且可以正常工作。

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