打印

CC1101发送数据后无法进入休眠模式请教

[复制链接]
2350|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yugzhi|  楼主 | 2015-12-24 21:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yugzhi 于 2015-12-24 21:17 编辑

请各位大侠帮帮忙!
方案采用MSP430F2132+CC1101,目前收发正常,但是功耗一直降不下来,后来通过示波器监测,发现在接收到数据后,2132和1101应都进入了低功耗状态,电流大约200uA,但是在发送完数据后,并没有进入低功耗状态,电流大约在2mA左右,在接收到数据后进入休眠的语句和发送数据后进入休眠的语句都是下面这句:

halSpiStrobe(0x39);// 设定CC1101芯片进入休眠模式,在该语句中,退出时对CC1101的片选已经置为高。

请问什么地方需要注意?
===================================
这是接收后的处理:
。。。。
if((LEI_JIA.adata[0])==RxBuf[leng-1])//检验和正确,置无线接收数据需处理标记
                     {
                       halSpiStrobe(i);// 设定CC1101芯片进入休眠模式
。。。。。。。。。。。。。。。。。
===================================
这是发送后的处理:
halRfSendPacket(TxBuf,8);//发送数据
halSpiStrobe(0x39);// 设定CC1101芯片进入休眠模式
PROG_SLEEP_FLAG=1;//程序片休眠标记
。。。。。。。。。。

==============================
这是休眠进入前的处理
。。。。。。。。。。
if(PROG_SLEEP_FLAG)//程序片休眠标记
      {
      PROG_SLEEP_FLAG=0;//程序片休眠标记
     halSpiStrobe(0x39);// 设定CC1101芯片进入休眠模式
     P1OUT &=0x40; //将输出口均置为0
     P2OUT &=~0X02; //将输出口均置为0
     P3OUT &=0X0F; //将SPI接口外的管脚均置为0
     LPM3;//CPU进入休眠
     }
。。。。。。。。。。。。。。。。。

相关帖子

沙发
chunyang| | 2015-12-25 12:02 | 只看该作者
说明你的低功耗指令不对,好好看器件手册,检查程序。

使用特权

评论回复
板凳
yugzhi|  楼主 | 2015-12-29 10:32 | 只看该作者
我特意将其余程序都给清除掉了,只保留了发送和休眠,
    while(1)
    {
        if(RF_TX_FLAG)//有需要无线发送标记
        {
            RF_TX_FLAG=0;          //清零延时发送标记
            YS_RF_TX_NUMBER=5;//定时计数
            halRfSendPacket(TxBuf,8);
            halSpiStrobe(CCxxx0_SPWD);// 设定CC1101芯片进入休眠模式
         }
    __bis_SR_register(LPM3_bits + GIE);   // Enter LPM3, enable interrupts
    }

主程序如此时,效果妥妥的,通过示波器监视串联在3V电源上的10欧电阻,休眠期间约0.1mV,也就是只有10uA左右(示波器已经是极限值,无法再清楚了),CC1101发送完数据后(发送数据有监测,RF接收端通过232返回接收到的数据正常),休眠应该很彻底了,但为什么加上其余程序就会导致休眠不彻底呢?这个程序还需要再排查啊。

使用特权

评论回复
地板
hahajing27| | 2015-12-31 19:18 | 只看该作者
楼主是用的iar么

使用特权

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

本版积分规则

39

主题

116

帖子

3

粉丝