<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

超低功耗設計概述

華仔的編程隨筆 ? 來源:華仔的編程隨筆 ? 作者:華仔的編程隨筆 ? 2023-06-02 09:36 ? 次閱讀

概述

越來越多的芯片設計人員將ARM Cortex-M0和Cortex-M0+處理器用在多種超低功耗(ULP)微控制器和片上系統產品中。這里詳細的介紹如何利用這些特性,以及在設計自己的低功耗應用時應注意什么。

那么軟件開發人員需要理解的一個關鍵問題是,低功耗特性是和具體設備相關的。開發板人員需要參考微控制器供應商的應用筆記和例子,才能了解到可用的低功耗特性。

進入休眠模式

Cortex-M0和Cortex-M0+處理器默認支持一個休眠模式和一個嘗試休眠模式,不過需要注意的是,微控制器供應商可以利用設備相關的可編程寄存器定義其他的休眠模式。在處理器內部,休眠模式和深度休眠模式的選擇由系統控制寄存器中的SLEEPDEEP位決定。

如果用的是符合CMSIS的設備驅動庫,系統控制寄存器可以通過“SCB->SCR”來訪問。例如,要使能深度休眠模式,可以使用下面的語句

SCB-> |= SCB_SCR_SLEEPDEEP_Ms; //使能深度休眠特性

系統控制寄存器只支持字大小的傳輸。

微控制器的普通休眠模式和深度休眠模式的實際區別取決于芯片系統設計,例如,普通休眠中一些時鐘信號可能會被關掉,而深度休眠則可能會降低存儲器塊的電壓且可能會關掉系統中的其他部件。

在選擇了休眠模式后,可以利用WFE(等待事件)或WFI(等待中斷)指令來進入休眠模式,為了提高可移植性,建議在執行WFI/WFE指令前加上一個DSB(數據同步屏障)指令(對于其他高性能處理器,進入休眠前可能還會有未完成的存儲傳輸)。

多數情況下,微控制器供應商的設備驅動庫中包含了進入低功耗模式的函數,并且已經為對應的微控制器做了一定的處理。利用這些函數可以使微控制器得到最高等級的功耗優化。

但是,如果開發的C代碼要具有在多個Cortex-M微控制器間的可移植性,可以使用下面的CMSIS函數來直接訪問WFE和WFI指令:

指令CMSIS函數
WFE__WFE();
WFI__WFI():

如果未使用符合CMSIS的設備驅動,可以使用C編譯器提供的內在函數或者內聯匯編來生成WFE和WFI指令。此時,軟件代碼和工具鍵相關,且可移植性不高。例如KeilMDK-ARM和ARM-DS-5提供了如下面的內在函數(和CMSIS版本不同,它們是小寫格式的)。

指令KeilMDK-ARM或ARM-DS-5的內在函數
WFE__wfe();
WFI__wfi():

從架構的角度來看,DSB指令要在WFE和WFI前執行,這樣可以確保完成的數據存儲指令(如緩沖寫)在進入休眠前結束。然而,對于現有的Cortex-M0和Cortext-M0+處理器,不使用DSB也不會引起什么問題。

由于WFE可由各種事件喚醒,其中包括過去發生的事件,且一般用于空循環。例如

while(processing_required()==0)
{
__DSB(); //推薦使用存儲器屏障以提高可移植性
__WFE();
}

匯編編程環境用戶可以直接在匯編代碼中使用WFE和WFI指令。

審核編輯:湯梓紅

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

    關注

    68

    文章

    18430

    瀏覽量

    222875
  • 低功耗
    +關注

    關注

    10

    文章

    2229

    瀏覽量

    102803
  • Cortex-M0
    +關注

    關注

    4

    文章

    123

    瀏覽量

    38376
收藏 人收藏

    評論

    相關推薦

    TI CC2640超低功耗無線MCU概述

    藍牙低功耗應用,是SimpleLink超低功耗無線MCU平臺的首批成員之一,是目前廣泛使用的CC2540和CC2541的升級產品。CC2640 包含作為主處理器,運行在 48 MHz 的 32 位 ARM
    發表于 07-11 07:06

    超低功耗MCU選型與設計

      循序漸進式的功耗優化已經不再是超低功耗mcu的游戲規則,而是“突飛猛進”模式,與功耗相關的很多指標都不斷刷新記錄。我們在選擇合適的超低功耗mcu時要掌握必要的技巧,在應用時還需要一
    發表于 07-29 07:27

    超低功耗Wi-Fi技術

    ,Dialog半導體也是低功耗藍牙技術的領先創新廠商。對于國內用戶,大家所熟悉的小米手環里所使用的藍牙芯片就是Dialog的產品。除了低功耗藍牙產品,Dialog最近新推出了超低功耗的Wi-Fi芯片,貌似要在某些
    發表于 05-24 07:37

    如何選擇超低功耗MCU

    在物聯網的推動下,業界對各種電池供電設備產生了巨大需求。這反過來又使業界對微控制器和其他系統級器件的能源效率要求不斷提高。因此超低功耗MCU與功耗相關的很多指標都不斷得刷新記錄。在選擇合適的超低功耗
    發表于 12-28 07:12

    如何選擇合適的超低功耗MCU?有什么技巧?

    如何選擇合適的超低功耗MCU?有什么技巧?如何降低MCU的功耗?
    發表于 04-19 09:21

    如何選擇超低功耗MCU

    在物聯網的推動下,業界對各種電池供電設備產生了巨大需求。這反過來又使業界對微控制器和其他系統級器件的能源效率要求不斷提高。因此超低功耗MCU與功耗相關的很多指標都不斷得刷新記錄。在選擇合適的超低功耗
    發表于 11-04 07:07

    選擇超低功耗MCU的方法

    在物聯網的推動下,業界對各種電池供電設備產生了巨大需求。這反過來又使業界對微控制器和其他系統級器件的能源效率要求不斷提高。因此超低功耗MCU與功耗相關的很多指標都不斷得刷新記錄。在選擇合適的超低功耗
    發表于 11-11 07:28

    STM32L151C8T6芯片超低功耗

    超低功耗研發-STM32L151C8T6芯片(一)時鐘系統概述超低功耗研發-STM32L151C8T6芯片(二)低功耗模式超低功耗研發-ST
    發表于 11-11 07:09

    對STM32的超低功耗使用

    一,電源管理庫函數前面的入門文章對 STM32 的超低功耗的做了使用介紹,當然在使用超低功耗的時候還會考慮 RAM 的數據會不會丟失,什么時候重寫 備份寄存器,進入低功耗模式的時候要怎么保持 IO
    發表于 12-31 06:36

    超低功耗設計技巧與實現

    超低功耗設計技巧與實現
    發表于 01-18 14:59 ?105次下載
    <b class='flag-5'>超低功耗</b>設計技巧與實現

    聰明的超低功耗設計

    你熟悉的基本方法的低功耗設計?,F在,你怎么把它帶到一個新水平?極端的低功耗嵌入式設計需要仔細選取工具緩存,電路設計和智能利用單片機超低功耗的特點。
    發表于 08-04 14:09 ?13次下載
    聰明的<b class='flag-5'>超低功耗</b>設計

    基于超低功耗設計技巧與實現

    基于超低功耗設計技巧與實現
    發表于 10-15 10:44 ?12次下載
    基于<b class='flag-5'>超低功耗</b>設計技巧與實現

    超低功耗研發-STM32L151C8T6芯片(五)低功耗設計總結

    超低功耗研發-STM32L151C8T6芯片(一)時鐘系統概述超低功耗研發-STM32L151C8T6芯片(二)低功耗模式超低功耗研發-ST
    發表于 11-06 14:36 ?32次下載
    <b class='flag-5'>超低功耗</b>研發-STM32L151C8T6芯片(五)<b class='flag-5'>低功耗</b>設計總結

    超低功耗工控主板是如何降低功耗

    工業用電總量一直占據我國用電的大部分,所以就有工控主板定制廠家推出了超低功耗工控主板,超低功耗工控主板的推出將能大大減少工業用電,為我國節省工業用電量。那么超低功耗工控主板究竟是怎樣降低功耗
    發表于 05-23 15:24 ?1744次閱讀

    智能家庭與超低功耗

    智能家庭與超低功耗
    發表于 11-02 08:16 ?1次下載
    智能家庭與<b class='flag-5'>超低功耗</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>