微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 睡眠定时器的周期受外部按键中断的影响的问题咨询!

睡眠定时器的周期受外部按键中断的影响的问题咨询!

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

大家好,

      小弟现调试CC2540蓝牙模块,使用的是TI的例程,定义工作在低功耗模式POWER_SAVING,试验的功能是开机广播1min后关闭广播,广播过程中有KFD_BATTERY_CHECK_EVT事件在执行,所以模块工作在PM2模式下,广播过程打开LED,这样在PM2下会进入SleepTimer睡眠,所以LED会闪烁。广播到达1min后,关闭广播、关闭LED灯以及停止KFD_BATTERY_CHECK_EVT事件(osal_stop_timerEx(keyfobapp_TaskID, KFD_BATTERY_CHECK_EVT);),模块进入了PM3工作模式。

    进入PM3工作模式后我通过外部按键来唤醒模块并开始执行KFD_BATTERY_CHECK_EVT事件 ,通过执行osal_start_timerEx( keyfobapp_TaskID, KFD_BATTERY_CHECK_EVT, BATTERY_CHECK_PERIOD )函数,此时LED灯也恢复闪烁。

    这时出现了问题,按键触发重新执行KFD_BATTERY_CHECK_EVT事件 ,LED闪烁的频率与刚开机的闪烁频率不一样,用示波器抓取LED端的电平变化,发现刚开机的时候两次LED亮的时间间隔为109.2ms(有小小波动),而按键中断唤醒后的间隔为30.4ms(有小小波动),所以导致LED的闪烁不一样。

    从图中可看时间间隔就是睡眠定时器(sleeotimer)的定时器周期,跟踪程序开机和按键唤醒的区别是osal_pwrmgr_powerconserve函数中的next (next = osal_next_timeout(),next传给OSAL_SET_CPU_INTO_SLEEP( next ))参数不一样,开机时的next值稳定在400(有小小波动),按键唤醒后这个值是100,(有小小波动)。

大家帮忙看看,为什么外部按键唤醒后影响睡眠定时器的时间?   

                        开机LED灯的两次闪烁时间间隔为109.2ms

                    按键唤醒后的LED两次闪烁时间间隔为30.4ms

自己顶上去了,都没人回复吗?

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

网站地图

Top