2004437_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2004437_ja-JP

2004437_ja-JP

VLSS3からウェイクアップした後、MKL03がクラッシュします。
こんにちはNXPサポート。
 
私はMKL03Z32VFK4R用に作られたアプリケーションをデバッグしています。
システムは3ボルトのバッテリーで駆動され、ほとんどの場合、VLSS3の低消費モードのままです。
このMCU(マイクロコントローラ)ではPTB0であるLLWU_P4ピンは、正のエッジでのウェイクアップとして構成されています。
PTB0にはスイッチが接続されており、押すと正のエッジが発生し、MCUがウェイクアップします。
ウェイクアップ後、いくつかのタスクが実行され、最後にVLLS3モードに戻ります。
 
アプリケーションは正常に動作しますが、断続的にクラッシュすることがあります。
Nordic SemiconductorsのPPK2(Power Profiler Kit 2)を使用していくつかのキャプチャを作成しました。
 
バッテリーの代わりに3ボルト電源として構成されたPPK2を接続しました。
このようにして、バッテリー残量が少なくなる可能性を排除します。
また、PPK2の2つ目のUSBを接続して、最大1000mAの供給容量を保証しました。
また、マイコンからのI/OピンをPPK2のデジタル入力D0に接続しました。
I/Oピンは、実行された各コード行を切り替えるようにプログラムしましたが、最初はどこでスタックしているのかを見つける目的でした。
 
以下に一連の図を示します。
 
図01:PTB0スイッチの連続した押下サイクルを示しています。
 
図02:うまくいったサイクルを詳しく示しています。
 
図03:タイムラインを観察して停止したサイクルを示していますが、この場合は停止するのに5分28秒以上かかりました。
 
図04:クラッシュサイクルを示していますが、MCUは回復しています。
 
図05:ほぼ停止したサイクルの最後の部分をズームで示しています。D0 は、明らかに figure04 と同様に、トゥーグル ダイナミクスを示し始めます。
 
私はいくつかのテストを行い、問題が断続的であることがわかりました。
クラッシュは最初の数サイクルで発生することもあれば、この場合のように5分以上後に発生するように、長い時間がかかることもあります。
私はいくつかの仮説を考えました。
1 - VLLS3 のウェイクアップ後に ACKISO フラグが "クリア" されていない可能性があると思いました。
しかし、MCUはクラッシュし続け、ACKISOの旗を無条件に「クリア」することさえありました。
ACKISOをクリアする行をコメントアウトしたのは、MCUをクラッシュさせることができるかどうかを確認するためだけです。
驚いたことに、MCUはクラッシュせず、まるで違いを生まないように機能しました。
 
2 - 最初に、プログラムはピン LLWU_P4 (PTB0) の正のエッジを検出するように LLWU を構成し、LLWU 割り込みを有効にする関数 "InitLLWU" を呼び出しました。
次に、関数 enter_vlls(3) が呼び出されて VLSS3 モードに入ります。
「enter_vlls(3)」関数の中に「InitLLWU」関数を配置してみましたが、この場合は「InitLLWU」を1行前に置いて__WFI。
クラッシュの原因は、マイコンがVLSS3モードに入る前にLLWUの割り込みが起こったからだと思っていましたが、この変更後もクラッシュが発生しています。
 
3 - 最初は、図03に示されているクラッシュは、MCUがウェイクアップし、再起動によってMCUが破損してクラッシュしたことを示していると思いました。
また、図04や図05のようにクラッシュしたようなケースもありましたが、MCUはなんとか立ち直ることができました。
図 04 の最初の部分ではトグルは発生しませんが、図 05 に示す最後の部分では、トグルのダイナミクスは図 02 と非常によく似ています。
最初は、VLLS3に入る前の設定が不十分であることが問題の原因だと思いました。
サイクルが有効ではなかったにもかかわらず、MCUはなんとか回復したので、パーシャルリセットの失敗か、初期化の失敗など、ウェイクアップ後に問題が発生していると思います。
 
以上が、私がこれまでに導き出したテストと結論でした。
どなたか同様の経験があり、私に何か提案をいただける方がいらっしゃいましたら、ありがたいです。
 
よろしくお願いいたします。
Re:VLSS3からウェイクアップした後、MKL03がクラッシュします。

こんにちはCeleste_Liu、返信が遅れてすみません。

なんとか問題を発見することができました。
この問題は低電力モードに関連していたのではなく、MKL03Z32VFK4Rのピン19に関連していました。
ウェイクアップ後に発生するパーシャルリセットの後、ピン19がデフォルトの構成であるNMI(Non-Maskable Interrupt)機能に戻ることを発見しました。
ピン19をGPIO入力、つまりPTB5として使用して、スイッチの状態を読み取ります。
リセット後、ピンを PTB5 として構成する前に、ノイズによって NMI ハンドラーがアクティブになっていたと思います。
私はNMI関数を使用しないので、デフォルトのNMIハンドラはプロセッサをロックするwhile(1){}ループであることがわかりました。
私は、投稿で見つけたガイダンスに従って、NMIオプションを無効にすることで問題を解決しました https://community.nxp.com/t5/MCUXpresso-General/debug-problem-on-KL03Z8/m-p/949741
私はFlash_Configワード4を0xFFFF3BFEに変更し、問題が解決したことを確認するために多くのテストを行いました。

ご支援いただき、誠にありがとうございます。

Re:VLSS3からウェイクアップした後、MKL03がクラッシュします。

こんにちはCeleste_Liu、フィードバックをいただきありがとうございます。

プロジェクトで CMP コンパレータ モジュールを使用していません。
それでも、ERR008010正誤表は関連性があると思いますか?
とにかく、回避策によって提案されたコードがどのように見えるかを教えてもらえますか?

よろしくお願いいたします。

Tags (1)
No ratings
Version history
Last update:
‎11-21-2025 09:23 PM
Updated by: