CC1101 WOR 不稳定问题
大家好!
最近测试CC1101的WOR,总是出现唤醒时不稳定,有时可以唤醒有时不可以,望各位大神指点一下,谢谢!
具体逻辑如下:
1、发射和接收端都初始化为433M,具体配置跟官方的参考例程基本一样。(未启用WOR功能时,发射和接收都正常)
2、每次按下发射端的按键后,发射端间隔5ms发射1条数据,连续发射20次。每次发完后还会听2ms,用于处理接收端的应答。
3、接收端初始化WOR,(Initial_WOR()),然后启用WOR功能(WOR_Start()),每次被唤醒并收到数据后,重新调用WOR_Start()函数。
接收端WOR的参数设置:
T_event0 = 50ms; T_event1 = 1.385ms; T_RXtimeout = 6.25ms;
4、WOR源代码如下:
void Initial_WOR(void)
{
SPI_Write_Strobe(TI_CCxxx0_SIDLE);
// T_RX timeout = 50ms + 12.5% = 6.25ms
SPI_Write_Register(TI_CCxxx0_MCSM2, 0x10); // RX_TIME 0 占空比最大
SPI_Write_Register(TI_CCxxx0_MCSM0, 0x18); // bit5-4: 校准 FS_AUTOCAL[1:0] 01 重IDLE转到TX OR RX模式时
// T_event0 = (750/26M) * 1733 * 2^(5*0) = 50ms
SPI_Write_Register(TI_CCxxx0_WOREVT1, 0x06);
SPI_Write_Register(TI_CCxxx0_WOREVT0, 0xC5); // 0x06C5 = 1733 = 50ms
// T_event1 = (750/26MHz) * 48 = 1.385ms
SPI_Write_Register(TI_CCxxx0_WORCTRL, 0x78);
SPI_Write_Register(TI_CCxxx0_IOCFG0, 0x06);
}
void WOR_Start(void)
{
// from IDLE state, enter WOR
SPI_Write_Strobe(TI_CCxxx0_SIDLE);
SPI_Write_Strobe(TI_CCxxx0_SFRX);
// enter WOR
SPI_Write_Strobe(TI_CCxxx0_SWORRST);
SPI_Write_Strobe(TI_CCxxx0_SWOR);
}
我这里的发射间隔5ms,明显小于T_Rxtime=6.25ms的, 但是总是会出现唤醒不稳定的现象,不知是何原因。
哪位大神可否帮忙指点一下,非常感谢!
您好,您的问题解决没,我也在应用无线唤醒,请赐教 QQ:154711688 感谢
唤醒不稳定是指唤醒周期不一致还是接收丢包问题?
我也出现过这种情况,但是后面只能牺牲接收端的功耗来做稳定,增加Rxtimeout的占空比。
速率调高后WOR基本就不能使用了