STM32低功耗模式下GPIO如何配置最节能?
目錄
1、將未使用的GPIO 配置為模擬輸入模式
2、調(diào)節(jié)GPIO 速度
3、GPIO不使用時(shí)禁用寄存器時(shí)鐘
4、避免懸空未使用的引腳
STM32低功耗模式下GPIO如何配置最節(jié)能,這里總結(jié)了一下四點(diǎn),親測(cè)有效(基于STM32L011芯片 LL庫),可降低幾百微安。
1、將未使用的GPIO 配置為模擬輸入模式
GPIO始終有一個(gè)輸入通道,可以是數(shù)字或模擬通道,如果不需要讀取GPIO數(shù)據(jù),則優(yōu)先配置為模擬輸入。
對(duì) I/O 端口進(jìn)行編程作為模擬配置時(shí):
- 輸出緩沖器被關(guān)閉
- 施密特觸發(fā)器輸入被禁用,因此I/O引腳的每個(gè)模擬值零消耗。施密特觸發(fā)器的輸出被強(qiáng)制為恒定值(0)。
- 上拉和下拉電阻被硬件關(guān)閉
將不常用的GPIO配置為模擬輸出,例程如下所示(LL庫):
GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
2、調(diào)節(jié)GPIO 速度
上升時(shí)間,下降時(shí)間和最大頻率可使用GPIOx_OSPEEDR配置寄存器進(jìn)行配置。這種調(diào)整對(duì)EMI(電磁干擾)和SSO(同時(shí)開關(guān)輸出)有影響,因?yàn)殚_關(guān)電流峰值較高。因此必須平衡GPIO性能與噪聲。通常GPIO配置為低速模式即可,但是高波特率的串口需要配置為高速模式,所以每個(gè)GPIO信號(hào)的上升時(shí)間和下降時(shí)間必須適應(yīng)與相關(guān)信號(hào)頻率和電路板容性負(fù)載兼容的最小值。
將不常用的GPIO配置為低速模式,例程如下所示(LL庫):
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW;
3、GPIO不使用時(shí)禁用寄存器時(shí)鐘
如果某個(gè)GPIO組不需要長(zhǎng)時(shí)間使用,請(qǐng)禁用其時(shí)鐘。
禁用將不常用的GPIO寄存器時(shí)鐘,例程如下所示(LL庫):
LL_IOP_GRP1_DisableClock(LL_IOP_GRP1_PERIPH_GPIOA|LL_IOP_GRP1_PERIPH_GPIOB);
4、避免懸空未使用的引腳
進(jìn)入低功耗模式時(shí),所有引腳信號(hào)必須連接到VDD或接地。
如果GPIO連接到外部接收器(外部元件輸入),則必須使用PP或PU/PD強(qiáng)制GPIO信號(hào)值。
當(dāng)GPIO連接到驅(qū)動(dòng)器(外部元件輸出或總線)時(shí),驅(qū)動(dòng)器必須提供有效電平(VDD 或接地)。如果未定義驅(qū)動(dòng)器電平,則必須使用PU/PD強(qiáng)制GPIO上的信號(hào)。出于實(shí)際原因,當(dāng)GPIO是運(yùn)行模式下的輸入(模擬或數(shù)字)時(shí),在低功耗模式下使用輸入
PU/PD可能更容易;當(dāng)GPIO是運(yùn)行模式下的輸出時(shí),則使用輸出PP。這可以避免在進(jìn)入或退出停止模式時(shí)管理更改。
?將不常用的GPIO配置為高電平,例程如下所示(LL庫):
LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_ALL);LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_ALL);
拓展學(xué)習(xí):嵌入式系統(tǒng)降低功耗的設(shè)計(jì)技術(shù)?
總結(jié)
以上是生活随笔為你收集整理的STM32低功耗模式下GPIO如何配置最节能?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6行Python代码实现进度条效果(Pr
- 下一篇: STM32 GPIO的原理、特性、选型和