uCがリセットされるとLEDが薄暗く点灯する

Aug 19 2020

STM32G431CBT6を搭載したPCBを設計しました。図のように接続された2つのLED、赤と緑のLEDもあります。

初めて電源を入れたとき(つまり、uCにはまだプログラムがありません)、赤いLEDが薄暗く点灯していました。uCにLEDウインカープログラムをロードした後、それは正常に動作します(完全な明るさで)が、リセットボタンを押すと、赤いLEDが再び薄暗く点灯し、R1の両端の電圧は120mVです。そのため、何らかの理由で120uAが流れています。他のLEDはこれを行わず、R2の両端の電圧は0です。

データシートを見ると、PB4(60ページ)に関するこのメモしか見つかりませんでした。

「リセット後、これらのピンはJTAG / SWデバッグ代替機能として構成され、PA15、PA13、PB4ピンの内部プルアップとPA14ピンの内部プルダウンがアクティブになります。」

しかし、PB4にプルアップがある場合でも、LEDはオンになってはいけません。それでは、この動作の原因は何でしょうか。


編集:

プロジェクトをしばらく脇に置いた後、今はそれをしていませんが、何が変わったのかわかりません。私は(ST-Linkユーティリティを使用して)オプションバイトのブート設定をいじくり回していただけでしたが、それはUCPDプルダウンとは何の関係もないと思います。

ちなみに、プルダウンを無効にするためのデフォルト設定を見つけました:(
はい、設定では「プルアップ」と呼ばれていますが、間違いのようです)

チェックすると(デフォルト)、

HAL_PWREx_DisableUCPDDeadBattery();

HAL_MspInit関数への関数呼び出し。

チェックを外すと、リセット後もLEDが暗く点灯していたため、元の質問に対する回答が受け入れられたことを確認しました。二度と薄暗い照明をし始めるまで。

概要:

  1. 元々、LEDはリセット時にのみ薄暗く点灯していました。
  2. これは、UCPDプルダウンがデフォルトでチェックされている「非アクティブなUCPDの電力を節約する-非アクティブなデッドバッテリープルアップ」チェックボックスによって無効にされたためです。チェックを外し、LEDのGPIOピンを構成しないことでこれを確認できました。その結果、リセット後も照明が暗くなりました。
  3. チェックボックスに関係なく、またはリセットされているかどうかに関係なく、何かが発生しましたが、今ではそれが実行されません。何らかの理由でプルダウンが壊れたのではないでしょうか。GPIOピン自体が機能していることだけを知っています。プログラムするとLEDを適切に駆動できます。

回答

11 Justme Aug 19 2020 at 15:24

この特定のMCUシリーズはUSB-CコネクタのCCピンの1つにPB4を使用しているとリファレンスマニュアルに記載されています。これは、ピンがリセット時にデフォルトでオンになっている内部5.1kプルダウン機能をサポートしていることを意味します。そうしないと、ブートローダーを使用してUSB-Cコネクタ経由でファームウェアをダウンロードできない場合があります。したがって、JTAGを使用する必要がある場合は、プルダウンを無効にすることができます。したがって、LEDにも影響します。

KyleB Aug 19 2020 at 14:55

動作の原因はどこかの間違いです。あなたが思っているピンに実際に接続されていないか(最もベテランのエンジニアでさえこれを行うことができます)、またはマニュアルに誤りがあります。あなたが正しい。それらをぼんやりと照らすことができる唯一の方法は、プルダウンがある場合です。

時々、答えはマニュアルの奥深くに埋もれています。

それがあなたを悩ませているなら、それに強いプルアップを置いてください。

citizen Aug 19 2020 at 15:43

GNDへのデフォルトのプルダウンによってアクティブ化されている場合(このピンが初期化時にプルダウンを備えている場合は、マイクロプロセッサのデータシートに記載されているはずです)、はい、LEDを介して電流を排出します。通常、コードはデュアル機能ピンを正しい状態に初期化したり、不要なプルダウン/プルアップを削除したりします。しかし、あなたの場合、あなたはコードがないと言います。正しく記述された初期化コードを使用すると、LEDは正しい起動状態(おそらくデフォルトでオフ)に初期化されます。スリープ状態を失っている場合は、強力なプルアップを追加するか、ボードの電源を入れてコードを実行したらすぐにコードが実行されていることを確認することをお勧めします。