天天看點

stm32 adc輸入電壓範圍_STM32低功耗控制心得體會

1.說明

基于STM32-WiFi智能小車機器人開發實戰_嵌入式-創客學院​www.makeru.com.cn

stm32 adc輸入電壓範圍_STM32低功耗控制心得體會

本文主要叙述在stm32進入stop時如何保持最低功耗的問題,并對部分細節問題進行分析整理。STM32L提供5種低功耗模式:低功耗運作模式、睡眠模式、低功耗睡眠模式、停止模式、待機模式。

待機模式電流最低,但是待機模式時的MCU處于不受控制的狀态,所有的IO口都工作在高阻抗的狀态的下,隻有專門的幾個引腳能夠将MCU喚醒,而每次喚醒後相當于系統複位,RAM中的資料全部丢失,在外部器件連接配接的情況下,器件的引腳可能會吸收大量的電流,反而達不到低功耗的要求。

停止模式的功耗僅次于待機模式,在STOP模式下,PLL,HSL,HSE都被停止,RAM和寄存器的值保留。

2.引腳配置

在stop模式下,由于所有的引腳的狀态都可以保留,是以需要進行适當的引腳配置才能達到效果。在實際的配置過程中,如果在stm32最小系統中,要在stop模式下保持最低功耗,可将所有的GPIO設定成模拟輸入,如果不進行配置,将是預設是浮空輸入,此時stop模式的電流很大。在設定的過程中,有幾個特殊的引腳需要注意。

stm32 adc輸入電壓範圍_STM32低功耗控制心得體會

對于stm32來說,除了PA,PB,PC每個組有16個GPIO之外,還有PD2,PH0, PH1這三個GPIO。不能錯過任何一個引腳的配置,否則功耗會很大。

在所有的引腳配置成GPIO模式後,在stm32最小系統中采用3.3V電壓供電,實測電流為0.75uA。但是如果将全部的引腳都配置成模拟輸入的GPIO後,将不能正常的使用,根據實際使用的情況,預留9個中斷口作為喚醒源。當配置完成之後,可以将電流控制在3.5uA。

降低功耗的控制,主要需要注意的是引腳的上下拉,在有中斷引腳上有外設時,可以将引腳配置成浮空輸入的模式,不需要配置上下拉。而當該引腳上未接任何外設時,一定需要設定内部的上拉或者下拉,這是比較關鍵和重要的。

3.通訊類外設的控制

對于stm32内部的通信類的外設,除了設定GPIO的引腳之外,還需要将内部的uart或者i2c或者spi等通信類裝置關閉。由于目前隻使用了uart,是以在關閉uart可以通過HAL的HAL_UART_MspDeInit(&huart1);函數進行deinit。該函數會關閉中斷,清空内部寄存器,并且設定引腳為GPIO模式。是以可以達到降低功耗的目的。

在測試過程中,也遇到了一個問題,就是喚醒後,序列槽将無法接收和發送資料。剛開始認為休眠時DeInit,喚醒後Init即可,但是還有一個重要的步驟沒有做,就是開啟序列槽的中斷。

HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);HAL_NVIC_EnableIRQ(USART1_IRQn);HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);HAL_NVIC_EnableIRQ(USART2_IRQn);HAL_NVIC_SetPriority(USART3_IRQn, 0, 0);HAL_NVIC_EnableIRQ(USART3_IRQn);

目前三路序列槽采用的是DMA+空閑中斷的方式進行的,是以這裡需要重新開啟中斷才行。

第二個問題就是ADC,當時測試,一采用ADC進行采樣後,下次休眠後電流就很大,實測可達到1.8mA,而不采用ADC進行采樣的情況下隻有38uA。是以ADC也在耗電,ADC不屬于通信類的外設,但是采用了DMA,是以需要關閉掉ADC的中斷即可HAL_ADC_Stop_IT(&hadc);,一般來說,如果不是采用DMA的方式,非通訊類的外設隻需要關掉時鐘即可。__HAL_RCC_ADC1_CLK_DISABLE();

4.特殊引腳的控制

有一個引腳也是需要注意,PH0,該引腳以前是作為外部的32k晶振使用,可用作獨立看門狗的時鐘源,由于該引腳目前作為了GPIO,是以在使用時作為普通的GPIO使用。作為普通的GPIO使用的必要條件是HSE時鐘關閉。但是在測試過程中還是遇到一個問題,該引腳配置成模拟輸入後,stop模式下的電流仍有800uA,後來經過測試,發現是Debug調試器未關,也就是HAL_DBGMCU_DisableDBGSleepMode();函數沒有有調用。是以在測試時電流才有800多uA。

5. 總結

對于降低功耗來說,standy模式功耗最低,但是喚醒源比較少,可以選擇stop模式。由于stop模式的引腳狀态和斷電前保持一緻,是以在進入stop之前需要将不需要控制的引腳設定成模拟輸入。同時中斷引腳設定相應的浮空或者上拉,這時,如果在中斷引腳上未接任何的東西,内部需要上拉或者下拉,這樣才能保證最低功耗。

繼續閱讀