STM32(ARM Cortex M3)の未使用ピンのデフォルト設定に関する推奨事項-プルアップ/プルダウン?


13

現在、STM32マイクロコントローラファミリのさまざまなバリアントを使用しています。次のことを知りたい:

1)プルアップまたはプルダウンの両方を選択するオプションがある場合、一般的なマイクロコントローラーのピンの推奨デフォルト設定は何ですか?どちらか一方と一緒に行くことの長所と短所は何ですか?(入力としてデフォルトで設定すると仮定します)

2)特に、STM32マイクロコントローラファミリの未使用ピンをどうするか知りたいです。ピンをフロートさせたままにしないことは明らかです(データシートには、:()と書かれていますが、プルアップで入力するか、プルダウンで入力するように設定する必要がありますか?特に、 ESDの影響を受けにくい設定を選択し、可能な場合は消費電力を最小限に抑えます。

3)クリティカルなピンについては、ファームウェアを使用してピンを正しいデフォルト状態に正しく設定する必要がありますか、それとも外部ハードウェア(外部プルアップまたはプルダウンを接続する)に責任がありますか?外部抵抗に選択された値が内部プルアップまたはプルダウンよりも大きい場合、ファームウェアの設定は重要ではありません。

上記を行うために私が見ることができるプロは、マイクロが何らかの理由(障害のあるハードウェアなど)で適切に初期化されない場合、ピンを正しく設定するためにファームウェアに依存していないということです。

私が見る欠点は、これを行うにはより多くの費用がかかるということです。

上記に当てることができる光は本当にありがたいです。

ありがとう。


未使用のピンを出力として設定しないのはなぜですか?これにより、プルアップとプルダウンの問題が解消されます。
コナーウルフ

注意:「リセットイベントが発生すると、すべてのGPIOはフローティング入力になります。これにより、緊急時にGPIOが偶発的に損傷することを防ぎます。」embedded-lab.com/blog/stm32-gpio-ports-insights
cp.engr

回答:


10

この回答はSTM32固有のものではありませんが、長年の経験とそのような多くの議論に基づいています。他の人がこれに追加することができます-それは主要なポイントをカバーしています(私は思う)が、完全ではないかもしれません。

誰かがこれらのシンプルだが基本的な質問をし、そのような「ささいなこと」が実際の生活の中でどのように「ギャング・アグレ」になるかについての認識を示すのを見るのは勇気づけられます。

すなわち、「マイクロが適切に初期化されない場合...」は実際に「...マイクロが適切に初期化されない場合...」と読みます-そして、あなたがこれを実現することは明らかです。

そう:

  • 外部プルアップまたはプルダウンの使用は、明確に定義された結果を得ることに本当に熱心な人にとって不可欠です。残りはすべてボーナスです。すなわち、内部pullxxxを使用した入力への設定は、ほぼ常に機能する妥協案です。
    ただし、「ほぼ常に」が設計に十分でない場合は、外部プルxxxが必要です。

  • プルアップまたはダウンは、圧倒的な良い結果をもたらさないようです。ICによって異なる場合がありますが、データシートから判断できます。すべての条件が同じである可能性があるため、デバイスの外部電流へのリークが少なくなる可能性があるため、プルダウンをお勧めします-しかし、コンフォーマルにコーティングされたPCBや良性の環境では、これは最小限に抑えられます。

  • あなたが本当に気にするなら、あなたはスタートアップアクションを見たいと思うかもしれません。たとえば、プルアップされたピンは、ある段階でローになり、ハイに遷移します。プルダウンされたピンは、おそらく全体を通して低いままです。これはおそらく重要ではありませんが、完全性のために言及されています。

  • ESD感受性はデバイス固有であり、対称である可能性が非常に高く、非対称の場合、ソースよりもドライバがより沈む傾向があるため、多くのプロセッサで平均してプルダウンが推奨されます。ESDを重視する場合は、プルダウン付きの低出力を使用することをお勧めします。低インピーダンスのパスが(おそらく)より優れたESD保護を提供するからです。ただし、ESDを重視する場合は、主な保護としてIC内保護に依存せずに、他の方法でESDを設計する必要があります。

  • 質問3-外部pullxxxが望ましいが、適切な設計の限界の上限にある値を使用し、必要に応じて内部xxxを並行して使用するのが安全なようです。ただし、内部プルxxxには2:1のReffectiveがある場合が多いため、外部のみを使用することで最大のRと最小の電流を得ることができます。もちろん、避けたいのは外部プルアップと内部プルダウン、またはその逆です。しかし、それが問題になることはまずありません。

  • 「...適切な設計の上限を制限する...」と言うとき、「制限を超えて...」ではなく、まさにそれを意味します。つまり、ピンには指定された抵抗値があり、最悪の場合のVin仕様を満たすことができます。抵抗を大きくすると、抵抗の電流は少なくなりますが、内部スイッチがわずかにオンになり始める場合があります。すなわち、内部ドライバがリーク電流(非常に小さい)を確認し始めると、Rpulldown_currentと最低の全体的な電流のトレードオフがあり、ディレクトリへの電流が増加し、わずかにオンになります。

  • 例えばプルダウンを使用する場合、ピンを出力に設定してローに駆動するために低電力になることがありますが、これはやがて決定できるオプションです。

  • 余談です-動作中のどの段階でも、保護ダイオードが「あらゆる重要な電流」を処理することを許可しないでください。許可すると、まったく説明のつかないプロセッサアクションが発生する可能性があります。電流が少なければ少ないほど、物事が間違ってしまう可能性が低くなります。


1
非常に洞察に満ちた答え。どうもありがとうございました。これについてもう少し詳しく説明できますか?「ESDに注意を払う場合、プルダウン付きの低出力を使用することをお勧めします。低インピーダンスパスは(おそらく)より優れたESD保護を提供します」。出力に設定する場合-デフォルトでオープンドレインまたはプッシュプル(ハイ/ロー)になりますか?
IntelliChick

2

何のために最適化していますか?コスト最適化では、未使用ピンを出力に設定する必要があります。信頼性の最適化により、ファームウェアが未使用のピンを適切と判断する前に短い期間であっても、すべてのピンレベルを定義する必要があります。

かつて、プロセッサボードの信頼性の計算を確認する必要がありました。あらゆる場所にデカップリングキャップを使用し、すべてのI / Oピンに抵抗を接続するように設計されています。信頼性エンジニアはハンドブックを取り出し、関連するすべてのコンポーネントの故障率を追加しましたが、最終的には受動部品の故障率が支配的な数値になりました。その数値は要件を上回っていたため、問題がありました。これらの抵抗を削除すると、図は問題ありません。しかし、その提案で、電気技師は怒りで叫び始めました(当然、IMO)。ストーリーがどのように終わったかは思い出せません。私たちはクライアントに行って、抵抗が有意な電流を流さないという理由で、抵抗の故障率を計算から省くように求めたと思います。


1

I just configure unused pins as outputs and set them low.


would you normally set them to push-pull or open drain? And in both cases would you set them to low? Can you tell me why you would choose one over the other.
IntelliChick

@Leon Heller - that meets the "works usually" test, but fails "when the micrprocessor does not initialise properlY, or when Murphy flips a bit semi randomly, as he occasionally does. Your 'pin set to output & set low' PLUS pulldowns, works .
Russell McMahon
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.