|
本帖最后由 xesmot 于 2015-12-25 10:51 编辑
请各位大侠帮帮忙!
方案采用MSP430F2132+CC1101,目前收发正常,但是功耗一直降不下来,后来通过示波器监测,发现在接收到数据后,2132和1101应都进入了低功耗状态,电流大约200uA,但是在发送完数据后,并没有进入低功耗状态,电流大约在2mA左右,在接收到数据后进入休眠的语句和发送数据后进入休眠的语句都是下面这句:
halSpiStrobe(0x39);// 设定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进入休眠
}
。。。。。。。。。。。。。。。。。
这是发送数据函数,在这个函数里面已经有对GDO0的判断了,所以奇怪,究竟是什么地方还没照顾到导致无法进入休眠,而是进入了空闲状态。
void halRfSendPacket(INT8U *txBuffer, INT8U size)
{
halSpiWriteReg(CCxxx0_TXFIFO, size);
halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size); //写入要发送的数据
halSpiStrobe(CCxxx0_STX); //进入发送模式发送数据
// Wait for GDO0 to be set -> sync transmitted
// while (!GDO0);
while ((GDO0_IN&GDO0)==0);
// Wait for GDO0 to be cleared -> end of packet
// while (GDO0);
while (GDO0_IN&GDO0);
halSpiStrobe(CCxxx0_SFTX);
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|