TI中文支持网
TI专业的中文技术问题搜集分享网站

CC1110 睡眠模式 期间传感器数据口耗电问题。

大家好。     之前在Martin的帮助下,改写了用P0_1供电给传感器成功了。非常感谢,但是还有些小问题,可能是我对三太门逻辑还不够了解,虽然已经看了多次(个人不是电器专业)。     我在进入睡眠模式前想关闭两个IO,其中供电脚(P0_1)已经关闭成功,相比在没关闭前万能表读数很大的。另外一个是传感器的数据IO,假如不关闭的话万能表显示会多了2uA左右(我通过直接把数据脚拔出比较得到)。假如我把P0_4 置0来关闭的话,那无论醒来之后我是否再设置为1,读数都不会再正确了。     关键代码如下:
  P0SEL &= ~0x12;   //01 04 standard IO
 while(1){
    //开启供电
    P0_1 = 1;       //01 enable ?
    P0DIR |= 0x02;  //01 输出方向?
    //P0_4 = 1;

    //读取和传输数据
    //read and send to Uart

    //save up power consumption
    P0_1 = 0;     //将P0_1输出关闭
    P0INP = 0;    //移除所有三太?
    //P0_4 = 0;   //企图关闭,但失败。

    //go to sleep 20 seconds , meanwhile measure how much power consumpiton.
}

 谢谢

Martin:

Hi George,

很高兴听您说到用P0_1供电给传感器成功了。

您所说的传感器数据IO是指P0_4吗?

不太明白您所说的 “把P0_4 置0来关闭的话,那无论醒来之后我是否再设置为1,读数都不会再正确了” 是怎么样一个过程,能具体描述一下吗?

你所附的代码来说, P0DIR设置P0_1为输出方向,这个应该要放在P0_1 = 1之前;

另外既然P0DIR |= 0x02,那么P0_4口是仍然保留为输入状态,那么为何会有对P0_4口赋值的语句P0_4 = 1,P0_4 = 0呢?

George Peter:

回复 Martin:

还是Martin,你好。       文字排版我刚改了下,不好意思。现在好看多了。过程在代码里应该比较清楚了。       目前我看P0_4在输入状态(睡眠模式里)居然还会消耗电,这个令我无法理解(传感器就三个脚:VCC,地,数据脚——接P0_4)。正因为它耗电,所以我想企图关闭P0_4(使类似常开电路),而设P0_4为0?       当然设P0_4为0的后果是下一个循环——醒来后,无论我是否再打开P0_4【P0_4=1;】。读数已经不正常了,好像无无法执行成功【P0_4=1;】一样。

George Peter:

回复 Martin:

你好Martin,刚才用你的办法做了实验,结果和之前的没分别,也就是多了2uA.        你的代码应该就是在睡眠前执行 P2INP |= (0x01 << (0+5));                                        醒来后执行 P2INP &= ~(0x01 << (0+5)); 对吧?代码我根据hal.h 里模仿         顺便我也给你看看我的代码,就上边例子多了三行:结果除了头一次读数不正常,其他读数均正常,而且用电量很接近PM2指标。         NWK_DELAY(800);  //貌似少于800左右读数都不正常了         P0_4 = 0;           //省2uA左右         P0DIR &= ~0x02;        

George Peter:

回复 Martin:

你好Martin,这个问题已经解决了,原来用了不同的万能表精度不同。并且确实是需要执行一次输入前的上拉。谢谢。

赞(0)
未经允许不得转载:TI中文支持网 » CC1110 睡眠模式 期间传感器数据口耗电问题。
分享到: 更多 (0)