本帖最后由 kejian2000 于 2016-3-4 15:13 编辑
我的办法是检测PLL是否LOCK并加入超时机制,如果发现假死就重设芯片为IDLE状态并重新校准,
此方法经过测试,总是可以从假死状态恢复正常;
当时测试了几天的连续收发,正常;
if(RF_bIsPllLocked(&SPI_Bus[1]))
bPllLockTimer = 0;
else if(bPllLockTimer > 4000/SYS_TICK_PERIOD)
{
RF_SetChipToIdle(&SPI_Bus[1]);
RF_Command(&SPI_Bus[1], RF_SCAL);
bPllLockTimer = 0;
}
|