随着电子产品的越来越普及,尤其是很多电子产品都用上了电池供电,那么我们就不得不考虑电池的续航能力的问题,从而,我们必须要考虑电子产品功耗的问题。因为功耗直接关系到电池充一次电或换次干电池能使用多久的问题。大家都知道电池类的电子产品工作状态所占的时间只是很小很小很小的一部分,其余的时间产品都处于休眠待机状态。休眠待机状态的功耗直接影响电池的使用时间。
华大单片机因其出色的超低功耗特性,在有低功耗需求的使用场景中更具有优势。现在以HC32L136手册为例,我们可以看到当芯片进入深度休眠时,3V供电的时候功耗只有0.5uA。更可贵的是RAM和CPU的数据会保持,唤醒后直接就可以运行。
可以通过设置如下相关的位来设置以何种形式进入低功耗
SLEEPDEEP : 如果SLEEPDEEP 位被置位,执行休眠指令后会进入深度休眠,此时为超低功耗,SLEEPDEEP 位被清除,则进入普通休眠;
SLEEP-NOW: 如果 SLEEPONEXIT 位被清除,当 WFI 或 WFE 被执行时,微控制器立即进入休眠模式;
SLEEP-ON-EXIT: 如果 SLEEPONEXIT 位被置位,系统从最低优先级的中断处理程序中退出时,微控制器就立即进入休眠模式;
如何退出深度休眠模式:
如果执行 WFI 指令进入休眠模式,任意一个被嵌套向量中断控制器响应的外设中断(Deep Sleep 下可运行的 周边模块中断)都能将系统从休眠模式唤醒。
进入休眠之前芯片相关端口的设置如下
没有使用的IO: 同一系列的芯片按最大引脚数来设置,没有引出来的引脚也要设置,在进入deepsleep或者sleep之前,可以配置为上拉输入,或者输出低电平;
已经使用的输出的引脚: 保持输出电平和外部电路等电势,或者改为输入;
已经使用的输入引脚: 外部电路有确定的电平,可以保持输入状态(外部有上拉或者下拉的,内部可以不设上下拉);
ADC的引脚: 还是保持ADC的属性(GPIO的ADS使能,init函数不需要(init函数可能会把ADS清零));
使用到的LCD相关引脚: 配置为模拟端口。
功耗实测
使用HC32L110和HC32L136的开发板对深度休眠进行测试,测试发现在深度休眠时两个芯片的功耗都在0.4uA以下,而且相当稳定。测试图如下
|