适用EM35XX、EFR32平台。
低功耗设备分为好几个模式,正常开发中一般选择的是EM2模式的休眠,所以在这里也是主要说一下EM2模式下的问题。
低功耗设备类型的选择,即在配置文件中选择低功耗设备。
低功耗必要的配置选择,看插件选择即可。实际上在配置文件上的选择插件也是在AFV2框架上进行代码的开关,所以,在低功耗设备中要真正地理解其本质,其实最终也是调用一个休眠函数而已,只是在AFV2上选择各种插件是已经安排好什么条件下可以进到该休眠的函数中,什么情况下不能进去而已(halSleepForMilliseconds(&sleepDuration);)。
定时唤醒,实际上只是传入一个参数,即多久时间醒来的参数以达到定时唤醒效果。
外部中断唤醒,需要把该管脚设置为外部中端,特别要说的是,进入休眠时可能存在上下电问题导致IO状态改变,所以最好是进入低功耗之前需要配置一下自己想要的状态,醒来时再一次配置一下自己想要的状态,那么应该在哪里配置呢,进入低功耗前会 emberStackPowerDown(); halPowerDown();在这两个函数之前配置就行了,出来时在 halPowerUp(); emberStackPowerUp();之后配置就行了。
串口唤醒,特别是在低功耗门锁唤醒的时候,有两种情况,一般门锁要么是IO唤醒,要么就是串口数据前导码唤醒,最终本质还是IO唤醒。
低功耗设备功耗问题,怎么样降低功耗,其实这个和硬件有很大的关系,特别是硬件上如果用到LDO时,那就要注意了,这种LDO是分有低功耗和非低功耗的,或者说,换这个器件可以减少100ua以上;还有就是有时测功耗时发现差了几时到几百不等UA时,可以每个管脚都需要配置一下适当的模式,适当的模式可以根据电路图分析什么模式下管脚才不会漏电,如果不会分析的话,每个模式都测一遍,选择功耗最低的一个模式即可。
低功耗的长poll和短poll
什么情况下需要长poll什么情况下使用短poll,其实这个完全可以有应用代码进行设置,包括时间的长短都可以进行修改设置,只是,没有什么特别需求的话,默认就可以了。长poll主要是为了省电,也就是说很长时间才poll一次,这次poll很多情况下,不仅仅是看看父节点是否有数据下来,更多的是告诉父节点,自己还活着,有些设备很长时间都没有poll数据,搞得父节点都不知道它是否还在线,这个的话就要根据需求进行修改了;短poll,主要用于进入休眠之前发现还有一些事情没有处理完,比如说,poll到数据了,但是没有那么快poll完整的数据又满足休眠的情况了,这个时候肯定不能休眠的,还有数据等着要拿,所以就继续短poll知道读取完数据,这里并非仅仅是poll数据时才进行短poll,这个也是完全根据应用代码的控制。