概述 Modem-sleep 特性 接口说明 自动休眠 强制休眠 应用 Light-sleep 特性 接口说明 自动休眠 强制休眠 外部唤醒 应用 Deep-sleep 特性 接口说明 使能 Deep-sleep 配置 Deep-sleep 唤醒 自动唤醒 外部唤醒 应用 低功耗解决方案 ESP8266 低功耗解决⽅案 版本 1.5 版权 © 2019 关于本⼿册 本⽂向⽤户介绍了 ESP8266 系列芯⽚的睡眠模式和低功耗解决⽅案。 发布说明 ⽂档变更通知 ⽤户可通过乐鑫官⽹订阅技术⽂档变更的电⼦邮件通知。 证书下载 ⽤户可通过乐鑫官⽹下载产品证书。 ⽇期 版本 发布说明 2015.06 V1.0 ⾸次发布。 2016.04 V1.1 增加章节 4.5 低功耗解决⽅案。 2016.07 V1.2 增加关于 Light-sleep 的注意事项。 2016.08 V1.3 更新表 1-1 三种睡眠模式⽐较; 增加对于 Deep-sleep 特性的说明事项; 增加章节 4.3.1 ⾃动唤醒。 2018.05 V1.4 更新章节 3.3 外部唤醒。 2019.08 V1.5 更新表 1-1 三种睡眠模式⽐较。 ⽬录 1. 概述 1 ......................................................................................................................................... 2. Modem-sleep 2 ......................................................................................................................... 2.1. 特性! 2"........................................................................................................................................... 2.2. 接⼝说明! 2".................................................................................................................................... 2.2.1. ⾃动休眠! 2 ....................................................................................................................... 2.2.2. 强制休眠! 2 ....................................................................................................................... 2.3. 应⽤! 2"........................................................................................................................................... 3. Light-sleep 3 ............................................................................................................................. 3.1. 特性! 3"........................................................................................................................................... 3.2. 接⼝说明! 3".................................................................................................................................... 3.2.1. ⾃动休眠! 3 ....................................................................................................................... 3.2.2. 强制休眠! 3 ....................................................................................................................... 3.3. 外部唤醒! 3".................................................................................................................................... 3.4. 应⽤! 4"........................................................................................................................................... 4. Deep-sleep 5 ............................................................................................................................. 4.1. 特性! 5"........................................................................................................................................... 4.2. 接⼝说明! 5".................................................................................................................................... 4.2.1. 使能 Deep-sleep! 5 ........................................................................................................... 4.2.2. 配置 Deep-sleep! 5 ........................................................................................................... 4.3. 唤醒! 6"........................................................................................................................................... 4.3.1. ⾃动唤醒! 6".................................................................................................................................... 4.3.2. 外部唤醒! 6".................................................................................................................................... 4.4. 应⽤! 6"........................................................................................................................................... 4.5. 低功耗解决⽅案!6......................................................................................................................... 1. 概述 1. 概述 ESP8266 系列芯⽚提供三种可配置的睡眠模式,针对这些睡眠模式,我们提供了多种低 功耗解决⽅案,⽤户可以结合具体需求选择睡眠模式并进⾏配置。三种睡眠模式如下: • Modem-sleep • Light-sleep • Deep-sleep 三种模式的区别如表 1-1 所示。 表 1-1. 三种睡眠模式⽐较 项⽬ Modem-sleep Light-sleep Deep-sleep ⾃动 强制 ⾃动 强制 强制 Wi-Fi 连接 保持 断连 保持 断连 断连 GPIO 状态 未定义 未定义 未定义 (2 μA) Wi-Fi 关闭 关闭 关闭 系统时钟 开启 关闭 关闭 RTC 开启 开启 开启 CPU 开启 暂停 关闭 衬底电流 15 mA 0.4 mA ~ 20 μA 平均电流 DTIM = 1 16.2 mA 1.8 mA - DTIM = 3 15.4 mA 0.9 mA DTIM = 10 15.2 mA 0.55 mA 📖 说明: • 对于 Modem-sleep 和 Light-sleep 模式,SDK 提供接⼝来使能睡眠模式,并由系统底层决定何时进 ⼊睡眠。具体请参考第 2 章 Modem-sleep 和第 3 章 Light-sleep。 • 在 Deep-sleep 模式下,何时进⼊睡眠由⽤户控制,调⽤接⼝函数就可⽴即进⼊ Deep-sleep 模式。具 体请参考第 4 章 Deep-sleep。 • RTC (Real-Time Clock):实时时钟。 • DTIM (Delivery Traffic Indication Message):使⽤⽆线路由器时⽆线发送数据包的频率。 Espressif /1 9 2019.08 2. Modem-sleep 2. Modem-sleep 2.1. 特性 ⽬前 ESP8266 的 Modem-sleep 仅⼯作在 Station 模式下,连接路由器后⽣效。ESP8266 通过 Wi-Fi 的 DTIM Beacon 机制与路由器保持连接。 在 Modem-sleep 模式下,ESP8266 会在两次 DTIM Beacon 间隔时间内,关闭 Wi-Fi 模块 电路,达到省电效果,在下次 Beacon 到来前⾃动唤醒。睡眠时间由路由器的 DTIM Beacon 时间决定。睡眠同时可以保持与路由器的 Wi-Fi 连接,并通过路由器接受来⾃⼿ 机或者服务器的交互信息。 2.2. 接⼝说明 2.2.1. ⾃动休眠 系统通过以下接⼝进⼊ Modem-sleep 模式。 !"#"$%&'$%(&&)
*)&+,-./,$01//2$345 2.2.2. 强制休眠 ⽤户可以使系统强制进⼊ Modem-sleep 模式,即调⽤强制休眠接⼝,强制关闭射频。关 于强制休眠接⼝的说明,请参考《ESP8266 Non-OS SDK API 参考》中的 3.7 节 强制休 眠接⼝ 和 ESP8266 RTOS SDK API Reference 中的 4.12 节 Force Sleep APIs。 2.3. 应⽤ Modem-sleep ⼀般⽤于必须打开芯⽚ CPU 的应⽤场景,例如 PWM 彩灯,需要 CPU 实时 控制。 📖 说明: ⼀般路由器的 DTIM Beacon 间隔为 100 ms ~ 1,000 ms。 📖 说明: 在 Modem-sleep 模式下,系统可以⾃动被唤醒,⽆需配置接⼝。 ⚠ 注意: 强制休眠接⼝调⽤后,并不会⽴即休眠,⽽是等到系统空闲任务执⾏时才进⼊休眠。 Espressif /2 9 2019.08 3. Light-sleep 3. Light-sleep 3.1. 特性 Light-sleep 的⼯作模式与 Modem-sleep 相似,不同的是,除了关闭 Wi-Fi 模块电路以 外,在 Light-sleep 模式下,还会关闭时钟并暂停内部 CPU,⽐ Modem-sleep 功耗更低。 3.2. 接⼝说明 3.2.1. ⾃动休眠 系统通过以下接⼝进⼊ Light-sleep 模式。 !"#"$%&'$%(&&) *)&+16783$01//2$34 3.2.2. 强制休眠 ⽤户可以使系统强制进⼊ Light-sleep 模式,即调⽤强制休眠接⼝,强制关闭射频。关于 强制休眠接⼝的说明,请参考《ESP8266 Non-OS SDK API 参考》中的 3.7 节 强制休眠 接⼝ 和 ESP8266 RTOS SDK API Reference 中的 4.12 节 Force Sleep APIs。 3.3. 外部唤醒 在 Light-sleep 模式下,CPU 在暂停状态下不会响应来⾃外围硬件接⼝的信号与中断,因 此需要通过外部 GPIO 信号将 ESP8266 唤醒,硬件唤醒过程⼤约为 3 ms。由于 Wi-Fi 初 始化过程需要⼤约 1 ms,所以建议⽤户 5 ms 之后再对芯⽚进⾏操作。 通过 GPIO 唤醒只能配置为电平触发模式,接⼝如下。 9:";=>?(&$@)":$!>A&B)+B"='CD<"E<726-$6F3$3G2/<"='H$%'>'&4I5 ⚠ 注意: 在 Light-sleep 之前把处于输出状态的管脚改为输⼊状态,⽐如:MTDO、U0TXD、GPIO0,消除管脚上的 漏电,可使 Light-sleep 的功耗更低。 📖 说明: 在 Wi-Fi 连接后,并且 CPU 处于空闲状态时,会⾃动进⼊ Light-sleep 状态。 ⚠ 注意: 强制休眠接⼝调⽤后,并不会⽴即休眠,⽽是等到系统空闲任务执⾏时才进⼊休眠。 Espressif /3 9 2019.08 3. Light-sleep 例如:设置 GPIO12 为唤醒 GPIO 管脚。 726-$.60$-J3263+KD4I5 26F$LJFM$0/1/M3+2/N6280$6-$,JO$,3.6$JE=>?(&$@)":$!>A&B)+KDE<726-$26F$6F3N$1-1/P/14I5 3.4. 应⽤ Light-sleep 模式可⽤于需要保持与路由器的连接,可以实时响应路由器发来的数据的场 合。并且在未接收到命令时,CPU 可以处于空闲状态。⽐如 Wi-Fi 开关的应⽤,⼤部分时 间 CPU 都是空闲的,直到收到控制命令,CPU 才需要进⾏ GPIO 的操作。 uint32 i 唤醒功能的 IO 序号。 GPIO_INT_TYPE intr_state 唤醒的触发模式。 • GPIO_PIN_INTR_LOLEVEL • GPIO_PIN_INTR_HILEVEL 📖 说明: GPIO16 不能⽤于唤醒。 📖 说明: 若系统应⽤中有⼩于 DTIM Beacon 间隔时间的循环定时,系统将不能进⼊ Light-sleep 模式,如下图所示。 Light-sleep Light-sleep Modem-sleep Modem-sleep Espressif /4 9 2019.08 4. Deep-sleep 4. Deep-sleep 4.1. 特性 相对于其他两种模式,系统⽆法⾃动进⼊ Deep-sleep,需要由⽤户调⽤接⼝函数 %*%'&Q$;&&)$%(&&) 来控制。在该模式下,芯⽚会断开所有 Wi-Fi 连接与数据连接,进⼊ 睡眠模式,只有 RTC 模块仍然⼯作,负责芯⽚的定时唤醒。 4.2. 接⼝说明 4.2.1. 使能 Deep-sleep 通过以下接⼝使能 Deep-sleep。 9:";<%*%'&Q$;&&)$%(&&)+B"='CD<'"Q&$"=$B%45 参数说明: 4.2.2. 配置 Deep-sleep 可以通过以下接⼝配置 Deep-sleep 唤醒时的软件⼯作流程,从⽽影响⻓期运⾏的平均功 耗。 ?::(<%*%'&Q$;&&)$%(&&)$%&'$:)'":=+B"='R<:)'":=4 📖 说明: 在 Deep-sleep 状态下,GPIO 电平状态可以保持,具有 2 μA 的驱动能⼒ 。 uint32 time_in_us =0 不会定时唤醒,即不会主动醒来。 uint32 time_in_us ≠0 会在设定的时间后,⾃动唤醒(单位:μs)。 deep_sleep_set_option(0) 由 init 参数的第 108 字节控制 Deep-sleep 唤醒时是否作射频校准。 deep_sleep_set_option(1) 表示下⼀次 Deep-sleep 唤醒时要作射频校准,功耗较⼤。 deep_sleep_set_option(2) 表示下⼀次 Deep-sleep 唤醒时不作射频校准,功耗较⼩。 deep_sleep_set_option(4) 表示下⼀次 Deep-sleep 唤醒时不打开射频,和 Modem-sleep ⼀样,电流 最⼩。 Espressif /5 9 2019.08 4. Deep-sleep 4.3. 唤醒 4.3.1. ⾃动唤醒 在 Deep-sleep 状态下,可以将 GPIO16 (XPD_DCDC) 连接⾄ EXT_RSTB。计时到达睡眠 时间后,GPIO16 输出低电平给 EXT_RSTB 管脚,芯⽚即可被重置并被唤醒。 4.3.2. 外部唤醒 在 Deep-sleep 状态下,可以通过外部 IO 在芯⽚ EXT_RSTB 管脚上产⽣⼀个低电平脉 冲,芯⽚即可被重置并被唤醒。 4.4. 应⽤ Deep-sleep 可以⽤于低功耗的传感器应⽤,或者⼤部分时间都不需要进⾏数据传输的情 况。设备可以每隔⼀段时间从 Deep-sleep 状态醒来测量数据并上传,之后继续进⼊ Deep-sleep。也可以将多个数据存储于 RTC memory(RTC memory 在 Deep-sleep 模式 下仍然可以保存数据),然后⼀次发送出去。 4.5. 低功耗解决⽅案 我们提供了以下 8 种⽅案来减少 Deep-sleep 模式的功耗。 1. 设置⽴即进⼊ Deep-sleep,缩短设备进⼊ Deep-sleep 的时间。 函数定义: 9:";<%*%'&Q$;&&)$%(&&)$"=%'>='+B"='CD<'"Q&$"=$B%4 示例代码: SS.&&)T%(&&)<#:H=;<'W&=A&='+UXXXYKXXX4I 📖 说明: "="' 参数即 esp_init_data_default.bin 内的参数值。⽐如,将第 108 字节的数据改为 8,并且调⽤ ;&&)$%(&&)$%&'$:)'":=+X4,则表示芯⽚每 8 次 Deep-sleep 唤醒才会进⾏射频校准。⽤户可以参考 ESP8266 低功耗传感器示例应⽤,链接如下: https://github.com/EspressifSystems/low_power_voltage_measurement/wiki。 ⚠ 注意: 如果⾃动唤醒与外部唤醒须要同时作⽤,须要在外部电路设计时,使⽤合适的线逻辑操作电路。 Espressif /6 9 2019.08 4. Deep-sleep 2. 设置 Deep-sleep 唤醒后不进⾏射频校准,以缩短芯⽚初始化的时间和降低芯⽚初始化 时的电流。 %*%'&Q$;&&)$%(&&)$%&'$:)'":=+D4I 3. 适当降低射频功耗。 如果应⽤场景不需要较⾼的 Tx 的峰值,可以适当降低射频功耗。 使⽤ ESP8266 Download Tool(v1.2 及以上版本),在 RF InitConfig ⻚签修改射频功 耗。修改后⽣成的 esp_init_data_setting.bin ⽂件,可以替换 esp_init_data_default.bin ⽂件并下载。 4. 使⽤以下指令修改 BIN ⽂件,缩短 flash 初始化的时间并降低 flash 初始化时的电流。 )*'W:=<>;;$(:!T):!&H$;&&)%(&&)$VQ;Z)*=' 未外部声明,但可以直接调⽤。 📖 说明: ⽤户可以通过如下链接下载脚本⽂件 Add_Low-power_Cmd: https://www.espressif.com/en/support/download/other-tools?keys=ESP8266+Add+Low-power+Cmd Espressif /7 9 2019.08 4. Deep-sleep 因为发包动作持续时间短(与睡眠醒来的时间相⽐)、消耗能量少,建议集中发送数 据,在 Deep-sleep 醒来之后,⼀次发送多个数据包。 8. esp_iot_sdk_v1.4.0、esp_iot_rtos_sdk_v1.3.0 及其之后版本优化了降低功耗的能 ⼒,请使⽤新版本的 SDK。 📖 说明: 实际测试中发现,由于 Light-sleep 硬件唤醒时间短(约为 3 ms),如果应⽤场景中设备睡眠时间 <2s,宜 采⽤ Light-sleep ⼯作模式,更节省功耗;如果睡眠时间 >2s,则宜采⽤ Deep-sleep ⼯作模式,更节省功 耗。 Espressif /8 9 2019.08 免责申明和版权公告 本⽂中的信息,包括供参考的 URL 地址,如有变更,恕不另⾏通知。 ⽂档“按现状”提供,不负任何担保责任,包括对适销性、适⽤于特定⽤途或⾮侵 权性的任何担保,和任何提案、规格或样品在他处提到的任何担保。本⽂档不 负任何责任,包括使⽤本⽂档内信息产⽣的侵犯任何专利权⾏为的责任。本⽂ 档在此未以禁⽌反⾔或其他⽅式授予任何知识产权使⽤许可,不管是明示许可 还是暗示许可。 Wi-Fi 联盟成员标志归 Wi-Fi 联盟所有。蓝⽛标志是 Bluetooth SIG 的注册商标。 ⽂中提到的所有商标名称、商标和注册商标均属其各⾃所有者的财产,特此声 明。 版权归© 2019 乐鑫所有。保留所有权利。 乐鑫 IOT 团队 www.espressif.com