CC1101发送数据后无法进入休眠模式请教
本帖最后由 yugzhi 于 2015-12-24 21:17 编辑请各位大侠帮帮忙!
方案采用MSP430F2132+CC1101,目前收发正常,但是功耗一直降不下来,后来通过示波器监测,发现在接收到数据后,2132和1101应都进入了低功耗状态,电流大约200uA,但是在发送完数据后,并没有进入低功耗状态,电流大约在2mA左右,在接收到数据后进入休眠的语句和发送数据后进入休眠的语句都是下面这句:
halSpiStrobe(0x39);// 设定CC1101芯片进入休眠模式,在该语句中,退出时对CC1101的片选已经置为高。
请问什么地方需要注意?
===================================
这是接收后的处理:
。。。。
if((LEI_JIA.adata)==RxBuf)//检验和正确,置无线接收数据需处理标记
{
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进入休眠
}
。。。。。。。。。。。。。。。。。 说明你的低功耗指令不对,好好看器件手册,检查程序。 我特意将其余程序都给清除掉了,只保留了发送和休眠,
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返回接收到的数据正常),休眠应该很彻底了,但为什么加上其余程序就会导致休眠不彻底呢?这个程序还需要再排查啊。 楼主是用的iar么
页:
[1]