专家你好,最近在使用CC1110传输数据,为了保证数据的完整性,发射端每发送完一帧数据,接收端CRC正确后要反馈一个OK信号给发射端,发射端再继续发送下一帧数据。接收端平时处于持续的接收状态(还在测试阶段,暂时没有使用休眠唤醒)。现在遇到一个问题:我在测试距离的时候,发射机每秒发送一个数据帧,接收机收到后蜂鸣器响一下。但是当我走到没有信号的地方,折返回有型号的地方的时候,就在也收不到了。此时程序并未死机,需要断电重新上电后方可恢复正确的接收。
下面是我的程序的接收部分的结构的大概流程
void PktRcvd_fun()
{
if(CRC正确)
if(正确的数据)
{
处理数据帧 ;
beep();
}
if(正确的数据帧)
进入TX状态,发送OK反馈;
mode=RADIO_MODE_TX;
SetRadioMode(mode);
完成一次交互,再一次进入接收等到状态
mode=RADIO_MODE_RX;
SetRadioMode(mode);
}
main()
{
mode=RADIO_MODE_RX;
SetRadioMode(mode);
while(1)
{
if(RXFLAG)
{
PktRcvd_fun(); ////接收到数据包的处理函数
}
if(其他flag)
.其他处理任务
.
}
void RX接收中断函数()
{
}