2014-10-17 42 views
1

我试图降低运行在CC2538开发套件上的contiki os的电流消耗。Contiki OS CC2538:降低电流/功耗

我想操作CR2032的设备,使用寿命为2年。为了达到这个目标,我需要一个小于100uA的平均电流。

然而,当我运行在3V以下,我得到如下结果:

  • 半自助旅游旅行社/例子/你好世界=0.4毫安 - 2毫安
  • 半自助旅游旅行社/例子/ ER-休息,例如/ ER-例如客户端=27毫安
  • 半自助旅游旅行社/示例/ ER-其余-示例/ ER-例如服务器=27毫安
  • thingsquare WebSocket的示例=4毫安

我也基于cc2538设计了我自己的目标平台并获得了类似的结果。

我已阅读指南:https://github.com/contiki-os/contiki/blob/648d3576a081b84edd33da05a3a973e209835723/platform/cc2538dk/README.md ,并保证在半自助旅游旅行社-conf.h文件: - LPM_CONF_ENABLE 1 - LPM_CONF_MAX_PM 2

谁能给我一些指点,我怎么能得到电流下降。这将非常感激。

问候, 巴蒂尔

回答

1

你怎么测量电流?

你必须知道,使用基本的电流表来测量contiki-os的当前消耗量并不会给你相关的结果。系统以相对较高的速率(默认为8Hz)打开/关闭无线电,以执行CCA。这可能不容易捕捉到安培表。要想知道设备处于深度睡眠状态时的电流消耗情况(然后进行计算以确定平均电流消耗),我宁愿将设备置于PM状态,直到程序达到无限时间循环。我用下面的代码来做到这一点:

lpm_enter(); 
REG(SYS_CTRL_PMCTL) = SYS_CTRL_PMCTL_PM2; 
do { asm("wfi"::); } while(0); 
leds_on(LEDS_RED); // should not reach here 
while(1){ 
... 

在CC2538上,CCA检查消耗大约10-15mA并持续大约2ms。当无线电传输一个数据包时,它消耗25mA。看看这个帖子:Contiki UDP packet transmission duration with CC2538

此外,为了节省一点更多的电流,关闭串行通讯:

#define CC2538_CONF_QUIET 1 

你使用的SmartRF板?如果您想使用该电路板进行正确的电流测量,则必须删除所有跳线:P486,P487,P411和P408。只保留BTN_SEL的跳线和RESET信号。

+0

我尝试你的建议,强迫untit进入PM2模式。 – Shane 2014-11-21 18:29:52

+0

我尝试你的建议,强制进入PM2模式。你好世界=〜150uA。发现在LPM中,CC2538将每个IO设置为带有上拉的输入。最后,我的一个IO被绑定到0V。纠正这个问题后,电流降至1.4uA。谢谢你的建议,以帮助我解答当前的问题。 – Shane 2014-11-21 18:36:29