nanoFramework ESP32 用键盘睡觉后不醒来
nanoFramework ESP32 Not waking up after sleep with Keypad
我正在做一个带有数字小键盘的项目,这是一个在 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 蜂鸣 HIGH。不过,我也试过 0.
管脚编号符合 Espressif 文档。除非应用程序使用,否则您无需在调用 EnableWakeupByPin 之前配置 GPIO 引脚。
我已经对此进行了测试,看起来 Sleep.EnableWakeupByPin() 无法正常工作。我们会调查原因并修复它。
尝试使用 Sleep.EnableWakeupByMultiPins()。我已经测试过,并且有效。
Sleep.EnableWakeupByMultiPins(Sleep.WakeupGpioPin.Pin32, Sleep.WakeupMode.AnyHigh);
我正在做一个带有数字小键盘的项目,这是一个在 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 蜂鸣 HIGH。不过,我也试过 0.
管脚编号符合 Espressif 文档。除非应用程序使用,否则您无需在调用 EnableWakeupByPin 之前配置 GPIO 引脚。
我已经对此进行了测试,看起来 Sleep.EnableWakeupByPin() 无法正常工作。我们会调查原因并修复它。
尝试使用 Sleep.EnableWakeupByMultiPins()。我已经测试过,并且有效。
Sleep.EnableWakeupByMultiPins(Sleep.WakeupGpioPin.Pin32, Sleep.WakeupMode.AnyHigh);