PSoC® 6 でBLE機能が有効な時にコアをディープスリープモードに設定する– KBA223291- Community Translated (JA)

Version 1

    Community Translated by HiOm_1802421           Version: **

     

    Translation - English: Setting Cores to Deep Sleep Mode while BLE Function is Enabled on PSoC® 6 – KBA223291

     

    質問:

    Cy_SysPm_DeepSleep() APIによって開始されたコアがディープスリープモードの時に、BLEスタックがデュアルコアとシングルCM0+に割り当てられている場合で、Arm® Cortex®-M4 と Cortex-M0+ のパフォーマンスはどう違いますか?

     

    回答:

    プロジェクト CE212736 を例として考えます。

     

    オリジナルの設定では、CM4とCM0+の両方にBLEスタックが割り当てられます。

    Cy_SysPm_DeepSleep() APIが呼ばれた時、CM4はBLEの状態が アドバタイズ か 接続済み ならばディープスリープモードに設定され、次のBLEスタックイベントが生成されるまでウェイクアップしません。

     

    CM4を無効にしてシングルCM0+を使うようにプロジェクトを変更した場合は、CM0+のパフォーマンスは同じAPI Cy_SysPm_DeepSleep() を呼び出した時と異なります。

    CM0+はディープスリープモードに入る事も出来ますが、直ぐにウェイクアップすることは出来ません。

    BLEの状態が アドバタイズ の場合、ディープスリープモードタイミングはアドバタイズインターバル周辺です。

    BLEの状態が 接続済み の場合、ディープスリープモードタイミングはコネクションインターバル周辺です。(デフォルトのスレーブレイテンシは0です)

     

    この違いは、CM0+に割り当てられたBLEサブシステム(BLESS)割り込みによるものです。

    BLEサブシステム割り込みはBLEコントローラ部に割り当てられる必要があります。

    BLEスタック全体がCM0+上に置かれている場合、BLESS割り込みはディープスリープから常にCM0+をウェイクアップさせます。

    しかし、BLEコントローラがCM0+上に置かれていて、ホストがCM4上に置かれている場合、CM4は分離されてBLESS割り込みでウェイアップせず、次のBLEスタックイベントが生成されるまでディープスリープのまま維持されます。