2014-10-17 45 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