打印

TI无线模块休眠和唤醒的问题?

[复制链接]
2945|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xu0801hua|  楼主 | 2014-5-22 10:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
dirtwillfly| | 2014-5-22 11:47 | 只看该作者
官网有例程

使用特权

评论回复
板凳
xu0801hua|  楼主 | 2014-5-22 11:52 | 只看该作者
dirtwillfly 发表于 2014-5-22 11:47
官网有例程

官网的历程我有点看不懂?大神写过这样的程序吗?

使用特权

评论回复
地板
xu0801hua|  楼主 | 2014-5-23 15:00 | 只看该作者
dirtwillfly 发表于 2014-5-22 11:47
官网有例程

大神不会?写过没?

使用特权

评论回复
5
xu0801hua|  楼主 | 2014-5-23 15:00 | 只看该作者
dirtwillfly 发表于 2014-5-22 11:47
官网有例程

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 = 0;
}
else                           //接受正确
{
Time_ok = 1;
}
CC1101_WOR();      //再次进入掉电状态
// P3_ISRC = P3_ISRC; //清中断标志
// System_Gorun(TEST);
// System_runfinger();
// EINT0_Off();
WDT();
}

使用特权

评论回复
6
shenmu2012| | 2014-5-23 22:10 | 只看该作者
这个看该无线模块的资深怎样工作的吧

使用特权

评论回复
7
xu0801hua|  楼主 | 2014-5-26 14:16 | 只看该作者
shenmu2012 发表于 2014-5-23 22:10
这个看该无线模块的资深怎样工作的吧

不是就是想使用它的节能模式,在做电池供电.

使用特权

评论回复
8
qq65411253| | 2014-5-26 22:01 | 只看该作者
如果开启了每4次校准一次,那么在初始化时应当手动校准一次。否则就会丢失前3次唤醒。

使用特权

评论回复
9
xu0801hua|  楼主 | 2014-5-30 09:42 | 只看该作者
qq65411253 发表于 2014-5-26 22:01
如果开启了每4次校准一次,那么在初始化时应当手动校准一次。否则就会丢失前3次唤醒。 ...

你是做这方面的吗?我想问一下这样的wor怎么做

使用特权

评论回复
10
qq65411253| | 2014-5-30 18:27 | 只看该作者
首先确定你需要的功耗水平,假设需要平均工作电流<100uA。那么对应的WOR占空比就是100ua/接收电流16ma=0.625%左右,这个就是接收时间和休眠时间的比例。然后再确定接收时间,差不多是接收2个唤醒数据包的时间。所以唤醒数据包应该尽量小,以降低占空比。确定了接收时间也就确定了休眠时间,然后按照MCMS2寄存器的介绍,选WOR_RES=0,RX_TIME[2:0]=5。再按照0.625%的占空比和0.1127us的时间单位计算休眠时间的值,写入worevt就ok了。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
dirtwillfly + 2 赞一个!
11
kfliuyan| | 2014-5-31 08:40 | 只看该作者
楼上说的很详细!赞一个

使用特权

评论回复
12
xu0801hua|  楼主 | 2014-6-5 15:27 | 只看该作者
qq65411253 发表于 2014-5-30 18:27
首先确定你需要的功耗水平,假设需要平均工作电流

一看就是大神啊,要好好向你请教啊,我qq:414941286
大神写过这样的程序?

使用特权

评论回复
13
kkk115| | 2017-2-24 15:52 | 只看该作者
大神,你的电池供电做好了吗?求助啊求助

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

81

帖子

1

粉丝