Project

General

Profile

Actions

LarningGpio

GPIOのことが分かっていなかったのでお勉強です。

  • 参考
    • AN4899 STM32 GPIO configuration for hardware settings and low-power consumption
    • RM0090 Reference manual (STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439)

CubeMxで何も設定せず放置したピンはどうなるのか?

RM0090のTable35でMODERが00だとInputであり、Table39のGPIO register mapのreset valuesでMODERのリセット値が(ほぼすべてのピンにおいて)00です。
つまりは、Push-PullのDigital Inputになっています。

ピンに何かを接続しても相手には(負荷容量が大きくなることを除いて)影響はありませんが、何にも接続していない場合はノイズを拾ってマイコン内部の入力回路がHigh-Lowをバタバタして無駄に電気を食いそうです。Digital Inputはシュミットトリガ入力になっているので貫通電流は流れないと思いますが。

AN4899の 6.1 Configure unused GPIO input as analog input には、「GPIOは常に入力チャネルを持っているから、使う気がないならアナログ入力に設定しとけ」 とありますが、NUCLEOボードなどでピンに何もつなげていない場合はPush-Pullのプルダウン付きのほうが良いのでは。

そう考えると、CubeMXのProject Manager-Code Generator-Set all free pins as analog は「ソフトウェア上で未使用のピンという意味でfreeだけれど、基板上でGNDまたはVCCなどに接続されている必要があって、野放しのピンだとかえってキケン」 な気がします。

逆効果?

CubeMX上でDigital Inputかつプルダウンに設定すると、CubeMXはその初期化コードを吐くので当然そのGPIOxにクロックを供給します。
「ピン設定はするけれど使うつもりはない」をCubeMXに教える方法はないので、消費電流を減らすには自分でHAL_RCC_GPIOx_CLK_DISABLE()を呼び出すしかなさそうです。

まず測定環境

低消費電力化しようと思ったら、いじり始める前にまずは電流測定ができる環境を用意しないとダメそう。


累計表示回数:30

Updated by mole lord about 1 month ago · 1 revisions