做有低功耗產品設計經驗的朋友都應該知道,一個產品的功耗不光是硬件功耗的事,其實軟件也是影響整個產品功耗的一個關鍵因素。
我之前也開發過幾款使用電池供電的產品,調試起來,那叫一個痛苦,軟件和硬件各種因素都要考慮。
當你確信軟件沒問題了,可能硬件某個地方又存在漏電流,這其中的“痛苦”我也不再這裏描述了。
今天就爲大家分享一點關於STM32在低功耗狀態時,IO引腳常規的配置內容。
嵌入式專欄
1
將未使用的GPIO輸入配置爲模擬輸入
GPIO始終有一個輸入通道,可以是數字或模擬通道。
如果不需要讀取GPIO數據,則優先配置爲模擬輸入。這節省了輸入施密特觸發器的消耗。
在STM32CubeMX配置中都有這麼一個選項:將不用引腳配置爲模擬狀態。
嵌入式專欄
2
調節GPIO速度
上升時間,下降時間和最大頻率可使用GPIOx_OSPEEDR配置寄存器進行配置。
這種調整對EMI(電磁干擾)和SSO(同時開關輸出)有影響,因爲開關電流峯值較高。因此必須平衡GPIO性能與噪聲。
每個GPIO信號的上升時間和下降時間必須適應與相關信號頻率和電路板容性負載兼容的最小值。
嵌入式專欄
3
不使用時禁用GPIO寄存器時鐘
如果某個GPIO組不需要長時間使用,禁用其時鐘。
比如標準外設庫,禁用GPIOA時鐘:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, DISABLE);
HAL庫,禁止GPIOA時鐘:
__HAL_RCC_GPIOA_CLK_DISABLE();
嵌入式專欄
4
進入低功耗模式時配置GPIO
進入低功耗模式時,所有引腳信號必須連接到VDD或接地。
如果GPIO連接到外部接收器(外部元件輸入),則必須使用PP或PU/PD強制GPIO信號值。
當GPIO連接到驅動器(外部元件輸出或總線)時,驅動器必須提供有效電平( VDD或接地)。如果未定義驅動器電平,則必須使用PU/PD強制GPIO上的信號。
出於實際原因,當GPIO是運行模式下的輸入(模擬或數字)時,在低功耗模式下使用輸入PU/PD可能更容易;當GPIO是運行模式下的輸出時,則使用輸出PP。這可以避免在進入或退出停止模式時管理更改。
嵌入式專欄
5
退出關機模式
退出關機(shut down)模式時, GPIO會在上電覆位時重新配置爲默認值。
在將它們重新編程爲正確值之前,這會需要額外的系統消耗。
如果這是應用程序的問題,則必須使用待機(standby)模式替代關機模式。
(僅限STM32L4系列和STM32L4+系列)
(部分內容來自應用筆記:AN4899)
免責聲明:本文系網絡轉載,版權歸原作者所有。如涉及作品版權問題,請與我們聯繫,我們將根據您提供的版權證明材料確認版權並支付稿酬或者刪除內容。