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

rfEasyLinkRx超时后直接进入低功耗睡眠

TI工程师您好。

我正在使用rfEasyLinkRx做一些改进。我的想法是在EasyLink_receiveAsync(rxDoneCb, 0);的超时后,让射频进入低功耗睡眠,比如设置睡眠5s,然后5s后再重新开启接受。我曾经使用Task_Sleep,发现根本没有睡眠。电流依然在5.4mA左右。请问这个该如何操作。谢谢您!

Felix ZF:

你应该在超时后执行完EasyLink_abort,确定RF部分退出rx状态之后,再使用Task_Sleep

user3895839:

回复 Felix ZF:

TI工程师:

您好!我仿真过,程序会一直进入红色标注的部分

 EasyLink_receiveAsync(rxDoneCb, 0);

        /* Wait 300ms for Rx */        

 if(Semaphore_pend(rxDoneSem, (WAKEUP_TIMEROUT / Clock_tickPeriod)) == FALSE)       

 {             /* RX timed out abort */            

    if(EasyLink_abort() == EasyLink_Status_Success)           

   {                /* Wait for the abort */               

      Semaphore_pend(rxDoneSem, BIOS_WAIT_FOREVER);            

   }

 }

Task_sleep(5000000 / Clock_tickPeriod);//sleep for 5s

执行完应该就退出RX了吧?如果没有退出该如何判断当前状态并退出RX模式,进入到睡眠。

谢谢!

 

Felix ZF:

回复 user3895839:

进入你标红的部分,是因为没有接收到数据,这个是正常的。

你可以看一下进入红色部分之后,代码能否运行到rxDoneCb里面的else if(status == EasyLink_Status_Aborted)分支。

如果可以,说明通过EasyLink_abort命令成功结束了当前的rx状态。

这时,代码可以运行到Task_sleep,这时,应该就可以进入睡眠了。

赞(0)
未经允许不得转载:TI中文支持网 » rfEasyLinkRx超时后直接进入低功耗睡眠
分享到: 更多 (0)