www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號精選 > 嵌入式IoT

1.說明

本文主要敘述在stm32進(jìn)入stop時(shí)如何保持最低功耗的問題,并對部分細(xì)節(jié)問題進(jìn)行分析整理。STM32L提供5種低功耗模式:低功耗運(yùn)行模式、睡眠模式、低功耗睡眠模式、停止模式、待機(jī)模式。

待機(jī)模式電流最低,但是待機(jī)模式時(shí)的MCU處于不受控制的狀態(tài),所有的IO口都工作在高阻抗的狀態(tài)的下,只有專門的幾個(gè)引腳能夠?qū)CU喚醒,而每次喚醒后相當(dāng)于系統(tǒng)復(fù)位,RAM中的數(shù)據(jù)全部丟失,在外部器件連接的情況下,器件的引腳可能會吸收大量的電流,反而達(dá)不到低功耗的要求。

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

2.引腳配置

在stop模式下,由于所有的引腳的狀態(tài)都可以保留,所以需要進(jìn)行適當(dāng)?shù)囊_配置才能達(dá)到效果。在實(shí)際的配置過程中,如果在stm32最小系統(tǒng)中,要在stop模式下保持最低功耗,可將所有的GPIO設(shè)置成模擬輸入,如果不進(jìn)行配置,將是默認(rèn)是浮空輸入,此時(shí)stop模式的電流很大。在設(shè)置的過程中,有幾個(gè)特殊的引腳需要注意。

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

在所有的引腳配置成GPIO模式后,在stm32最小系統(tǒng)中采用3.3V電壓供電,實(shí)測電流為0.75uA。但是如果將全部的引腳都配置成模擬輸入的GPIO后,將不能正常的使用,根據(jù)實(shí)際使用的情況,預(yù)留9個(gè)中斷口作為喚醒源。當(dāng)配置完成之后,可以將電流控制在3.5uA。

降低功耗的控制,主要需要注意的是引腳的上下拉,在有中斷引腳上有外設(shè)時(shí),可以將引腳配置成浮空輸入的模式,不需要配置上下拉。而當(dāng)該引腳上未接任何外設(shè)時(shí),一定需要設(shè)置內(nèi)部的上拉或者下拉,這是比較關(guān)鍵和重要的。

3.通訊類外設(shè)的控制

對于stm32內(nèi)部的通信類的外設(shè),除了設(shè)置GPIO的引腳之外,還需要將內(nèi)部的uart或者i2c或者spi等通信類設(shè)備關(guān)閉。由于目前只使用了uart,所以在關(guān)閉uart可以通過HAL的HAL_UART_MspDeInit(&huart1);函數(shù)進(jìn)行deinit。該函數(shù)會關(guān)閉中斷,清空內(nèi)部寄存器,并且設(shè)置引腳為GPIO模式。所以可以達(dá)到降低功耗的目的。

在測試過程中,也遇到了一個(gè)問題,就是喚醒后,串口將無法接收和發(fā)送數(shù)據(jù)。剛開始認(rèn)為休眠時(shí)DeInit,喚醒后Init即可,但是還有一個(gè)重要的步驟沒有做,就是開啟串口的中斷。

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+空閑中斷的方式進(jìn)行的,所以這里需要重新開啟中斷才行。

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

4.特殊引腳的控制

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

5. 總結(jié)

對于降低功耗來說,standy模式功耗最低,但是喚醒源比較少,可以選擇stop模式。由于stop模式的引腳狀態(tài)和斷電前保持一致,所以在進(jìn)入stop之前需要將不需要控制的引腳設(shè)置成模擬輸入。同時(shí)中斷引腳設(shè)置相應(yīng)的浮空或者上拉,這時(shí),如果在中斷引腳上未接任何的東西,內(nèi)部需要上拉或者下拉,這樣才能保證最低功耗。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
關(guān)閉