大家好!我在TI的simpleBLEPer…工程基础上,希望能够将cc2640进入shutdown模式,我在程序中调用:
PowerCtrlIOFreezeEnable();
PowerCtrlStateSet(PWRCTRL_SHUTDOWN);
之后,cc2640没有进入shutdown模式,此时测量两颗晶振,都在不停震动,好像是进入了active模式,请问下,如何在程序中让cc2640进入shutdown模式?
谢谢!
Barbara Wu:
请问为什么要这么做?CC2640的Powermode在协议栈里面自己有控制,上层可以不自己调用。
Chen Li75:
回复 Barbara Wu:
您好!为了无开关的设计,在产品仓储过程中保持最低功耗。现在调用该函数后,虽然看上去像睡眠了,但晶振都没有停,功耗反而更大了,请问应该如何才能让cc2640完全停机?
liang bai:
回复 Barbara Wu:
HI wbj,
我们也用到了,具体步骤是按键按下,CC2640进入Powermode,再按下按键返回到正常模式。
我在贵司提供的一篇文档中看到有许多的步骤:
1. Switch to RCOSC_HF— Switch to high-speed RC oscillator.
2. Make sure DMA and CRYTO clocks are off before entering shutdown— Ensure the DMA and crypto deep-sleep clocks are turned off.
3. Power OFF AUX and disconnect from bus— Configure the auxiliary domain.
。。。。
11. Deep sleep to activate shutdown— Enter deep-sleep by executing WFI instruction. WFI instruction shuts down the system. Because the CM3 reboots when waking up, no instructions execute after the PRCMDeepSleep() function.
我发现这里面的实现函数在STACK中有。
请问:
1 上层不用调用,那如何控制CC2640进入shutdown模式和从shutdown模式唤醒那?
2 我看文档中说,系统进入shutdown模式后,只能有复位管脚和GPIO中断来唤醒。
3 我们如果这样设计可以实现需求功能吗?
谢谢!
期待你的答复!
Yan:
回复 liang bai:
liang,
系统没法自动进入shutdown 模式,你需要手工调用Power_shutdown(NULL);。
因为在shutdown模式下晶振都没了,RTOS是没法运行的。RTOS只能控制系统进入standby模式,shutdown只能手动。
而且shutdown是不会有内存保持的,这点要注意。
liang bai:
回复 Yan:
Hi wbj.
请问:
1 RTOS如何控制系统进入standby模式?在什么情况下回进入standby模式?如何唤醒那?
2 Power_shutdown(NULL);一条命令就可以让系统自动进入shutdown 模式?在这种情况,用什么命令唤醒那?
谢谢~!
Yan:
回复 liang bai:
liang,
2640的datasheet 上有很详细的各种power mode的描述,我记得有个表格,很清楚。
1. standby 是RTOS自动根据MCU和射频的状态来控制的。简单说,就是在广播间隙,连接间隔间隙,或者timer间隙,M3就是在standby模式下。
2. 前面说了,shutdown以后,没晶振了。既然没晶振了,M3就歇菜了,没有代码可以跑,当然也没有命令可以发。这个时候就是靠IO唤醒了。