关于低功耗的一些疑问
各位好,
我使用SPPBLESever的工程,我想实现串口控制进入低功耗。
1)一上电,在MAIN函数中执行:
/* Set constraints for Standby, powerdown and idle mode */
Power_setConstraint(Power_SB_DISALLOW);
Power_setConstraint(Power_IDLE_PD_DISALLOW);
2)当串口接收到进入低功耗指令时,执行:
// release constraints for Standby and idle mode
PowerState = STANDBY;
Power_releaseConstraint(Power_SB_DISALLOW);
Power_releaseConstraint(Power_IDLE_PD_DISALLOW);
3)当串口接收到进入shutdown模式时,执行:
Power_shutdown(NULL);
4)当IO触发中断时,唤醒MCU,执行:
/* Set constraints for Standby, powerdown and idle mode */
Power_setConstraint(Power_SB_DISALLOW);
Power_setConstraint(Power_IDLE_PD_DISALLOW);
以上就是代码的修改地方,现在有一些疑问:
Q1:执行步骤2)时,电流只下降了0.5ma,如何进入STANDBY模式(电流可以到达1ua)
Q2:当进入shutdown模式,电流可以到达0.1ua,但是此时如何唤醒MCU呢?
我现在是也能进入低功耗,不知道是中断唤醒后自动进入低功耗,还是再写数据进入低功耗,我中断唤醒后也不能发送数据还需要写操作唤醒还是中断自动唤醒
Frank Mei ,
你用的是CC26xx自带的UART驱动吗?比如NPI驱动,在HostTest工程中就有用到。
如果用的是自带UART驱动,你不需要自己手动去设置Power_setConstraint(),因为UART驱动本身自动在读或者写的时候会去设置Constraint。
Shutdown模式下只有IO口能唤醒,你需要配置你想要的IO口有唤醒系统的功能,具体配置你可以看一下这个连接:https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/p/410883/1461886
Power_releaseConstraint(Power_SB_DISALLOW);
Power_releaseConstraint(Power_NEED_FLASH_IN_IDLE);
是成对出现的吧
Power_setConstraint(Power_IDLE_PD_DISALLOW);
我用这个好像没有唤醒,不能进入串口接收
请参考文档 3.2.2/3.2.3 节: http://www.ti.com/lit/ug/sprui20/sprui20.pdf
我通过置标志位能够进入低功耗,但把标志位取反后无法取消休眠,
串口无法响应
Power_releaseConstraint(Power_SB_DISALLOW);
Power_releaseConstraint(Power_NEED_FLASH_IN_IDLE);
Power_setConstraint(Power_SB_DISALLOW);
Power_setConstraint(Power_NEED_FLASH_IN_IDLE);
标志位28->8->28