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

cc1110 移动状态下射频接收假死的问题

最近在用CC1110做无线数据收发距离实验,固定端不断的发送,接收端收到后回发。 接收端从近距离以大约20KM/H的速度远离过程中,就会出现接收端射频假死(CC1110外接的另外一个秒闪LED工作是正常的)的状态(步行不会),需要重新上电后又能正常工作。如果接收端固定在一个点上再打开电源,则工作很稳定,长时间也不会出现射频假死状态。

射频部分使用的是SimpliciTI 的mrfi和bsp驱动。

Nutcracker:

原理上判断很可能是 AGC 响应的问题。除了重新上电,应该 Reset 和重新 Calibrate 也可行。

jacky jacky:

回复 Nutcracker:

多谢解答,目前还发现在接收端从近距离,用步行的速度移动到接收不到无线信号的地方后,再一次回到有信号的地方,也同样会出现接收假死的状态。

根据您提到的可能原因,除了重启外(实际工作中不允许重启和重新上电。),我在软件里面是否可以做某种处理,避免你提到的情况?

jacky jacky:

回复 Nutcracker:

另外补充一下,目前使用的配置,MCSM0=0x18 , 其中的FS_AUTOCAL为01,01 : When going from IDLE to RX or TX (or FSTXON)

Nutcracker:

回复 jacky jacky:

附近有干扰吗?换个场地测试也有类似情况吗?比不能收到的地方更远的位置是可以收到吗?你可以检测RSSI吗?

jacky jacky:

回复 Nutcracker:

换了场地也会出现,  ,我的软件根据RSSI的大小让一个LED由快到慢闪烁。。是这样,在逐渐远离过程中,进入信号比较弱的地方,有时候就会假死,重新上电后还能继续收到。假死后,返回信号强的地方也不会收到,必须要重新上电。

jacky jacky:

回复 Nutcracker:

目前采用了一个笨办法就是定时重新初始化射频部分,就可以解决上面出现的问题。但是不知道原因还是一个隐患。

while(1) {         if(i++>60000)          {          MRFI_Init();          Set_RF_bandrate();          MRFI_SetLogicalChannel(get_RF_ch());          MRFI_SetRFPwr(HIGH_POWER);          Open_Radio();          i=0;          }

ohter task……

}

Nutcracker:

回复 Nutcracker:

假死是处于 Idle 还是 Sleep 状态? WoR(Wake on Radio) Enable 了吗?

jacky jacky:

回复 Nutcracker:

由于我的应用不在乎功耗,所以没有启用WOR,而是初始化完成MRFI后,最后是调用MRFI_RxOn()后就一直等待MRFI的中断。所以常态应该是一直处于RX状态

CC1110好像没有专门的WOR enable吧?

void MRFI_RxOn(void){ /* radio must be awake before we can move it to RX state */ MRFI_ASSERT( mrfiRadioState != MRFI_RADIO_STATE_OFF );

/* Put the radio in RX state, if not already */ if(mrfiRadioState != MRFI_RADIO_STATE_RX) { mrfiRadioState = MRFI_RADIO_STATE_RX; Mrfi_RxModeOn(); }}

Nutcracker:

回复 jacky jacky:

对 CC1110 来说是 Power Mode Control。MCU 和 Radio 是有共享寄存器的。Power Mode (PM 0-2)

 请参考 DS:12.8.2  Sleep Timer and Power Modes

所以请查一下是死在哪个 PM 上。如果不在乎功耗,可以调整一下 PM。

jacky jacky:

回复 Nutcracker:

目前的程序没有让CC1110进入任何PM,一直是ACTIVE

赞(0)
未经允许不得转载:TI中文支持网 » cc1110 移动状态下射频接收假死的问题
分享到: 更多 (0)