休眠控制

一、休眠电流

参考:https://doc.luatos.wiki/wiki/pages/107.html 单模块休眠时的待机电流,目前可以做到2mA以内

二、脚本如何控制休眠

1、需要主动写代码控制休眠的场景

如果模块uart、spi、i2c等连接了外设:

  • 在接收外设数据前,需要使用接口pm.wake(“自定义的一个标记”)写脚本主动控制不允许休眠,根据产品需求,在合适的时间点,如果有必要,使用接口pm.sleep(“自定义的一个标记”)写脚本主动控制不允许休眠

  • 在向外设发送数据时,不需要使用接口pm.wake(“自定义一个标记”)写脚本主动控制不允许休眠,因为在lib script中已经自动处理,发送前控制不休眠,发送结束后,控制允许休眠

2、不需要主动写代码控制休眠的场景

和外设无关的应用场景:例如短信、电话、socket、定时器等 此类应用完全由core自动控制是否休眠,不需要在脚本中主动写代码控制

三、常见问题

1、为什么测试电流很大,没有进入休眠状态?

参考如下步骤排查:

1、同样的core固件+adc demo,烧录到合宙的开发板上,测试下功耗是否正常;如果不正常,应该是core固件问题;如果正常,需要进一步在客户硬件上验证 2、同样的core固件+adc demo,烧录到客户板子上,测试客户板子飞行模式下的底电流是否正常,正常应该是1mA左右,如果底电流不正常,应该是硬件上有漏电 3、同样的core固件+adc demo,烧录到客户板子上,测试客户板子功耗是否正常,如果不正常,应该是硬件问题,需要进一步分析,逐一断开客户板子和模块的硬件连接,测试功耗,排查硬件 4、同样的core固件+客户自己的脚本,烧录到客户板子上,逐一屏蔽代码,看看是哪部分代码导致得 ### 2、为什么休眠状态下测试电流跳变较大? 请不要使用直流电源、数字电流表来测试功耗,这些仪器测试的是瞬间电流,休眠状态瞬间电流跳变属于正常现象

请使用专门测试功耗的仪器来测试一段时间的平均功耗

3、为什么休眠状态下uart1可以正常接收到数据,不丢失?

uart1在core中做了特殊处理,可以实现休眠状态下接收数据不丢失 这仅仅是特例,不能适用于其他外设接口,还是要参考本文第二章节的正常逻辑来处理