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

请教TI工程师,CC1120 eWOR问题,谢谢

CC1120目前调试通过,软硬件已经优化到一定程度了,目前要加上低功耗特性。

寄存器配置如下:(来自SmartRFStudio7)

{CC112X_IOCFG3, 0xB0},
{CC112X_IOCFG2, 0x06},
{CC112X_IOCFG1, 0xB0},
{CC112X_IOCFG0, 0x40},
{CC112X_SYNC_CFG1, 0x0B},
{CC112X_DCFILT_CFG, 0x1C},
{CC112X_PREAMBLE_CFG1, 0x18},
{CC112X_IQIC, 0xC6},
{CC112X_CHAN_BW, 0x08},
{CC112X_MDMCFG0, 0x05},
{CC112X_AGC_REF, 0x20},
{CC112X_AGC_CS_THR, 0x0C},
{CC112X_AGC_CFG1, 0xA0},
{CC112X_FIFO_CFG, 0x00},
{CC112X_SETTLING_CFG, 0x03},
{CC112X_FS_CFG, 0x14},
{CC112X_WOR_CFG0, 0x20},
{CC112X_WOR_EVENT0_MSB, 0x02},
{CC112X_WOR_EVENT0_LSB, 0xEA},
{CC112X_PKT_CFG0, 0x20},
{CC112X_RFEND_CFG0, 0x09},
{CC112X_PKT_LEN, 0xFF},
{CC112X_IF_MIX_CFG, 0x00},
{CC112X_FREQOFF_CFG, 0x22},
{CC112X_FREQ2, 0x6C},
{CC112X_FREQ1, 0x80},
{CC112X_FS_DIG1, 0x00},
{CC112X_FS_DIG0, 0x5F},
{CC112X_FS_CAL1, 0x40},
{CC112X_FS_CAL0, 0x0E},
{CC112X_FS_DIVTWO, 0x03},
{CC112X_FS_DSM0, 0x33},
{CC112X_FS_DVC0, 0x17},
{CC112X_FS_PFD, 0x50},
{CC112X_FS_PRE, 0x6E},
{CC112X_FS_REG_DIV_CML, 0x14},
{CC112X_FS_SPARE, 0xAC},
{CC112X_FS_VCO0, 0xB4},
{CC112X_XOSC5, 0x0E},
{CC112X_XOSC2, 0x00},
{CC112X_PARTNUMBER, 0x48},
{CC112X_PARTVERSION, 0x21},
{CC112X_MODEM_STATUS1, 0x10}

进入sniffer WOR 模式的函数如下:(来自swra428,preamble长度改过多次,均无法收到)

void CC112X_eWORInit( void )
{
INT8U writeByte;

CC112X_WriteReg( CC112X_WOR_CFG1, 0x08 );
CC112X_WriteReg( CC112X_WOR_CFG0, 0x24 );
CC112X_WriteReg( CC112X_WOR_EVENT0_MSB, 0x02 );
CC112X_WriteReg( CC112X_WOR_EVENT0_MSB, 0x15 );

CC112X_WriteReg( CC112X_RFEND_CFG1, 0x0F );
CC112X_WriteReg( CC112X_RFEND_CFG0, 0x09 );
CC112X_WriteReg( CC112X_AGC_CS_THR, 0xF5 );
CC112X_WriteReg( CC112X_AGC_CFG1, 0xA0 );
CC112X_WriteReg( CC112X_AGC_CFG0, 0xC3 );
CC112X_WriteReg( CC112X_PREAMBLE_CFG1, 0x2A );

CC112X_Command( CC112X_SWORRST );
CC112X_Command( CC112X_SIDLE ); goto IDLE mode
while( ( CC112X_GET_STATUS( ) & 0xF0 ) != 0x00 );
CC112X_Command( CC112X_SWOR );

}

1,烦请Ti工程师帮忙看看还有什么考虑不周之处,,导致无法收到数据。

2,调用CC112X_eWORInit,再也无法切换到发射数据了(当然也无法接收)。

3,如果不调用CC112X_eWORInit函数,收发双向切换均OK。

liYong:

补充:数据速率为1.2K,EVENT0时间约20ms,peamble长度为4-30bytes(均不行),按理是能够侦测到peamble的。

liYong:

回复 liYong:

按照swra428配置也不能接收,请Ti工程师解答一下哈,谢谢。

George Peter:

回复 liYong:

不知道我有无做错了,我的做法不用WOR,用定时器起来询问AP有否需要我的信息或命令(ED),或则也根据相关的信息改变接下来的睡眠时间。换句话说就是我由被动模式改为主动模式(相对WOR),因为这样做的好处是由于AP长期on,ED这样能尽量在睡眠时间里降低功耗,另外一个好处也是能避免你无法收到WOR的唤醒波(因为我主动询问,接着给予等待监听肯定更稳定的)。

当然了,我不知道我的做法标准不?又或者我并不清楚WOR主要用在什么spot.

liYong:

回复 George Peter:

这种做法我曾经也想过,不过还是希望能稳定的使用ewor,因为这样无需MCU干预,能更省电,我这里的应用对功耗要求非常高。

但是始终无法接收,原因未知,Ti工程师也迟迟没能回复。

George Peter:

回复 liYong:

稍等,你有无查看过手册?你有没有比较过WOR和我刚才说的主动模式那个更省电?你看看WOR可以在那个最低供电模式?

liYong:

回复 George Peter:

有看过手册,TEVENT0可以设置很长,可以接收省电,但是这是牺牲发射时间为前提的。 个人目前认为,硬件ewor更省电。

另外:刚才按照你的主动模式测试了一下, 每20ms监听10ms,休眠10ms,电流能降,且在preamble能覆盖20ms的情况下,接收可以稳定。但是发现很难把占空比下降更多,会丢包。 (刚才临时写出来的测试程序,也或许是配置或软件问题。)

其实我一定要用间隔收发的另一个目的是:auto scal,根据1101经验,太久时间不进行这个操作可能会接收不到数据。  也不知道理解正确否。

George Peter:

回复 liYong:

不太认同你的方案,至少我觉得Wake on radio 是设计在不考虑功耗的情况下。而且你怎么测量电量?20ms+10ms那么短时间你怎么测量呢?怎么会出现不稳定的情况?理论不会丢包,最多是无法实现在物理层的通讯。当然除非你的硬件层有问题。

ED woke -> request-> listen for respond-> sleep again

AP listen for whole time-> incomming request (ED)-> respond immediately.

liYong:

回复 George Peter:

对,不会丢包,已发现程序问题,

现在电流均值可以降低到3mA,且稳定接收。 如果唤醒周期更长,发射更多preamble,还能降低。只是接收第一个数据包的延迟会长些。

如果搞不定ewor,这个方法应该也是比较好的。

赞(0)
未经允许不得转载:TI中文支持网 » 请教TI工程师,CC1120 eWOR问题,谢谢
分享到: 更多 (0)