CC1101 连续发送模式问题
大家好!
想请教一下,CC1101每次发送完成之后,可以不进入IDLE模式,重新发送数据吗?
如果进入IDLE,然后又再进入发送模式来发送数据,这样的话,两次发送之间的间隔最小都有2ms;因为模式转换到稳定也要时间。
如果想设置成间隔1ms发送1次,应该怎么弄? 非常感谢!
快速发送的目的,是用于WOR唤醒接收器。接收器的EVENT0为1秒,EVENT1为1.5秒。现在2ms发一次,出现经常唤醒失败的现象,所以想请哪位大神指点一下,谢谢
发送完后进入IDLE模式是必须的,至于唤醒失败的问题,重复发送总时间要比EVENT0大,单次发送时间要比RXtimeout小,即可保证唤醒
你的EVENT1比EVENT0还要大?这怎么可能呢?看他们的关系图不应该啊
HI Vike:
非常感谢你的回复,根据你的建议,我更新了WOR配置,但是就是工作不稳定,可否再指点一二,非常感谢!
我的具体配置如下:
1、发射和接收都初始化为CC1101为433M,具体配置跟官方的参考例程一样。(未启用WOR功能时,发射和接收都正常)
2、发射端间隔5ms发射一条数据。
3、接收端初始化WOR,然后启用WOR功能,每次被唤醒并收到数据后,重新启用WOR功能。
T_event0 = 50ms; T_event1 = 1.385ms; timeout = 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); // 0x876B = 1s; 0x43B5 = =17333 = 0.5秒
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);
}
我这里的发射间隔是小于T_Rxtime的, 但是总是出现接收不稳定的现象,可否帮忙指点一下,非常感谢谢