CC1101 WOR唤醒在上电后或者复位后的第一次唤醒的时候,总是要很长一段时间才唤醒,能收到数据,但是收到第一次数据后,后面的收发却在设定时间内接受正常。下面 是我的寄存器设置
/*************************************************
函数名称 : CC1101_InitWOR
函数入参 : void
函数说明: 电磁波WOR唤醒功能初始化 设置为0.5秒轮训
函数备注: WOR 初始化 并进入掉电模式
**************************************************/
INT8U CC1101_InitWOR(void)
{
// halSpiStrobe(CCxxx0_SIDLE); //进入空闲状态
halSpiWriteReg(CCxxx0_MCSM2,0x03); //设置轮训时间
halSpiWriteReg(CCxxx0_MCSM0,0x38); //RC自动校准
halSpiWriteReg(CCxxx0_WOREVT1,0x43); //设置轮训周期
halSpiWriteReg(CCxxx0_WOREVT0,0xb5);
halSpiWriteReg(CCxxx0_WORCTRL,0x78); //启动自动校准 设置时间
halSpiStrobe(CCxxx0_SFRX); //复位RX——BUFF
halSpiStrobe(CCxxx0_SWORRST);
halSpiStrobe(CCxxx0_SWOR); //启动WOR
return 1;
}
void CC1101_WOR(void)
{
// halSpiStrobe(CCxxx0_SIDLE); halSpiStrobe(CCxxx0_SFRX); //复位RX——BUFF
halSpiStrobe(CCxxx0_SWORRST);
halSpiStrobe(CCxxx0_SWOR); //启动WOR
}
void EINT0_IRQHandler(void) //中断处理程序 GDO0 设置为06
{
UINT8 i,leng =8;
INT8U RxBuf[8]={0}; P3_ISRC = P3_ISRC; if(halRfReceivePacket(RxBuf,&leng) ==0) //判断接受是否正确
{ for(i=0;i<8;i++)
RxBuf[i] = 0;
}
else //接受正确
{
Time_ok = 1;
}
CC1101_WOR(); //再次进入掉电状态
// P3_ISRC = P3_ISRC; //清中断标志// System_Gorun(TEST);
// System_runfinger();// EINT0_Off(); WDT();}
Nutcracker:
调试可以看到是哪一步时间花得多吗?估计是校准那一步。
weolong yin:
回复 Nutcracker:
我经过仿真器进行程序的运行,没有发现耗费程序运行时间的地方,我用示波器测量发现,上电后,好几秒钟后,才能抓住波形。因此我也怀疑校准这一块耗费较多的时间,那我该如何设置寄存器,减少这个时间呢?
weolong yin:
回复 Nutcracker:
我经过仿真器进行程序的运行,没有发现耗费程序运行时间的地方,我用示波器测量发现,上电后,好几秒钟后,才能抓住波形。因此我也怀疑校准这一块耗费较多的时间,那我该如何设置寄存器,减少这个时间呢?
user4045291:
大神,向你请教WOR的问题,在应用中怎么使用?有完整程序吗?
Nutcracker:
回复 weolong yin:
有的例程都在官网上面了。一个可以减小校准的时间的办法是把校准的数据先存好,然后醒来后直接写寄存器。你可以先 Disable 校准看看是不是可以快一些,排除下是否是校准引起的。
user4045291:
回复 Nutcracker:
我看了上面的例程是不是:
user4045291:
回复 user4045291:
TI提供的例程不太好有点卡看不懂和有点乱;例子是不是附件?
weolong yin:
回复 user4045291:
我贴的程序不是附件里的例子,但是我贴的程序是一个WOR唤醒的完整的应用程序
user4045291:
回复 weolong yin:
那么你是在做项目?还是爱好做实验?我正在做实验,你有这个完整代码吗?我想向你请教你是怎么做到休眠和唤醒,我在连休眠都还位做出来,我在程序中也写了“断电模式”但是电流表上电流还是没有变化,我想向你请教这方面的事情。
你能否发一下完整的代码,我qq:414941286@qq.com
weolong yin:
回复 Nutcracker:
我设定的校准是每四次校准一次,我仔细查看了电流的波形,发现电流波形中,每当校准时,接受状态结束后空闲状态的时间比别的空闲状态时间也就多了一个毫秒。因此我觉得可能有其他原因。
TI中文支持网
