現在、s32k344を動作モードからスタンバイモードに移行させようとしています。私の考えでは、プログラムがUART0(PTA2をRX、PTA3をTXとして使用)を介して0x11を受信したときに、実行モードからスタンバイモードに切り替えることができるようにすべきです。次に、ウェイクアップソースを立ち上がりエッジ検出付きのPTA2に設定します。現在の問題は、最初に0x11を送信したときに、確かにスタンバイモードに入ってしまうことです。しかし、例えば 0x11 を送信して起動しようとすると、スタンバイ モードから実行モードへの切り替えに失敗します。BOARD_BootClockRun と BOARD_BootClockStandby という 2 つのクロックを作成しました。設定エラーの原因が電源モジュール、起動モジュール、クロックモジュールのどれにあるのか分かりません。以下にコードのzipファイルを添付しました。使用されているコンパイラはs32sd3.4です。RTDはSW32K3_RTD_4.4_2.0.1_DS_updatesite_D2207です。どなたかこの質問に答えていただけると幸いです。ありがとうございます #s32k344#s32kxx
こんにちは、Julián_AragónMさん、ご返信ありがとうございます。実は、私はこのPower_Ip_Init API関数についてコメントしたことは一度もありませんでした。しかし、コメントアウトを解除した後、デバッグを使用して Power_Ip_Init にブレークポイントを設定して実行をクリックすると、s32ds3.4 に次のエラーが表示されました。ターミナルで、Power_Ip_Init プログラムをコメントアウトすると正常に動作しますが、コメントアウトを解除すると、必ずこの箇所でエラーが発生します。
エラー: CPUが停止していません
エラー: CPU が動作中はレジスタ 15 (R15) を読み取ることができません。共通レジスタの読み取り:
エラー: CPU 実行中にレジスタ 0 (R0) を読み取ることができません。ハードウェアからレジスタ 'r0' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 1 (R1) を読み取ることができません。ハードウェアからレジスタ 'r1' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 2 (R2) を読み取ることができません。ハードウェアからレジスタ 'r2' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 3 (R3) を読み取ることができません。ハードウェアからレジスタ 'r3' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 4 (R4) を読み取ることができません。ハードウェアからレジスタ 'r4' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 5 (R5) を読み取ることができません。ハードウェアからレジスタ 'r5' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 6 (R6) を読み取ることができません。ハードウェアからレジスタ 'r6' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 7 (R7) を読み取ることができません。ハードウェアからレジスタ 'r7' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 8 (R8) を読み取ることができません。ハードウェアからレジスタ 'r8' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 9 (R9) を読み取ることができません。ハードウェアからレジスタ 'r9' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 10 (R10) を読み取ることができません。ハードウェアからレジスタ 'r10' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 11 (R11) を読み取ることができません。ハードウェアからレジスタ 'r11' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 12 (R12) を読み取ることができません。ハードウェアからレジスタ 'r12' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 13 (R13) を読み取ることができません。ハードウェアからレジスタ 'sp' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 14 (R14) を読み取ることができません。ハードウェアからレジスタ 'lr' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 15 (R15) を読み取ることができません。ハードウェアからレジスタ 'pc' を読み取っています = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 16 (XPSR) を読み取ることができません。ハードウェアからレジスタ 'xpsr' を読み取っています = 0xDEADBEEF。アドレス 0x00401602、サイズ = 2 のブレークポイントを削除しています。
警告:CPUを停止できませんでした
警告:CPUを停止できませんでした
エラー: CPU が動作中はレジスタ 13 (R13) を読み取ることができません
CPUが動作中はレジスタ4(R4)を読み取ることができません
CPUが動作中はレジスタ14(R14)を読み取ることができません
CPUコアを起動できませんでした。(エラーコード: -1) アドレス 0x0040160C、サイズ = 2 のブレークポイントを削除しています
ブレークポイント (アドレス 0x00401632、サイズ = 2) を削除しています。ブレークポイント (アドレス 0x00401642、サイズ = 2) を削除しています。
ブレークポイント (アドレス 0x0040166E、サイズ = 2) を削除しています。ブレークポイント (アドレス 0x00401680、サイズ = 2) を削除しています。
ブレークポイント@アドレス0x004016C2、サイズ=2を削除しています
ブレークポイント@アドレス0x004086F8、サイズ=2を削除しています
警告: アドレス 0xDEADBEEE のメモリの読み取りに失敗しました
警告: アドレス 0xDEADBEEE のメモリの読み取りに失敗しました エラー:
CPUが動作中はレジスタ17(MSP)を読み取ることができません。レジスタ「msp」の読み取り = 0xDEADBEEF
エラー: CPU 実行中にレジスタ 18 (PSP) を読み取ることができません。レジスタ 'psp' の読み取り = 0xDEADBEEF
警告: アドレス 0xDEADBEEE のメモリの読み取りに失敗しました
こんにちは 、
これは、この別のコミュニティ投稿と同じ問題であることがわかります。 「s32k344 で実行モードからスタンバイモードに移行する際の問題を解決するのを手伝ってください。」
混乱を避けるため、このThreadを通してあなたをサポートしていきます。
あなたのコードを見ると、Power_Ip_Init APIがコメントアウトされているようです。コメントを解除して、電源モジュールを初期化してください。また、意図しないスリープ解除を防ぐために、Power_Ip_GetResetReason を追加してください。PTA2に電圧を供給するだけであなたのコードをテストしたところ、期待どおりに起動することがわかりました。
/* Init MCU MC_RGM part of the registers, Init Power Management Controller and Disable the padkeeping */
Power_Ip_Init(&Power_Ip_HwIPsConfigPB);
/* Clear RDSS to prevent automatic wake up after setting RDSS during standby */
Power_Ip_GetResetReason();
/* Set power to run mode which include enable last mile regulator and other PMC configuration */
Power_Ip_SetMode(&Power_Ip_aModeConfigPB[0]);
最後に、 S32K3 パワーマネージメント AN(アプリケーションノート)およびコミュニティからのデモをご参照ください。
よろしくお願いします、
ジュリアン
これが私のプログラムです
こんにちは 、
LMENとLMBCTLENの設定によっては、ハードウェアの設定も必要になります。S32K3X4EVB-T172を使用している場合は、 J31を確認してください。1-2はFS26 VCoreを設定し、 2-3はバラストトランジスタを設定します。以下のコミュニティ投稿に、さらに詳しい情報が掲載されています。
この行に関しては:
「Power_Ip_GetResetReason() の結果は、シリアルポートデバッグアシスタントから送信される AA であり、これは次のコード行に対応します: Lpuart_Uart_Ip_SyncSend(LPUART_UART_IP_INSTANCE_USING_0,&TxMsg,1,65535);」
よく理解できていないかもしれません。具体的に何が問題なのですか?Power_Ip_Init() とウェイクアップ機能を追加するだけで、あなたのプロジェクトが正しく動作するかどうかをテストしました。
よろしくお願いします、
ジュリアン
こんにちは、 @ssslz さん、
先ほど申し上げたように、EVBのJ31を確認されましたか?(S32K3X4EVBを使用していると仮定します)。ラストマイルレギュレータの設定に応じて、J31を1-2または2-3に設定する必要があります。
よろしくお願いします、
ジュリアン
こんにちは、ジュリアン
ご返信ありがとうございます。これは私のハードウェア設定の問題のようです。私はこのS32K344開発ボードをオンラインストアで購入しました。あなたの開発ボードで私のコードが正常に動作するとおっしゃったので、コードは正しいと思います。ご回答いただいた件についてですが、S32Kシリーズのマイクロコントローラに触れたのはまだ10日ほどなので、正直なところ、知識が不足しています。NXPシリーズのマイクロコントローラについて十分な時間をかけて学習すれば、あなたのソリューションを理解できると信じています。下の写真は、私が作成したシングルチップマイクロコンピュータの写真です。
よろしくお願いします、
ssslz