關於lpc1112深睡眠(低功耗)的除錯報告

2021-06-13 17:43:36 字數 1338 閱讀 2442

關於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系列微控制器...