關於lpc1112深睡眠(低功耗)的除錯報告
由於產品為移動裝置,所以功耗要求是比較嚴格的。目前採用了大mcu+小mcu的方式實現,小mcu主要是控制大mcu的電源,以實現系統的最低功耗。當然也就要求小微控制器也在不工作的時候,進入低功耗狀態。
大mcu目前採用的是lpc1788,掉電模式理論最低功耗為65ua,但是實際除錯並沒有達到那麼小(因為外設沒有完全斷電)。所以用小mcu來控制大mcu的電源,在需要的時候,在給大mcu供電。
小mcu採用的是lpc111x(lpc1112/28pin),深睡眠模式的理論值約為6ua(這個。)。
lpc1112在不接外設的情況下,首先對深睡眠功耗進行測試,目前達到了5ua左右。
以下為源**:
#include "nxplpc11xx.h"
#include "pmu.h"
#define nvic_lp_sleepdeep 1<<2
extern int key_value;
void wakeup6_irqhandler(void)
void wakeup5_irqhandler(void)
void config_ios(void);
void pmu_deepsleep(void)
void config_ios(void)
1、 需要對io重新配置,函式config_ios:
a) 配置位普通的io口功能,並且是下拉
b) 將io設定為輸出模式,並輸出訊號為0;
c) 再將io口設定為輸入。(實驗證明如果不再設定為輸入模式,功耗將增加)
注意:對io口的配置,也是在lpc1788晶元上進行過實驗的,通過以上操作會使功耗比較低。所以目前對微控制器要進入低功耗狀態,暫時對io配置都如上方式進行。
2、以上配置,並沒有每一行**進行除錯,一些配置可能可以配置為其他值。
其中:syscon->pdruncfg |=(1<<3); //bod power down//
//syscon->pdsleepcfg = 0x000018ff;
syscon->pdsleepcfg = 0x0000ffff;
這兩條**不能去掉。
syscon->pdsleepcfg 配置為0x00000aff,也會增加功耗,配置位0x000018ff功耗較低,所以看了看暫存器,在沒什麼大問題的情況下,索性都配置為0x0000ffff。
因為昨天才開始建工程,找資料,所以對lpc1112還不是很熟悉,但是基本能滿足功耗要求,暫時先記錄下來,後續還是需要對這款微控制器低功耗配置進行更深入的了解。
LPC11U35 電源管理
一共有工作 睡眠 深度睡眠 掉電和深度掉電模式,後4種不支援除錯模式。各種模式特定與wwdt對其的影響 工作模式 允許irc或看門狗振盪器,核心和儲存器由系統時鐘計時,外設有系統或專用時鐘計時。深度睡眠模式 允許irc和看門狗振盪器。核心的系統時鐘停止,復位或中斷之前都不能執行指令,外設功能繼續執行...
LPC11Uxx系列 IAP介紹
void fun 宣告乙個返回值是任意型別的指標的函式fun void 這是一種變數型別,用來定義函式指標變數 一般做法 兩部分 都同時燒錄在user flash中,晶元上電後從boot loader程式開始執行,其功能主要是 需要則執行更新操作 保證偏移量為0x200的倍數 irom1的位址區域和...
LPC11U3x儲存器對映
1 mcu不同變數的儲存位置 區域性變數 棧區 stack 由編譯器自動分配和釋放 區域性靜態變數 靜態區 程式結束後由系統釋放 全域性變數 靜態區的常量區 全域性靜態變數 靜態區 堆區 heap 一般由程式設計師自行分配和釋放,分配malloc和new申請的區域 2 cortex m0系列微控制器...