我正在努力降低CC2538开发套件上运行的contiki操作系统的当前消耗量。
我想从CR2032操作该设备,使用寿命为2年。为实现这一目标,我需要的平均电流小于100uA。
然而,当我在3V运行以下时,我得到以下结果:
我还基于cc2538设计了自己的目标平台并得到了类似的结果。
我在https://github.com/contiki-os/contiki/blob/648d3576a081b84edd33da05a3a973e209835723/platform/cc2538dk/README.md阅读了指南 并确保在contiki-conf.h文件中: - LPM_CONF_ENABLE 1 - LPM_CONF_MAX_PM 2
任何人都可以给我一些关于如何降低电流的指示。非常感谢。
此致 沙恩
答案 0 :(得分: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。
此外,为了节省更多电流,请关闭串口com:
#define CC2538_CONF_QUIET 1
您使用的是SmartRF主板吗?如果您想使用此电路板进行适当的电流测量,则必须移除每个跳线:P486,P487,P411和P408。只保留BTN_SEL的跳线和RESET信号。