BLE 协议栈之低功耗管理

本文探讨了BLE协议栈中与CC2541芯片相关的低功耗管理,包括PM1, PM2, 和 PM3三种状态。PM2允许定时器唤醒,而PM3则依赖外部中断。在CC2541上,通过TPS62730电源管理芯片控制P1_0引脚实现低功耗。程序中,osal_pwrmgr_powerconserve()函数检测无任务运行时自动进入低功耗模式,并由halsleep()函数配置相关设置。低功耗模式的退出是通过睡眠定时器中断来实现的。" 47045507,1155595,Hibernate性能优化:减少级联查询,"['Java开发', '数据库优化', 'ORM框架', 'Spring框架', 'Hibernate调优']
摘要由CSDN通过智能技术生成

BLE 协议栈中电源低功耗的管理与CC2530的模式一样,都有PM1,PM2,PM3三种低功耗状态,其中PM2在可以用定时器唤醒,在PM3中只能使用外部中断的方式才能唤醒。

下面的程序实现的是在CC2541片子上使用低功耗电源管理芯片TPS62730,控制引脚在P1_0位置。

 

程序运行到osal_start_system();后继而运行到osal_run_system();

在里面有一个  osal_pwrmgr_powerconserve();函数,是系统自动检测当前是否有任务在执行,没哟的话将进入低功耗模式。

void osal_pwrmgr_powerconserve( void )  // 系统自动调用 如果当前没有任务,将进入低功耗模式
{
  uint32        next;
  halIntState_t intState;
  // Should we even look into power conservation
  if ( pwrmgr_attribute.pwrmgr_device != PWRMGR_ALWAYS_ON )
  {
    // Are all tasks in agreement to conserve
    if ( pwrmgr_attribute.pwrmgr_task_state == 0 )
    {
      // Hold off interrupts.
      HAL_ENTER_CRITICAL_SECTION( intState );
      // Get next time-out
      next = osal_next_timeout();   //选取最近事件的Timeout 作为实际休眠时间 
      // Re-enable interrupts.
      HAL_EXIT_CRITICAL_SECTION( intState );
     // Put the processor into sleep mode
      OSAL_SET_CPU_INTO_SLEEP( next );   // 进入低功耗模式   
    }
  }
}

 


进入低功耗模式之后,会执行halsleep()函数进行低功耗模式设置。

里面进行了低功耗时间等设置,进行电源控制的启动就在这里使能!

void  halSleep( uint32 osal_timeout )
{
  uint32 timeout;
  uint32 llTimeout;
  uint32 sleepTimer;

#ifdef DEBUG_GPIO
  // TEMP
  P1_0 = 1;
#endif // DEBUG_GPIO

  // max allowed sleep time in ms
  if (osal_timeout > MAX_SLEEP_TIMEOUT)
  {
    osal_timeout = MAX_SLEEP_TIMEOUT;
  }

  // get LL timeout value already converted to 32kHz ticks
  LL_TimeToNextRfEvent( &sleepTimer, &llTimeout );

  // check if no OSAL timeout
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值