乐鑫技术交流
直播中

李志静

7年用户 1403经验值
私信 关注
[问答]

如何将GPIO16连接到CHIP_PD以获得深度睡眠模式?

为了方便PCB布局(GPIO16 / PIN 8接近CHIP_PD / PIN 7),我们想知道是否可以将GPIO16连接到nRESET / PIN 32以外的CHIP_PD,以在退出深度睡眠模式时重置芯片。

如果我们将 GPIO16 连接到 nRESER 引脚,一切正常,可以退出深度睡眠并重新启动。同时,如果我们通过外部PIO将CHIP_PD引脚拉低,然后拉高,芯片也可以成功重启。

但是,如果我们将 GPIO16 连接到 CHIP_PD(当然也带有 VCC 的上拉),启动信息将如下所示:

"
ets 2013 年 1 月 8 日,第一个原因:0,启动模式:(3,6)

未知重置
ets_main.c

"

Interesting that there is still has a notice of  "ets_main.c".

可能是什么原因,有没有办法避免它并成功重新启动?可以共享任何特性数据,包括这两个引脚的时序?

回帖(1)

王超

2024-7-8 11:34:18
要将GPIO16连接到CHIP_PD以获得深度睡眠模式,您可以按照以下步骤操作:

1. 首先,确保您的ESP8266模块的GPIO16(PIN 8)和CHIP_PD(PIN 7)之间的距离足够近,以便在PCB布局中方便连接。

2. 将GPIO16连接到CHIP_PD。这可以通过在GPIO16和CHIP_PD之间放置一个导线或连接器来实现。同时,确保GPIO16已经连接到VCC,以提供上拉。

3. 在您的代码中,设置GPIO16为输出模式。这可以通过以下代码实现:

```c
gpio_pin_config_t pin_conf;
pin_conf.pin = GPIO_PIN_16;
pin_conf.mode = GPIO_MODE_OUTPUT;
pin_conf.pull_down_en = 0;
pin_conf.pull_up_en = 1;
gpio_config(&pin_conf);
```

4. 在进入深度睡眠模式之前,将GPIO16设置为低电平,以使CHIP_PD保持低电平。这可以通过以下代码实现:

```c
gpio_output_set(1 << GPIO_PIN_16, 0, 0, 0);
```

5. 进入深度睡眠模式。在ESP8266中,可以使用以下代码进入深度睡眠模式:

```c
esp_deep_sleep_start();
```

6. 当需要唤醒ESP8266时,将GPIO16设置为高电平,以使CHIP_PD保持高电平。这可以通过以下代码实现:

```c
gpio_output_set(0, 1 << GPIO_PIN_16, 0, 0);
```

7. 检查启动信息,确保ESP8266已成功从深度睡眠模式唤醒。如果启动信息显示未知重置,您可能需要检查GPIO16和CHIP_PD之间的连接,以及代码中的设置。

通过以上步骤,您应该能够将GPIO16连接到CHIP_PD,并在退出深度睡眠模式时重置芯片。请注意,这种方法可能需要根据您的具体硬件和软件环境进行调整。
举报

更多回帖

×
20
完善资料,
赚取积分