關於STM32L100xx, STM32L151xx, STM32L152xx ,STM32L162xx 的Power Control

5.1.4 穩壓器

        一個嵌入式線性穩壓器爲所有數字電路提供電源,除了待機電路。穩壓器輸出電壓(VCORE)可以軟件編程爲三種不同電壓範圍1.2-1.8V(典型)(參見5.1.5)。

      重啓後穩壓器總是使能的。它工作於三種不同模式:main(MR),low power(LPR)和power down,這取決於應用程序模式。

  • 在Run模式下,穩壓器處於main(MR)模式,併爲VCORE域(core核,memories內存和數字外圍)提供全功率電力。

  • 在Low power run模式下,穩壓器處於low poer(LPR)模式,併爲VCORE域提供低功率電力,寄存器內容和內部SRAM的內容保持不變。

  • 在Sleep模式下,穩壓器處於main(MR)模式,併爲VCORE域提供全功率電力,寄存器內容和內部SRAM的內容保持不變。

  • 在Stop模式下,穩壓器爲VCORE域提供低功率電力,寄存器內容和內部SRAM的內容保持不變。

  • 在Standby模式下,穩壓器電源關閉。除了待機電路,寄存器內容和內部SRAM的內容丟失。


5.2.3 可編程的電壓探測器(PVD)

      可以使用(Power Voltage Detector)PVD檢測VDD電源電壓的大小,這是通過配置PWR_CR寄存器的PLS[2:0]比特選擇一個門限進行比較來實現的。

        PVD可以使用外部輸入模擬電壓(PVD_IN)與VREFINT進行比較。此時,PVD_IN(PB7)引腳必須配置爲模擬模式,即PLS[2:0]=111。通過PVDE比特使能PVD。

        PWR_CSR寄存器的PVDO標識位用以標識VDD是否高於或者低於PVD門限。該事件內部連接於EXTI Lin16,並且能夠通過使能EXTI寄存器來產生中斷。VDD電壓低於PVD門限或者VDD高於PVD門限時PVD都可以輸出中斷,這取決於EXTI line16是配置的中斷是上升沿還是下降沿觸發。作爲一個例子,可以再該中斷服務程序中執行緊急關機操作。

5.2.4 內部電壓參考(VREFINT)

        內部參考電壓(VREFINT)爲外圍模擬電路提供穩定電壓。使用到內部參考電壓(VREFINT)的模塊有BOR,PVD,ADC,LCD和比較器。如果BOR,PVD,ADC,LCD和比較器的任何一個啓用,那麼內部參考電壓(VREFINT)將被激活。

        內部參考電壓的消耗是不可忽視的,尤其在Stop和Standby模式下。爲減少能量消耗,PWR_CR寄存器的ULP(Ultra low power)比特可以設置爲關閉內部參考電壓。然而,在這種關閉的情況下,系統退出Stop/Standby模式後,在內部參考電壓啓動時(達到3ms)那些使用了內部參考電壓的功能模塊將不保證穩定。

        爲減少啓動時間,系統在退出Stop/Standby模式時不需要等待內部參考電壓啓動的時間。這可以在進入Stop/Standby模式之前,通過設置PWR_CR寄存器的FWU(Fast wakeup)比特。

        如果設置了ULP比特,在進入Stop/Standby模式之前就使能的這些功能將在進入這些模式之後被關閉,並且不論FWU設置與否,在內部參考電壓啓動後重新使能。PWR_CSR寄存器的VERFINTRDYF標誌位標識了內部參考電壓準備就緒。

5.3 低功耗模式

       默認情況下,單片機在系統重啓或者開機重啓後處於Run模式。在Run模式下CPU的時鐘由HCLK提供,程序代碼也處於執行過程當中。多種低功耗模式可以使用,以便於在CPU不需要保持運行的時候達到節能目的,比如當等待外部事件時。選擇何種低功耗模式由用戶來選擇決定,這需要綜合考慮低功耗、性能、低啓動延時和可選的喚醒來源。

     設備擁有5種低功耗模式:

  • 低功耗運行模式(Low power run mode):穩壓器進入低功耗模式,有限時鐘頻率,有限數目外圍模塊運行。

  • 睡眠模式:Coretex-M3核停止,外圍保持運行。

  • 低功耗睡眠模式:Cortex-M3核停止,有限時鐘頻率,有限數目外圍模塊運行,穩壓器處於低功耗模式,RAM關機,Flash停止。

  • 停止模式:所有時鐘停止,穩壓器(regulator)保持運行,穩壓器(regulator)處於低功耗模式。

  • 待機模式:VCORE域關閉。

另外,可以在Run模式下使用以下的方法降低功耗:

  • 降低系統時鐘

  • Gating the clocks to the APBx and AHBx peripherals when they are unused.

  5.3.1 在低功耗模式下時鐘表現

     APB外圍和DMA時鐘可以被軟件關閉。

     睡眠(sleep)和低功耗睡眠(low power sleep)模式下:

     CPU時鐘在睡眠和低功耗睡眠模式下停止。存儲器接口 時鐘(FLITF接口和RAM接口)和所有外圍時鐘可以在睡眠期間被軟件停止。在低功耗睡眠模式下,memory interface(FLITF)時鐘停止,RAM關機。當連接到AHB和APB橋時鐘的所有外圍時鐘關閉,那麼AHB和APB橋時鐘在Sleep/Low power sleep模式下將被硬件關閉。

     Stop和Standby模式下:

    系統時鐘和所有高速時鐘在Stop和Standby模式下都停止:

  •  PLL被關閉

  • 內部RC 16MHz(HSI)振盪器被關閉

  • 外部1-24MHz(HSE)振盪器被關閉

  • 內部65kHz-4.2MHz(MSI)振盪器被關閉

       當由於中斷(Stop模式下)或者重啓(Standby模式)退出這兩種模式,內部MSI振盪器被選擇爲系統時鐘。當退出Stop模式時,原先的MSI配置保持不變(範圍和微調值)。當退出Standby模式,範圍和微調值復位爲默認的2MHz值。

       如果Flash編程操作或者APB域訪問正在執行中,Stop/Standby模式在進入前會有延遲,直到Flash操作和APB訪問執行完畢。

5.3.2 降低系統時鐘

      Run模式下系統時鐘(SYSCLK,HCLK,PCLK1,PCLK2)可以通過預分頻寄存器降低速率。在進入睡眠(sleep mode)模式前,這些預分頻寄存器還可以被用來降低外圍時鐘速率。

     更多詳細信息參考6.3.3節:Clock configuration register(RCC_CFGR)。

5.3.3外設時鐘門控

    在Run模式下,HCLK和PCLKx的個別外圍和存儲器可以在任何時間被停止以降低能耗。

     在執行WFI和WFE指令之前,可以在睡眠模式下通過關閉外部時鐘來進一步降低功耗。

     外部時鐘門控由AHB外圍時鐘使能寄存器(RCC_AHBENR),APB2外圍時鐘使能寄存器(RCC_APB2ENR),APB1外圍時鐘使能寄存器(RCC_APB1ENR)控制。(參見6.3.8, 6.3.9, 6.3.10)。

    睡眠模式下可以通過復位RCC_AHBLPENR寄存器和RCC_APBxLPENR(x可以是1或2)相應的使能位來關閉外圍時鐘。

5.3.4 低功耗運行模式(Low power run mode:LP run)

    在Run模式下如果想要進一步降低功耗,穩壓器可以配置爲低功耗模式。在該模式下,系統頻率不應當超過f_MSI的range 1(參見6.2.3).

    請參考產品datasheet,以查閱更詳細的關於穩壓器和外圍操作條件信息。

Note:

    當 APB1時鐘頻率小於 RTC時鐘頻率的7倍 (7*RTCLCK)時,爲讀取 RTC 日歷寄存器的值, 軟件必須讀取日曆和時間/日期寄存器兩次。如果前後連續兩次讀取的值一致,那麼就認爲讀取的日曆值是正確的,否則需再讀取一次。

     低功耗運行模式僅僅可以在VCORE 在 range 2的情況下進入。 另外,  當選擇了Low power run模式不得使用動態電壓調節(dynamic voltage scaling)。 當選擇Low power run 模式後,Stop和Sleep模式 下regulator只允許配置爲 Low power 模式。

Note: 在低功耗運行模式下,所有I/O引腳都保持原先在Run模式下的狀態。

  進入Low power run mode:

   進入Low power run mode執行以下過程:

  • 每個數字IP 時鐘通過RCC_APBxENR和RCC_AHBENR寄存器進行使能和不使能。

  • 需降低系統時鐘頻率,需不超過f_MSI range 1。

  • regulator通過軟件強制設置爲low power模式(設置LPRUN和LPSDSR比特)

    退出Low power run mode:

    退出Lower power run mode過程如下:

  • regulator通過軟件強制爲main regulator。

  • 如果需要,打開Flash的電源。

  • 可以增加系統時鐘頻率

5.3.5 Sleep模式

    進入Sleep模式:

   Sleep模式的進入通過執行WFI(Wait For Interrupt) 或者 WFE(Wait for Event)指令執行。有兩種選項進入sleep模式,這根據Cortex-M3 System Control reguster的SLEEPONEXIT比特:

  • Sleep-now: 立即睡眠,如果SLEEPONEXIT比特清零,只要WFI或者WFE指令一執行MCU就立即進入Sleep模式;

  • Sleep-on-exit: 如果SLEEPONEXIT比特爲1,MCU在退出最低優先級的ISR程序後立即進入Sleep模式。

Note:  在Sleep模式下,所有I/O引腳保持Run模式下的相同狀態。

     參考表28: Sleep-now和表29:Sleep-on-exit,詳細描述瞭如何進入Sleep模式.

    。。。。。。

    。。。。。。

   退出Sleep模式:

   WFI指令用來進入Sleep模式,任何由NVIC應答的外部中斷可以將MCU從Sleep模式下喚醒。

   WFE指令用來進入Sleep模式,事件發生時MCU即退出Sleep模式。產生的喚醒事件可以是以下任意一種情況:

  • Enabling an interrupt in the peripheral control register but not in the NVIC, and enabling the SEVONPEND bit in the Cortex-M3 System Control register. When the MCU resumes from WFE, the peripheral interrupt pending bit and the peripheral NVIC IRQ channel pending bit (in the NVIC interrupt clear pending register) have to be cleared.

  • Or configuring an external or internal EXTI line in event mode. When the CPU resumes from WFE, it is not necessary to clear the peripheral interrupt pending bit or the NVIC IRQ channel pending bit as the pending bit corresponding to the event line is not set.

  這種模式喚醒時間最小,這是由於中斷的出入沒有花時間。

5.3.6 Low power sleep 模式(LP sleep)

  進入Low power sleep模式:

  通過配置voltage retulator爲low power mode進入low power sleep模式,然後執行WFI或者WFE指令。在這種模式下,Flash不可訪問,但是RAM仍然可以訪問。

  這種模式下,系統頻率不可超過f_MSI range 1.

  請參考產品手冊以獲取更多voltage regulator的詳細內容和外部操作條件。

  Low power sleep 模式只有當VCORE處於range 2.

Note:

    當 APB1時鐘頻率小於 RTC時鐘頻率的7倍 (7*RTCLCK)時,爲讀取 RTC 日歷寄存器的值, 軟件必須讀取日曆和時間/日期寄存器兩次。如果前後連續兩次讀取的值一致,那麼就認爲讀取的日曆值是正確的,否則需再讀取一次。

    有兩種選項進入sleep low power的方法,這根據Cortex-M3 System Control reguster的SLEEPONEXIT比特:

  • Sleep-now: 立即睡眠,如果SLEEPONEXIT比特清零,只要WFI或者WFE指令一執行MCU就立即進入Sleep模式;

  • Sleep-on-exit: 如果SLEEPONEXIT比特爲1,MCU在退出最低優先級的ISR程序後立即進入Sleep模式。

 進入Low power sleep模式,執行下面的過程:

  • 通過FLASH_ACR寄存器的SLEEP_PD比特關閉Flash存儲器。更多詳細信息參考Section 3. 這可以降低功耗,但是會導致增加喚醒時間。

  • 每個數字IP 時鐘通過RCC_APBxENR和RCC_AHBENR寄存器進行使能和不使能。爲保持Low power sleep模式持續運行,數字IP時鐘必須通過RCC_APBxLPENR和RCC_AHBLPENR使能。

  • 必須降低系統時鐘頻率。

  • 通過軟件(設置LPSDSR比特)強制regulator進入low power 模式。

  • 通過執行WFI/WFE指令進入Sleep模式。

Note: 在Low power sleep模式下,所有I/O保持和Run模式下一致的狀態。

    參考表30: Sleep-now和表 31: Sleep-on-exit描述了詳細的如何進入low power sleep模式。


   退出Low power sleep模式:


  如果用WFI指令用於進入Low power sleep模式,則任何由NVIC應答的外部中斷可以將MCU從low power Sleep模式下喚醒。

    WFE指令用來進入Sleep模式,事件發生時MCU即退出Sleep模式。產生的喚醒事件可以是以下任意一種情況:

  • Enabling an interrupt in the peripheral control register but not in the NVIC, and enabling the SEVONPEND bit in the Cortex-M3 System Control register. When the MCU resumes from WFE, the peripheral interrupt pending bit and the peripheral NVIC IRQ channel pending bit (in the NVIC interrupt clear pending register) have to be cleared.

  • Or configuring an external or internal EXTI line in event mode. When the CPU resumes from WFE, it is not necessary to clear the peripheral interrupt pending bit or the NVIC IRQ channel pending bit as the pending bit corresponding to the event line is not set.

  當通過中斷或者喚醒事件退出Low power sleep模式時,regulator配置爲main regulator模式。有必要的話就打開Flash存儲器,也可以增加系統時鐘頻率。

      當voltage regulator處於(low power mode)低功耗模式,從low power sleep模式喚醒需要額外的啓動延遲。

   參考表30:Sleep-now和表31:Sleep-on-exit給出了詳細的退出過程。

      。。。。。。。。

      。。。。。。。。

5.3.7 Stop模式

     stop模式基於Cortex-M3的deepsleep模式和外部時鐘門控。voltage regulator可以配置爲normal或者low-power模式。stop模式下,所有VCORE域下的時鐘都停止,PLL,MSI,HSI和HSE RC振盪器關閉了。內部SRAM和寄存器內容保持不變。

    爲獲得Stop模式下最低功耗,內部Flash存儲器也進入低功耗模式。當Flash存儲器處於低功耗模式,從Stop模式喚醒會有額外的延遲時間。

   爲降低stop模式下的功耗,VREFINT,BOR,PVD和溫度傳感器可以在進入Stop模式前被關閉。可以使用PWR_CR寄存器的ULP比特在退出Stop模式後重新開啓它們。

Note:  在Stop模式下,所有I/O引腳保持與Run模式下一致。

        進入Stop模式:

        參考表32更多關於進入Stop模式的詳細描述。

Note: 如果再進入stop模式前需要關閉外部時鐘(external clock), HSEON比特必須先關閉,並且系統時鐘需切換到HSI。

        否則,如果HSEON比特保持使能,而外部時鐘(外部晶振)可以在進入stop模式前去除,時鐘安全系統(clock security system CSS)必須使能,以檢測外部晶振出錯,避免在進入stop模式時失靈。

     爲進一步降低stop模式下的功耗,內部voltage regulator可以設置爲low power模式。這通過設置PWR_CR寄存器的LPSDSR比特(參見5.4.1節)。

    如果Flash存儲器在編程中或者APB域正在訪問中,則只有在這些操作完畢之後才能進入stop模式。

    stop模式下,可以配置特定的控制bit以來設置下述一些屬性:

  • 獨立看門狗(IWDG):通過往寫入key寄存器或者硬件選項(hardware option)啓動IWDG. 一旦啓動無法停止,除非重啓。參考21.3.和21.

  • RTC: 通過RCC_CSR寄存器的RTCEN比特設置。

  • 內部振盪器(LSI RC): 由RCC_CSR寄存器的LSION比特配置。

  • 外部32.768kHz振盪器(LSE OSC): 這由RCC_CSR寄存器的LSEON比特配置。

   ADC,DAC或LCD仍然會在Stop模式下消耗電能,除非在進入stop模式之前關閉他們。關閉這些模塊,可以通過設置ADC_CR2寄存器的ADON比特和DAC_CR寄存器的ENx比特都爲0來實現。

  退出stop模式:

   參考表32更多關於stop退出的描述。

   通過中斷或者喚醒時間從stop模式退出時,MSI RC振盪器默認作爲系統時鐘。

   當voltage regulator處於low power 模式,從stop喚醒啓動時會有額外的延遲。當stop模式期間保持regulator的啓動,儘管這樣子可以減少喚醒時間,但是增加了功耗。

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章