我用的是CC2650芯片,用的协议栈是TI-MAC,我看了官方的相关power management的文档。我在应用层添加了
Power_releaseConstraint(Power_IDLE_PD_DISALLOW);
Power_releaseConstraint(Power_NEED_FLASH_IN_IDLE);
电流好像下降了,但是降的不多。
我又添加了一句:
Power_releaseConstraint(Power_SB_DISALLOW);
电流没有降低反而升高了;通过单步调试,发现进入:
uint32 macStopRAT( void )
{
rfOpCmd_SynchStartStopRat_t rfCmd;
// call this instruction before CMD_SYNC_STOP_RAT or CMD_SYNC_START_RAT
HWREG(AON_RTC_BASE + AON_RTC_O_CTL) |= AON_RTC_CTL_RTC_UPD_EN;
// synch the RAT from the RTC and save the RAT value
macGenericRadioCmd( CMD_SYNC_STOP_RAT, &rfCmd.rfOpCmd ); {
uint8 result = macSynchRadioCommand( &rfCmd.rfOpCmd );
MAC_ASSERT(rfCmd.rfOpCmd.status == RFSTAT_DONE_OK );
}
// call this instruction after CMD_SYNC_STOP_RAT or CMD_SYNC_START_RAT
HWREG(AON_RTC_BASE + AON_RTC_O_CTL) &= ~AON_RTC_CTL_RTC_UPD_EN;
// Save RAT value
return( rfCmd.ratVal );
}
在 macSynchRadioCommand( &rfCmd.rfOpCmd )函数里面->
while ( (cmdstaStatus = MB_SendCommand((uint32) pCmd)) == CMDSTA_SCH_ERR );
就循环了 一直等待 。好像是RAT没有办法关掉,还是我强行加了
Power_releaseConstraint(Power_SB_DISALLOW);这句话。请大神指点一下。谢谢了
VV:
你好,首先协议栈里面POWER_SAVING应该加了对吧。
然后你的poll rate这些是多少,
测试出来的功耗是多少个uA,首先判断是否已经进入低功耗状态
然后要看下是否还有外设还供着电,主要指芯片的外设模块单元。
测试的时候最好把芯片外围的连接电路断开掉,
yanan zhao1:
回复 VV:
那如何从IDLE模式唤醒!