日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

可以控制到多低(功率)?

發布時間:2023/11/28 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 可以控制到多低(功率)? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

可以控制到多低(功率)?

How low (power) can you go?

在我的上一篇文章“Arm Cortex-M低功耗模式基礎知識”中,我們探討了在每個Arm Cortex-M處理器上都可以找到的低功耗模式的基本原理,以及如何利用WFI和WFE指令使處理器進入休眠狀態。但真正的問題是這些低功耗模式是如何在一個真正的微控制器上實現的,以及這些模式如何影響我們的嵌入式系統?在這篇文章中,我們將更詳細地探討如何讓微控制器進入睡眠狀態,看看能給我們帶來多少能量。

低功率模式實驗

探索低功耗模式的最佳方法是選擇一個微控制器,并在各種低功耗模式下實際運行處理器。在這篇文章中,我決定抹去我久經考驗的NXP Kinetis-L Freedom board,我不僅用過它,還用在了許多產品、應用程序和課程中。我還決定,不管是對是錯,不僅要測量微控制器消耗的能量,還要測量整個開發板。MCU通常是電路板上最耗電的設備之一,但我經常發現,測量整個系統的電流提醒我,它并不是電路板上唯一的能源消耗者。優化微控制器可以帶你走很長的路,但它并不總是唯一需要能量優化的設備。

從基準測量開始

每當我在優化產品的能源消耗時,我首先從基準能量測量開始。這通常是通過分析幾秒鐘或幾分鐘內設備的電流消耗來完成的,以了解我們從何處開始。在我的開發板實驗中,我讓Kinetis-L處于運行模式,沒有實現睡眠,所有外圍設備都打開了,并設置板定期切換LED。使用帶有I-Jet調試器和I-Scope的IAR Embedded Workbench,我能夠為我的電路板描繪一個簡單的基準,當LED熄滅時為16.9毫安,當LED亮起時為18.0毫安,如下圖1所示。正如你所看到的,重要的是要注意你的測量從哪里來,否則你的分析可能會有很大的偏差。

Figure 1. A current measurement of the development board with an LED toggling once per second.

利用等待和深度睡眠模式優化能量

要想節省一些能量,最快的方法是實施等待或深度睡眠模式。對Kinetis-L處理器數據表的檢查表明,在3伏電壓下,等待模式在3.7到5.0毫安之間。在這種模式下,CPU和外圍時鐘被禁用,但閃存處于打瞌睡模式,允許處理器在中斷時間范圍內(12-15個時鐘周期)喚醒。等待模式易于實現,進入等待模式的代碼如下:

void Sleep_Wait(void)

{

  SCB_SCR &=~ SCB_SCR_SLEEPDEEP_MASK;asm(“WFI”);

}

只有這兩行代碼,開發板的電流消耗從18.0毫安下降到15.9毫安。現在的消費量下降了11.6%!如果主板由680毫安的電池供電,那么該設備的電池壽命將從37.8小時延長到42.8小時!只需兩行代碼就可以增加5個小時!

這些高級功率模式的優點在于我們可以輕松地將這一點再進一步。我們可以使用以下代碼將處理器轉入深度休眠等待模式,而不是將處理器置于等待模式:

void Sleep_Deep(void)

{

  SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK;asm(“WFI”);

}

我們所做的只是調整SCB_SCR寄存器中的一個位,現在我們已經從原來的18毫安電流消耗變為14.8毫安。現在的消費量下降了17.8%!同樣,假設主板由680毫安的電池供電,電池壽命將從37.8小時延長到46小時!只需幾行代碼就可以節省大量成本,這只是冰山一角!
利用停機和VLLS模式進行uA電流消耗

使用停止模式有可能通過禁用核心和系統時鐘進一步降低MCU的電流消耗,最多再降低兩毫安。你會發現,功率模式越低,實現它所需的代碼越多,喚醒系統的代碼就越復雜。在Kinetis-L上進入停止模式的代碼如下:

void Sleep_Stop(void)

{

  volatile unsigned int dummyread = 0;SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;SMC_PMCTRL |= SMC_PMCTRL_STOPM(0);dummyread = SMC_PMCTRL;Sleep_Deep();

}

請注意,停止模式是通過電源管理控制寄存器控制的,一旦狀態設置好,就調用Sleep_Deep函數來完成電源模式的設置和WFI的執行。

到目前為止,我們一直在討論1-2毫安的MCU圖。現代微控制器將有功率模式,可以吸引微安甚至毫安!Kinetis-L處理器在2013年左右首次亮相,其極低泄漏停止(VLLS)模式僅需135至496微安!初始化此電源模式的代碼如下所示:

void Sleep_VLLS1(void)

{

  volatile unsigned int dummyread = 0;SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;SMC_PMCTRL |= SMC_PMCTRL_STOPM(0x4);SMC_VLLSTRL = SMC_VLLSCTRL_LLSM(1);dummyread = VLLS_CTRL;Sleep_Deep();

}

在這一點上,微控制器將幾乎沒有任何能量!
低功耗模式對喚醒延遲的影響
到目前為止,我們已經看到,將處理器移動到越來越低的功耗模式是一種很好的節能方式,但這種節省確實是要付出代價的。處理器的能量狀態越低,喚醒處理器并執行有用工作所需的時間就越長。例如,如果我要使用標準停止模式,處理器喚醒并重新開始執行代碼需要2 us加上中斷延遲。還不錯。然而,如果我使用Kinetis-L上的VLLS模式之一,我將有一個啟動處理器的喚醒延遲加上另外53到115微秒!這可能是不可接受的,具體取決于應用程序。圖2顯示了Kinetis-L上從低功耗模式到運行狀態的其他轉換。

Figure 2. Transition times from low power modes to various modes on the Kinetis-L.

結論

Arm微控制器都有標準的低功耗模式,但是每個硅晶片廠商都定制了低功耗模式,供開發者使用。正如我們所看到的,硅晶片供應商通常提供幾種模式,它們可以作為低掛起的水果,對喚醒延遲的影響最小。它們還提供了幾種非常低功耗的模式,幾乎可以關閉處理器,只需要幾百微安或更少!開發人員通常需要平衡他們想要的能量和他們需要系統以多快的速度喚醒和響應事件。這種取舍肯定是特定于應用程序的,所以不要指望能夠在每個產品和應用程序上運行最低功耗模式。

總結

以上是生活随笔為你收集整理的可以控制到多低(功率)?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。