TI中文支持网
TI专业的中文技术问题搜集分享网站

回到原始状态,怎样判断节点是否进入低功耗模式?

开启了PAWER_SAVING,另外将四个POLL_RATE都设置为0,在debug时,查看halPwrMgtMode=0x03,SLEEPCMD=0x07,通过P0.2口IO中断唤醒模块,uart处理数据。测量模块的功耗是8ma左右。在网上也查了,模块功耗这么高,说明模块是没有进入低功耗模式的,不知道是什么原因造成的?另外我也将模块其他裸露的引脚设置为上拉输入模式。

YiKai Chen:

檢查看看osal task queue是不是一直有東西要處理

Viki Shi:

看一下这边的总结帖: e2echina.ti.com/…/284719

user4796768:

回复 YiKai Chen:

你好 YK!
你说的是下面这个地方吗?do {if (tasksEvents[idx])// Task is highest priority that is ready.{break;}} while (++idx < tasksCnt);
这里我单步调试过,除非UART有数据,才会有任务执行,其他的都没有task要执行的。

YiKai Chen:

回复 user4796768:

如果是這樣建議你使能HAL_SLEEP_DEBUG_LED然後在halSleep裡面HAL_SLEEP_DEBUG_LED相關的源碼加上led顯示你的CC2530是否進入休眠

user4796768:

回复 YiKai Chen:

在debugger的时候,点击全速运行,发现LED闪烁一次就不再闪烁了,这时我点击暂停,程序停止到下面地方:
void halSetSleepMode(void)
{PCON = halSleepPconValue;HAL_DISABLE_INTERRUPTS();
}<—暂停到这里
这不知道正常不正常?

YiKai Chen:

回复 user4796768:

要查功耗的問題就不要接debugger了,直接看LED來確認程序有沒有進入休眠

user4796768:

回复 user4796768:

还有一个问题,就是一直单步调试的话,我发现会循环执行MAC_PwrOnReq();这个函数。

user4796768:

回复 YiKai Chen:

如果正常情况下,是不是就是网上所说的会不停的亮灭交替?但是我不进行debugger,发现LED就闪一次就熄灭了,之后不会在亮灭交替。

YiKai Chen:

回复 user4796768:

正常LED会不停的亮灭交替;你的halSleep里面進入sleep是開LED還是關LED?

user4796768:

回复 YiKai Chen:

#ifdef HAL_SLEEP_DEBUG_LEDHAL_TURN_OFF_LED1();
#else/* use this to turn LEDs off during sleep */HalLedEnterSleep();
#endif
进入是关闭LED的。
我在单步调试的时候halPwrMgtMode = (timeout == 0) ? HAL_SLEEP_DEEP : HAL_SLEEP_TIMER;这个地方看到timeout值为0,会不会跟这个有关?

赞(0)
未经允许不得转载:TI中文支持网 » 回到原始状态,怎样判断节点是否进入低功耗模式?
分享到: 更多 (0)