CC2530采用协议栈时工作在PM2模式时的电流消耗
我对基于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倍的问题?
非常期待您的回复!
用示波器测电压?个人觉得不当
7206.4604.swra292AN079 -- Measuring Power Consumption of CC2530 with Z-Stack.PDF
VV您好,我就是按照您提供的这个文档中的测试方法进行测试的,结果就是上面所说的,万用表的测试结果与示波器测电压换算得来的电流值相差10倍,不知道为什么?
你试着把休眠时间加长,然后用数字万用表测,这样也能直接看到休眠电流。
VV您好
我这面遇到一个问题想向您询问一下:
CC2530芯片开启定时器唤醒时,休眠电流为0.8uA左右;在休眠函数中添加外部中断函数,休眠电流为10uA左右,休眠电流增加了好多,是因为开启了外部中断(IO口中断)造成的么?
另外:CPU在休眠状态被外部中断唤醒后,处理中断函数时,CPU处于PM0模式;处理完中断函数后,CPU恢复休眠么?