This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2530采用协议栈时工作在PM2模式时的电流消耗

Other Parts Discussed in Thread: CC2530

我对基于Zstack的SampleApp例程的终端节点进行了PM2模式下的功耗测试,测试结果是:

休眠时:5mA

唤醒后发送数据时:11mA

“Power Management For The CC2530.pdf”文档第3节中提到,Timer Sleep模式(PM2)下的电流消耗是几个mA,

而CC2530数据手册上说,PM2模式下的内核电流消耗典型值为1uA,最大值为2uA。

我想问的是,CC2530基于ZStack时PM2模式下的电流消耗就是在几个mA的级别吗?

如果是这样,一块700mAh,3.7V的锂电池,只是工作在睡眠状态下,就只能够支撑700mAh/5mA=140小时(约5.8天)

这个时间其实并不能够满足低功耗组网定时数据采集的需求啊?

能帮忙解答一下我的疑惑吗?

非常感谢!

附上我的设置Zstack进入低功耗PM2模式的方法,请指正:

1.开启POWER_SAVING 预编译

2.f8wConfig_cfg 中的RFD_RCVC_ALWAYS_ON=FALSE

3.f8wConfig_cfg中四个DPoll_RATE设为0

4.ZGlobals.c中三个PollRate设为0

5.Onboard.c文件中,OnboardKeyIntEnable=HAL_KEY_INTERUPT_ENABLE

6.hal_drivers.c中if(!Hal_KeyIntEnable)中的语句关掉

7.osal_pwrmgr_init(void)中pwrmgr_attribute.pwrmgr_device=PWRMGR_BATTERY

  • 你是通过什么方法测试的?万用表?

    首先你需要确定到底程序有没有进入休眠

    1) 进入休眠函数断点调试

    3)用示波器测试32M晶振是否间歇性工作,用示波器测

    2)通过串入供电电路,一个10电阻,然后看具体的工作过程!

  • 谢谢您的回复!

    针对您提到的方法,我都进行了实验,结果如下:

    1、程序能够进入休眠函数所设置的断点,由此初步判断实现了进入休眠的功能;

    2、通过示波器观测到32M晶振正是间歇性工作,间歇周期与我设定的应用层周期性发送数据的周期基本一致;

    3、示波器测试串入电阻(10R,0.1%精度)的电压值为35mV左右,换算得到休眠电流为3.5mA

    但是与此同时我在该电阻旁串入一个mA档的万用表,测得的电流值为0.3mA左右。这两种方式测得电流值相差差不多有10倍。

    我把板子的外围器件基本都去掉了,包括串口芯片也去掉了,LED也断开了。

    不知道为什么会有这个相差10倍的问题?

    非常期待您的回复!

  • 用示波器测电压??????个人觉得不当

  • VV您好,我就是按照您提供的这个文档中的测试方法进行测试的,结果就是上面所说的,万用表的测试结果与示波器测电压换算得来的电流值相差10倍,不知道为什么?

  • 你试着把休眠时间加长,然后用数字万用表测,这样也能直接看到休眠电流。

  • VV您好

       我这面遇到一个问题想向您询问一下:

             CC2530芯片开启定时器唤醒时,休眠电流为0.8uA左右;在休眠函数中添加外部中断函数,休眠电流为10uA左右,休眠电流增加了好多,是因为开启了外部中断(IO口中断)造成的么?

            另外:CPU在休眠状态被外部中断唤醒后,处理中断函数时,CPU处于PM0模式;处理完中断函数后,CPU恢复休眠么?