Nordic的低功耗有两种模式:System Off和System On
SYSTEM_ON
System on状态有持续延迟和低功率子模式。当系统空闲进入 System On 模式时,默认情况下将处于低功耗子模式,通常最低功耗为 1.9uA (nRF52832) 或 1.5uA(nRF52840),包括 LFCLK 和 RTC。这是连接事件之间的正常状态。CPU 在计时器、外围设备或pin中断时重新启动。
SYSTEM_OFF
深省电模式,工作电流为 300nA (nRF52832) 或 400nA (nRF52840),在该模式下,系统的内核和所有在运行的任务都会停止,也就是说时钟也停止,相当于关机状态。可以直接控制 POWER 相关寄存器使系统进入 System OFF 模式(NRF_POWER->SYSTEMOFF = 1; ),也可以通过API函数(sleep_mode_enter() 或 nrf_pwr_mgmt_run() 此函数执行 __WFE() 指令进入睡眠前清除所有事件),可以参考 SDK 中的 nrf_pwr_mgt 例子,系统进入 System OFF 模式会保留 GPIO 之前的状态,包括 GPIO 的输入/输出、I2C 总线、SPI 总线等,所以在进入 System OFF 模式前应该将 GPIO 都释放掉,使用 nrf_gpio_cfg_default(pin)释放 GPIO,同时,如果有 I2C 或 SPI 等总线外设也需要释放掉;可以通过复位、GPIO 中断或 NFC 信号(增加100nA)进行唤醒 。从 System OFF 模式中唤醒程序会发生复位,参考 832 product spec 文档(Nordic Semiconductor Infocenter)
我使用的低功耗模式
此项目中选择的低功耗模式是System On的低功率子模式。
当进入System on低功率子模式,任何中断都能唤醒。但是在BLE中,需要蓝牙事件才能唤醒。(蓝牙事件比如:蓝牙通信)
在While循环里执行idle_state_handle();,当没有蓝牙通信事件时,会一直处于睡眠状态。
研发类型的需求和讨论,如有需要请联系鄙人。京鸿科技有限公司邮箱:zhongweixiong@kyohoon.com,联系电话:15507589165 钟先生