微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > cc2540 省电问题

cc2540 省电问题

时间:10-02 整理:3721RD 点击:

大家好,

     在使用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呢?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top