こんにちは、
MCU - MKM34/35Z - SDKベースのアプリケーション
SDK: SDK_2.x_TWR_KM35Z75Mバージョン2000年6月25日
IDE: MCUXpresso IDE v25.6
アプリケーション: MCU は常に VLLS2 スリープ モードにあり、1 つの GPIO ピン (PTG6_LLWU0) と Tamper0 ピン (IRTC Tamper) がウェイクアップ ソースとして構成されます。どちらかのピンに割り込みが発生すると、システムが起動します。
GPIO ピンは期待どおりに動作し、システムを VLLS2 から正常に起動します。ただし、タンパー ピンはリファレンス アプリケーションに従って正確に構成されているにもかかわらず、システムを起動しません。
関連するコード スニペットを参考のために共有しますので、問題の特定にご協力いただければ幸いです。
void RTC_TamperInit(void)
{
CLOCK_EnableClock(kCLOCK_Rtcreg);
CLOCK_EnableClock(kCLOCK_Rtc0);
IRTC_GetDefaultConfig(&irtcConfig);
irtcConfig.timerStdMask= 真;
irtcConfig.wakeupSelect= 真;
if (IRTC_Init(RTC, &irtcConfig) == kStatus_Fail)
{
戻る;
}
IRTC_SetOscCapLoad(RTC, kIRTC_Capacitor2p|kIRTC_Capacitor4p|kIRTC_Capacitor16p);
tamper0Config.filterClk = kIRTC_4;
tamper0Config.filterDuration= 2;
tamper0Config.pinPolarity = true;/*trueはアクティブ*/
IRTC_SetTamperParams(RTC、kIRTC_Tamper_0、&tamper0Config);
/* ロックの改ざん設定 */
IRTC_SetTamperConfigurationOver(RTC);
/* RTCをLLWUウェイクソースとして有効にする */
LLWU_EnableInternalModuleInterruptWakup(LLWU, LLWU_IRTC_IDX, true);
/* 古いフラグをクリアする */
IRTC_ClearStatusFlags(RTC、0xFFFFFFFF);
IRTC_ClearTamperStatusFlag(RTC);
}
void LLWU_Init(void)
{
//GPIO PTG6
LLWU_SetExternalWakeupPinMode(LLWU、LLWU_WAKEUP_PIN_IDX、LLWU_WAKEUP_PIN_TYPE);
LLWU_ClearExternalWakeupPinFlag(LLWU、LLWU_WAKEUP_PIN_IDX);
//IRTC タンパー0
LLWU_EnableInternalModuleInterruptWakup(LLWU, LLWU_IRTC_IDX, true);
}
ご協力ありがとうございます!
@erin77brownさん、素早い返信ありがとうございます。
申し訳ありませんが、先ほどこのことについて言及し忘れました。また、割り込みを有効にするために、
IRTC_EnableInterrupts(RTC, kIRTC_TamperInterruptEnable);または RTC->IER |= RTC_IER_TAMPER_IE_MASK; ですが、残念ながら役に立たず、タンパー ピンはシステムを起動しません。
すべてのフラグをクリアした後、関数 IRTC_SetTamperConfigurationOver(RTC); を呼び出す必要があるかどうかを確認してください。すでに IRTC_SetWriteProtection() を使用して RTC をロックおよびロック解除しているので、正しい使用方法とシーケンスを理解したいと思います。サンプルコードがあれば、ぜひ共有してください。大変助かります。
よろしくお願いいたします。
こんにちは、
LLWU が設定されているにもかかわらず、IRTC タンパー割り込みがペリフェラルレベルで有効になっていない可能性があるため、タンパー ピンが MCU を起動できないようです。irtcConfig.wakeupSelect = true はロジックを準備しますが、イベント情報が伝播できるようにするには IRTC_EnableTamperInterrupt(RTC, kIRTC_Tamper0InterruptEnable) を明示的に呼び出す必要があります。さらに、IRTC 制御レジスタで Tamper 0 ピンがマスクされていないことを確認し、すべてのフラグがクリアされる前に IRTC_SetTamperConfigurationOver (Lock) が呼び出されていないことを確認してください。これにより、後続の状態変更によって LLWU へのウェイクアップ信号がトリガーされなくなる場合があります。
こんにちは@Bhagavan
BR
アリス
こんにちは@Bhagavan
こんにちは、
SDK の例では、IRTC 内部 (LLWU) モジュール ウェイクアップに問題があるようです。
MKM3x シリーズのリファレンス マニュアルに記載されているように、iRTC タンパー (LLWU_M3IF) および iRTC アラーム (LLWU_M1IF) ウェイクアップ ソースを使用しようとしましたが、効果はありませんでした。
この問題に直面した方がいらっしゃいましたら、解決策を共有したり、例を挙げていただいたりできますか?
ご協力ありがとうございます!