色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何讓MCU進入睡眠狀態,看到底能節省多少能耗?

jf_pJlTbmA9 ? 來源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-07-24 17:21 ? 次閱讀

低功耗模式實驗

探索低功耗模式的最佳方法是選擇一個微控制器并以各種低功耗模式實際運行該處理器。本文中,我決定翻出積塵已久的NXP Kinetis-L Freedom電路板,我曾經不僅用它進行過實驗,而且還應用于許多產品、應用和課程。無論對錯,我決定不僅要測量微控制器的能耗,還要測量整個開發板的能耗。MCU通常是電路板上的耗能大戶之一,但測量整個系統的電流經常提醒我它并不是電路板上唯一的耗電器件。微控制器的優化長路迢迢,但其實它并不是唯一需要優化能耗的器件。

從基線測量開始


每當我努力優化一個產品的能耗時,我首先會從基線能量測量開始。通常我會通過分析幾秒或幾分鐘內設備的電流消耗來了解應該從哪里開始。在我的開發板實驗中,將Kinetis-L置于運行模式,無睡眠模式,所有外設均運行并設置電路板定期切換LED。通過采用IAR嵌入式工作臺的I-Jet調試器以及I-Scope,我可以為該電路板配置一個簡單基線,即LED關閉時電流消耗大約為16.9mA,LED打開時大約為18.0mA,如圖1所示。顯然,從哪里開始進行測量很重要,否則分析結果可能明顯偏離。

wKgZomS-QmCADFF0AAFAKz9joVg342.png
圖1:開發板的電流測量,LED每秒切換一次。(來源:作者)

采用等待模式和深度睡眠模式優化能耗

節省能耗最快的方法是執行等待或深度睡眠模式。研究Kinetis-L處理器的數據表可以得出,等待模式的能耗在3伏電壓下的電流介于3.7和5.0mA之間。在此模式下,CPU和外設時鐘被禁用,而閃存處于休眠模式,此時允許處理器在中斷時間范圍內(12-15個時鐘周期)仍然可以被喚醒。等待模式易于實現,設置進入等待模式的代碼如下所示:

void Sleep_Wait(void)
{
SCB_SCR &=~ SCB_SCR_SLEEPDEEP_MASK;
asm(“WFI”);
}

只需這兩行代碼,開發板的電流消耗就從18.0mA降至15.9mA。電流消耗減少了11.6%!如果電路板由680mA電池供電,則該設備的電池壽命將從37.8小時變為42.8小時!兩行代碼就可以將電池壽命延長五小時!

這些高級電源模式的好處在于我們可以輕松地再向前邁一步。我們可以使用以下代碼將處理器置于深度睡眠等待模式,而不僅僅是等待模式:

void Sleep_Deep(void)
{
SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK;
asm(“WFI”);
}

我們所做的僅僅是調整了SCB_SCR寄存器中的一位,就已經將最初的18mA電流消耗減少為14.8mA。電流消耗減少了17.8%!同樣,假設電路板由680mA電池供電,電池壽命現在已經從37.8小時增長為46小時!只需幾行代碼就可以節省大量能耗,而這只是冰山一角!

利用Stop模式和VLLS模式實現微安級電流消耗

采用停止模式可以禁用內核和系統時鐘,這有可能將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~2mA的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μs加上中斷延遲,這還可以接受。但是,如果在Kinetis-L上設置了其中一種VLLS模式,將需要啟動處理器的喚醒延遲再加上額外的53到115微秒!有些應用可能無法接受這種狀況。圖2顯示了Kinetis-L從低功耗模式到運行狀態的各種轉換。

wKgZomS-QnCAMYslAAJFdiVdxsw521.png
圖2:Kinetis-L從低功耗模式到各種模式的轉換時間。(來源:Kinetis-L數據表)

結論

Arm微控制器都具有標準的低功耗模式,但每個芯片廠商都會定制開發人員可用的更多低功耗模式。正如我們所看到的,芯片供應商通常會提供幾種容易實現的模式,對喚醒延遲的影響最小。他們還會提供幾種超低功耗模式,幾乎可以關閉處理器并且僅消耗幾百微安或更少能量!開發人員通常需要在能耗和系統被喚醒需要的時長以及響應事件的速度之間進行權衡。而權衡一定是基于應用的,所以不要指望能夠在每個產品和應用上都執行最低功耗模式。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7547

    瀏覽量

    151327
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17135

    瀏覽量

    351022
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9088

    瀏覽量

    367405
  • 低功耗
    +關注

    關注

    10

    文章

    2398

    瀏覽量

    103678
收藏 人收藏

    評論

    相關推薦

    cc2650如何在使串口同時,設備進入睡眠模式?

    本帖最后由 冒汗的心情 于 2016-3-29 11:47 編輯 cc2650如何能在使串口的同時,其設備完全進入睡眠模式?使
    發表于 03-29 11:45

    STM8AF52AATCY如何控制器進入睡眠模式

    尊敬的先生/女士,如何控制器進入睡眠模式。您能否給我信息或發送給我任何源代碼鏈接。在這里,我使用halt()進入睡眠狀態;禁用外圍設備的模式,但我在想是否還有其他配置需要做。請建議我
    發表于 01-07 16:14

    如何MCU進入睡眠狀態節省能耗

    狀態并看看到底能夠節省多少能耗。低功耗模式實驗探索低功耗模式的最佳方法是選擇一個微控制器并以各種低功耗模式實際運行該處理器。本文中,我決定翻出積塵已久的NXP Kinetis-L Fr
    發表于 08-15 13:24

    請問CC2530進入睡眠狀態時看門狗起作用嗎?

    CC2530使用睡眠定時器,在進入睡眠狀態看門狗起作用嗎?會不會沖突?比如說系統睡眠5分鐘,看門狗要怎么設置?在哪里喂狗?(新人,對看門狗
    發表于 08-19 02:01

    如何NY8A054D進入睡眠模式?

    如何NY8A054D進入睡眠模式?
    發表于 09-27 06:02

    如何微控制器進入睡眠狀態并看看到底能夠節省多少能耗

    ?這些模式是如何影響嵌入式系統的?在這篇文章中,我們將更詳細探討如何微控制器進入睡眠狀態并看看到底能夠節省多少
    發表于 11-04 07:39

    RTX使用RTC1中斷導致頻繁喚醒,無法進入睡眠狀態怎么解決?

    RTX使用RTC1中斷導致頻繁喚醒,無法進入睡眠狀態怎么解決?
    發表于 02-23 07:21

    CH582M進入睡眠模式沒有關閉主振是什么原因?

    IC使腳(電池供電)4、拔出電池。(無電源供電,復位MCU)測量MCU電源口?3.3V下降到1.9V再上升到3.3V 這個過程5ms左右5、進入睡眠前置高A?,主振沒有關閉。充電IC
    發表于 06-21 07:43

    如和STM8S與STM8L安全地進入睡眠狀態呢?

    評估期間設置標志,并且存在風險,即 MCU 會在升起一些標志的情況下進入睡眠狀態。是否有任何機制如何 STM8S(可能還有 STM8L)安全地睡眠
    發表于 12-08 06:12

    STM32L071CB如何MCU進入睡眠狀態呢?又是如何喚醒它的呢?

    MCU 需要設置為睡眠模式以最小化功耗。到現在為止,除了將 MCU 設置為睡眠模式之外,其他一切都已正確完成。但是我不清楚如何
    發表于 12-09 08:10

    請問s32k3 mcu進入睡眠模式后flexcan可以工作嗎?

    s32k3 mcu進入睡眠模式后flexcan可以工作嗎?客戶希望通過 flexcan 喚醒 MCU
    發表于 03-23 07:58

    如何Arduino進入睡眠狀態

    子,Uno在清醒時使用30-40 mA,在睡眠時使用約19 mA。 Pro Mini在喚醒時使用25mA,在睡眠時使用0.57 mA。由于每個mA在連接到電池時都很重要,你可以看到沒有比賽,Arduino Pro Mini是贏家
    的頭像 發表于 08-26 08:54 ?1w次閱讀

    32 系統進入stop模式_如何MCU進入睡眠狀態節省能耗

    ?這些模式是如何影響嵌入式系統的?在這篇文章中,我們將更詳細探討如何微控制器進入睡眠狀態并看看到底能夠節省多少
    發表于 11-01 16:08 ?5次下載
    32 系統<b class='flag-5'>進入</b>stop模式_如何<b class='flag-5'>讓</b><b class='flag-5'>MCU</b><b class='flag-5'>進入睡眠</b><b class='flag-5'>狀態</b><b class='flag-5'>節省</b><b class='flag-5'>能耗</b>?

    如何阻止電腦進入睡眠或者休眠

    通常我們使用電腦過程中會設置多長時間不操作,電腦就會滅屏、睡眠甚至是休眠。如果電腦進入睡眠或者休眠模式,電腦運行的程序將不再執行。如果我們設計的桌面程序一直在執行某種操作,比如持續的USB通信,操作人可能會離開很久,這個時候,我們不希望電腦
    的頭像 發表于 02-28 14:30 ?2687次閱讀

    如何MCU進入睡眠狀態節省能耗

    。實際上我們真正要了解的是,低功耗模式如何在真正的微控制器上實現?這些模式是如何影響嵌入式系統的?在這篇文章中,我們將更詳細探討如何微控制器進入睡眠狀態并看看到底能夠
    的頭像 發表于 08-04 14:27 ?639次閱讀
    如何<b class='flag-5'>讓</b><b class='flag-5'>MCU</b><b class='flag-5'>進入睡眠</b><b class='flag-5'>狀態</b><b class='flag-5'>節省</b><b class='flag-5'>能耗</b>?
    主站蜘蛛池模板: 女性爽爽影院免费观看| 色小姐.com| 青青草伊人| 最美女人体内射精一区二区 | 最美白嫩的极品美女ASSPICS| 最新色导航| 一个人免费观看完整视频日本| 亚洲、国产综合视频| 午夜影院c绿象| 午夜国产福利| 翁止熄痒禁伦短文合集免费视频| 色噜噜噜视频| 视频网站入口在线看| 少妇被阴内射XXXB少妇BB| 乳女教师欲乱动漫无修版动画| 人妻天天爽夜夜爽三区麻豆A片| 91精品国产高清久久久久久| 一本道色综合手机久久| 亚洲最大成人| 在教室伦流澡到高潮H女攻视频| 亚洲欧美日本国产在线观18| 亚洲人精品午夜射精日韩| 亚洲欧美日韩精品自拍 | 精品久久伊人| 久久无码人妻中文国产| 噜噜噜狠狠夜夜躁精品| 欧美一区二区在线观看| 日韩高清特级特黄毛片| 偷拍国产精品在线播放| 亚洲AV國產国产久青草| 亚洲午夜一区二区电影院| 在线观看免费视频a| 99精品亚洲| 调教玩弄奶头乳夹开乳震动器| 国产精品96久久久久久AV不卡| 国产永久免费观看视频软件| 久久草这里全是精品香蕉频线观| 乱叫抽搐流白浆免费视频| 欧美四虎精品二区免费| 色一情一乱一伦一区二区三区 | 久久久精品免费免费直播|