查看ESP8266 Sleep的源代码
←
ESP8266 Sleep
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
== 概述 == ESP8266 系列芯片提供以下三种可配置的睡眠模式,您可以根据应用按需选用: * Modem-sleep * Light-sleep * Deep-sleep 三种模式的区别如下: [[文件:Esp8266-sleep.jpg]] <br><br> == Modem Sleep == === 特性 === 目前 ESP8266 的 Modem-sleep 仅工作在 Station 模式下,连接路由器后生效。ESP8266 通过 Wi-Fi 的 DTIM Beacon 机制与路由器保持连接 (一般路由器的 DTIM Beacon 间隔为 100 ms ~ 1000 ms) 在 Modem-sleep 模式下,ESP8266 会在两次 DTIM Beacon 间隔时间内,关闭 Wi-Fi 模块电路,达到省电效果,在下次 Beacon 到来前自动唤醒。睡眠时间由路由器的 DTIM Beacon 时间决定。睡眠同时可以保持与路由器的 Wi-Fi 连接,并通过路由器接受来自手机或者服务器的交互信息。 <br><br> === 接口 === SDK API,通过以下接口进入 Modem-sleep 模式: <source lang=cpp> wifi_set_sleep_type(MODEM_SLEEP_T) </source> 注意:在 Modem-sleep 模式下,系统可以自动被唤醒,无需配置接口 <br><br> === 应用 === Modem-sleep 一般用于必须打开芯片 CPU 的应用场景,例如 PWM 彩灯,需要 CPU 实时控制 <br><br> == Light Sleep == === 特性 === Light-sleep 的工作模式与 Modem-sleep 相似,不同的是,除了关闭 Wi-Fi 模块电路以外,在 Light-sleep 模式下,还会关闭时钟并暂停内部 CPU,比 Modem-sleep 功耗更低 <br><br> === 接口 === SDK API,通过以下接口进入 Light-sleep 模式: <source lang=cpp> wifi_set_sleep_type(LIGHT_SLEEP_T) </source> 在 Wi-Fi 连接后,并且 CPU 处于空闲状态时,会自动进入 Light-sleep 状态 <br><br> === 唤醒 === 在 Light-sleep 模式下,CPU 在暂停状态下不会响应来自外围硬件接口的信号与中断,因此需要配置通过外部 GPIO 信号将 ESP8266 唤醒,唤醒过程小于 3 ms 通过 GPIO 唤醒只能配置为电平触发模式,接口如下: <source lang=cpp> void gpio_pin_wakeup_enable(uint32 i, GPIO_INT_TYPE intr_state); * uint32 i 唤醒功能的 IO 序号 * GPIO_INT_TYPE intr_state 唤醒的触发模式 GPIO_PIN_INTR_LOLEVEL/GPIO_PIN_INTR_HILEVEL </source> <br><br> === 应用 === Light-sleep 模式可用于需要保持与路由器的连接,可以实时响应路由器发来的数据的场合。并且在未接收到命令时,CPU 可以处于空闲状态。⽐比如 Wi-Fi 开关的应用,大部分时间 CPU 都是空闲的,直到收到控制命令,CPU 才需要进行 GPIO 的操作 ;;注意:若系统应用中有小于 DTIM Beacon 间隔时间的循环定时,系统将不能进入 Light-sleep 模式 <br><br> == Deep Sleep == === 特性 === 相对于其他两种模式,Deep-sleep 由用户控制,调用接口函数就可立即进入 Deep-sleep 模式 在该模式下,芯片会断开所有 Wi-Fi 连接与数据连接,进入睡眠模式,只有 RTC 模块仍然工作,负责芯片的定时唤醒 使用 Deep-sleep 必须将 GPIO16 与芯片 EXT_RSTB 管脚连接。 <br><br> === 接口 === SDK API, 通过以下接口使能 Deep-sleep: <source lang=cpp> void system_deep_sleep(uint32 time_in_us) </source> uint32 time_in_us =0 不会定时唤醒,即不会主动醒来 uint32 time_in_us ≠0 会在设定的时间后,⾃自动唤醒(单位μs) 可以通过以下接口配置 Deep-sleep 唤醒时的软件⼯工作流程,从而影响长期运行的平均功耗: <source lang=cpp> bool system_deep_sleep_set_option(uint8 option) deep_sleep_set_option(0) 由 init 参数的第 108 字节控制 Deep-sleep 醒来后的是否作 RF 校准 deep_sleep_set_option(1) 表示下一次 Deep-sleep 醒来后要作 RF 校准,功耗较大 deep_sleep_set_option(2) 表示下一次 Deep-sleep 醒来后不作 RF 校准,功耗较小 deep_sleep_set_option(4) 表示下一次 Deep-sleep 醒来后,不打开 RF,和 Modem-sleep 一样,电流最小 </source> 说明: init 参数即 esp_init_data_default.bin 内的参数值。⽐比如将第108 字节的数据改为 8,并且调用 deep_sleep_set_option(0),则表示芯片每 8 次 Deep-sleep 唤醒才会进行 RF 校准。应用详情参考:https://github.com/EspressifSystems/low_power_voltage_measurement/wiki <br><br> === 唤醒 === <br><br> === 应用 === <br><br> <br><br> <br><br> == 参考 == * 9B-ESP8266__Sleep__Function Description: http://bbs.espressif.com/download/file.php?id=534 <br><br> <br><br> <br><br> <br><br> <br><br> <br><br> <br><br> <br><br> <br><br>
返回到
ESP8266 Sleep
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面