STM32 CPUがウェイクアップする原因となった瞬間的なスイッチを検出する


10

編集:この質問は間違っています。stm325105には、ウェイクアップピンが1つしかありません。しかし、他のSTパーツには複数のウェイクアップピンがあるため、指定された回答はそれらに対して有効です。


ウェイクアップ入力に接続された2つの一時的なボタンを持つstm32f105があります。プロセッサがスタンバイモードになります。ボタンのいずれかが押されるか、RTCタイマーが起動すると、CPUが起動します。

問題は、どのウェイクアップ入力がトリガーされたかに応じて、cpuにさまざまな処理を実行させたいことです。よると、5.3.5からST stm32f105xxリファレンスマニュアル、何のレジスタは、我々が覚めてきたことを示すステータス・レジスタを除いて保存されていません(ただし、誰による)と42個のバックアップレジスタ。

スタンバイモードでは、消費電力を最小限に抑えることができます。これは、電圧レギュレータが無効になっているCortex®-M3ディープスリープモードに基づいています。その結果、1.8 Vドメインの電源がオフになります。PLL、HSI発振器、HSE発振器もオフになります。SRAMとレジスタの内容は、バックアップドメインのレジスタとスタンバイ回路を除いて失われます。

スタンバイモードからウェイクアップした後、プログラムの実行はリセット後と同じ方法で再開します(ブートピンのサンプリング、ベクトルリセットのフェッチなど)。電力制御/ステータスレジスタ(PWR_CSR)のSBFステータスフラグは、MCUがスタンバイモードであることを示します。

このSTフォーラムの投稿、「スタンバイからのウェイクアップの起源を特定する方法」、ソフトウェアでトリガーされたウェイクアップを検出できないことを示唆しています。私はそれ以上の啓蒙を与える他の投稿をそこで見つけませんでした。

ソフトウェアまたはハードウェアを使用して、ウェイクアップした後、どのウェイクアップ入力がトリガーされたかを判断するにはどうすればよいですか?


1
ボタンに上限を設定し、それを読んでください
PlasmaHH

1
いくつかのSTM32F105バリアントを検索したところ、ウェイクアップピンは1つしかありません。正確にはどの部分を意味し、どのピンを意味しますか?
berendi-2017年

@berendi STM32F105には、ウェイクアップピンが1つしかありません。質問で述べたように、スタンバイモードではなく、ストップモードで構成されています。それは目を覚ますためにEXTIイベントを使用します。それらの「EXTIイベント」の意味と「ウェイクアップピン」を混同していた。しかし、スタンバイモードで「RTCによって起こされた」と「ウェイクアップピンによって起こされた」を区別する必要がある場合は、Olinによって提供された回答が依然として役立つと思います。この質問を編集してオリンズの回答と一致させる方法についての提案はありますか?何が悪いのかを説明する最初の小さなメモ?全体の再編集?または、質問全体を削除する必要がありますか?
DanielNäslund2017年

1
F0、F3、L0、またはL1のような複数のウェイクアップピンを備えたSTコントローラーがあります。これらのコントローラーには、ウェイクアップ入力フラグが1つしかないため、スタンバイからの復帰後にソースを実際に判別できません。STはこのウェイクアップを、ウェイクアップ入力ごとに別々のフラグを持つ最新のF7およびL4シリーズで最初に修正しました。
berendi-2017年

回答:


11

このSTパートの詳細がわからないので、説明は正しいと思います。

どちらかのボタンを押すと、プロセッサはすぐに起動します。内部RC発振器がある場合、これは特に当てはまります。精度上の理由で最終的にクリスタルから実行する必要がある場合でも、内部RCからパーツを開始して、後でクリスタルに切り替えることができます。そのようなことができるマイクロがありますが、あなたのマイクロかどうかはわかりません。

いずれの場合も、ウェイクアップ後できるだけ早く両方の入力を読み取ります。このSTマイクロに何か異常がある場合を除き、ボタンを押してから数ミリ秒から数十ミリ秒でなければなりません。

ラインがまだ低いことを保証するには、コンデンサを使用して、ボタンを離してから最大100 msの間ラインを低く保ちます。

たとえば、保証されたロジックLow入力レベルが電源電圧の20%であるとします。ラインは抵抗でプルアップされ、グランドへのコンデンサがあります。ボタンはラインをアースに短絡します。したがって、ラインは高く浮き、ボタンが押されるとアクティブに強制的に接地されます。ボタンを離すと、電圧は電源に向かって指数関数的に減衰します。

最終値の20%まで減衰は、0.22の時定数で発生します。ボタンを押した後、100 msの間ラインが低く見えることを保証したいとします。つまり、RC時定数は450 msでなければなりません。100kΩプルアップでは、静電容量は4.5 µFである必要があります。したがって、4.7 µFの10 Vコンデンサで十分です。

要約すると、ここに回路があります:


1
STM32は立上りエッジでウェイクアップします。また、それらは常に内部クロックで開始し、外部クリスタルおよびPLLへの切り替えはソフトウェアによって行われます。問題は、CubeMXツールによって提供または生成された起動コードにあり、クロックツリーのセットアップ前にユーザーコードを実行することが多少難しくなります。
berendi-2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.