2 Replies Latest reply on May 8, 2020 12:14 AM by JuyoungJ_06

    Community Translation - Wake Up PSoC 6 MCU Device from Deep Sleep Through EZI2C Slave Address Match – KBA227480

    MoTa_728816

      Hi,

       

      I'd like to translate KBA227480 into Japanese.

       

      moto

       

      Original KBA: KBA227480

      Wake Up PSoC 6 MCU Device from Deep Sleep Through EZI2C Slave Address Match – KBA227480

      Translated by: MoTa_728816

      =============================

      タイトル: PSoC 6 MCU デバイスを EZI2C スレーブアドレスマッチでディープスリープから復帰する - KBA227480

       

      SCB_EZI2C_PDL コンポーネントはスレーブアドレスマッチでデバイスをディープスリープからウェイクアップ(復帰)させることが可能です。この機能を有効にするためには Enable Wakeup from Deep Sleep Mode パラメータを有効にしてください。図1 は PSoC Creator 4.2 のコンフィグレーション設定です。図 2は ModusToolbox 2.1 のデバイスコンフィグレータ設定です。

       

      図 1. PSoC Creator 4.2 コンフィグレーション設定

      001-pastedImage_4.png

      図 2. ModusToolbox デバイスコンフィグレータ設定

      ModusToolbox_2_1_Device_Configurator_2_1.JPG

      注意:内蔵されている SCB の内ディープスリープに対応しているものは1つだけです。 PSoC 6 データシートの Pinouts section: Multiple alternate function table をご参照ください、SCB のディープスリープ機能は DS (ディープスリープ) カラムに記載されています。

       

      ディープスリープに入る前に、 下記の手順で cy_syspm ドライバを使用して ディープスリープコールバック関数を登録してください。

       

      1. 下記のデータフィールドをもつ cy_stc_syspm_callback_params_t ストラクチャリファレンスを定義してください。

      • void* cy_stc_syspm_callback_params_t::baseBase → ハードウェアインスタンスのアドレス、 APIベースアドレスにドライバ名が一致するもの。

       

      • void* cy_stc_syspm_callback_params_t::context → コールバックがコンテクストを必要とする場合、ハンドラ関数へのコンテクスト。もしくは、この項目は NULL と定義される。

       

       

      2. 下記のデータフィールドをもつ cy_stc_syspm_callback_t ストラクチャリファレンスを定義してください。

      • Cy_SysPmCallback cy_stc_syspm_callback_t::callback → コールバックハンドラ関数 (Cy_SCB_EZI2C_DeepSleepCallback)

       

      • cy_en_syspm_callback_type_t cy_stc_syspm_callback_t::type → Deep Sleep enum コールバックタイプ (Cy_SYSPM_DEEPSLEEP)

       

      • uint32_t cy_stc_syspm_callback_t::skipMod →  コールバック実行中にスキップされるモードのマスク

       

      • cy_stc_syspm_callback_params_t* cy_stc_syspm_callback_t::callbackParams → cy_stc_syspm_callback_params_t のアドレス;コールバックはこれらの引数を使用して実行されます。

       

      • struct cy_stc_syspm_callback* cy_stc_syspm_callback_t::prevItm 一つ前の項目。この項目は NULL と定義されます。

       

      • struct cy_stc_syspm_callback* cy_stc_syspm_callback_t::nextItm → 一つ後の項目。この項目は NULL と定義されます。

       

      3. Cy_SysPm_RegisterCallback (cy_stc_syspm_callback_t * handler) を使用してコールバックを登録します。

       

      4. ディープスリープに入るのに Cy_SysPm_CpuEnterDeepSleep (CY_SYSPM_WAIT_FOR_INTERRUPT) を使用します。PSoC 6 は EZI2C のアドレスマッチが発生するとウェイクアップ (復帰) します。

       

      ストラクチャと API の詳細については PDL のドキュメントを参照してください。

       

      コードスニペット:

      cy_stc_syspm_callback_params_t Cy_SCB_EZI2C_DeepSleepCallback_param =

         {

              sEzI2C_HW,

              NULL

         };

       

      cy_stc_syspm_callback_t Cy_SCB_EZI2C_DeepSleepCallback_elements =

         {

      &Cy_SCB_EZI2C_DeepSleepCallback,

             CY_SYSPM_DEEPSLEEP,

             0U,

      &Cy_SCB_EZI2C_DeepSleepCallback_param,

             NULL,

             NULL

         };

       

       

      int main(void)

      {

         if (true != Cy_SysPm_RegisterCallback(&Cy_SCB_EZI2C_DeepSleepCallback_elements))

             {

              /* エラー処理を記述する */

             }

       

         if (CY_SYSPM_SUCCESS != Cy_SysPm_CpuEnterDeepSleep(CY_SYSPM_WAIT_FOR_INTERRUPT))

             {       

              /* エラー処理を記述する */

             }

      }

      =============================

       

      13-Apr-2020

      moto