cc2540 省电问题
大家好,
在使用simpleBLEPeripheral 项目时,环境是cc2540 和BLE 1.4协议栈, 发现一个问题。当蓝牙连接后,程序就没法进入省电模式Power saving了。就算蓝牙连接断开后,也不会进入省电模式,即是主程序中没法调用osal_pwrmgr_powerconserve()函数。 POWER_SAVING 是定义了的。 在蓝牙没有连接之前,可以正常进入省电模式。
有什么方法,在蓝牙连接断开后,可以进入省电模式?而为什么在蓝牙断开之后,会进入不了主程序中的osal_pwrmgr_powerconserve()函数,还需要满足什么条件? 请指教一下,非常谢谢!
hi key,
正常情况下断开连接后是可以进入低功耗模式的。
你是否修改了代码?增加了一些timer或者是IO操作之类?又或者手动调用了 osal_pwrmgr_powerconserve()函数?如果调用了,请不要手动调用这个函数,这是由OSAL自动去操作完成的。
Hi, Yan!非常谢谢你的回复!
开启了SPI接口 (USART 0 SPI Alt. 2),一个IO口中断,主程序执行一个周期为2ms的事件。
在断开连接后,使用osal_stop_timerEx停止那个事件。也使用HalUARTSuspend()挂起spi(不知道是不是这样处理?)。
但是最后没有进入低功耗模式。
如果主程序没有执行周期为2ms的事件,断开连接就能进入低功耗模式。还有哪里有问题?
ps:尝试过直接调用 osal_pwrmgr_powerconserve(),会进入长期睡眠状态。
Yan,你好,程序中使用了SPI口,在进入睡眠之前,需要挂起SPI。是不是使用这个函数HalUARTSuspend(),或者可以用其他方法,可否直接操作寄存器?
void HalUARTSuspend( void )
{
#if HAL_UART_ISR
HalUARTSuspendISR();
#endif
}
而唤醒后,也需要唤醒SPI口(调用HalUARTResume?)。但是应用层不知道2540什么时候唤醒的?
怎么挂起和唤醒SPI呢?