- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I'd like to translate KBA210675 into Japanese.
moto
Original KBA: KBA210675
USBFS Suspend and Resume Functionality - KBA210675
Translated by: MoTa_728816
==============================
タイトル: USBFS の サスペンド (Suspend) と レジューム (Resume) 機能 - KBA210675
ヴァージョン:**
質問: USBFS の サスペンド (Suspend) - レジューム (Resume) 機能はどのように実装したら良いでしょうか?
回答:
USB デバイスはバス上に 3 ms 以上動きが無い場合サスペンドに入ります。そしてさらに 7 ms 後には指定されたサスペンド電流以上の消費を抑えるためにシャットダウンします。これはバスの動きが停止してから 10 ms 以降、デバイスは規定されたサスペンド電流のみを消費するようにしなければならないということです。以下のコードは USBFS のサスペンド - レジューム機能の実装方法を示します。
if(!USBFS_CheckActivity())
{
noActivityCount++;
if(noActivityCount == USB_SUSPEND_TIME_TICKS)
{
PSOC_APP_LED_Write(1); // デバイスがサスペンドに入ったかを確認する。
USBFS_Suspend();
CyPmSaveClocks();
CyPmSleep(PM_SLEEP_TIME_NONE, PM_SLEEP_SRC_PICU); /* PSoC 3/5LP はスリープモードに入る */
CyPmRestoreClocks();
USBFS_Resume();
init =1; // エンドポイントの再度初期化 - 注意 1。
noActivityCount = 0;
PSOC_APP_LED_Write(0); // LED で状態を確認する。
}
}
else
{
noActivityCount = 0;
}
注意 1: ウェイクアップ後、エンドポイントを再度有効にする必要があります;もし Mode 3/2 に入ってた場合、DMAの再設定も必要となります。
注意 2: コードスニペットでは USBFS コンポーネントは “USBFS” という名称であることを仮定しています。
以下はアルゴリズム:
ファームウェアは USB の動作の状態をチェックします;もし 3 ms 間動作が無かったら、サスペンドが発生したことが分かります。ファームウェアが最低 3 ms の間待つように、USB_SUSPEND_TIME_TICKS の値を適切に保ちます。その後、ファームウェアは省電力スリープモードに入ります。レジュームが発生すると、ポートインタラプトコントロールユニット (PICU) の割込みによりウェイクアップして、USBFS コンポーネントの再設定とエンドポイントの再度初期化を行います (init 変数の状態を確認してファームウェアの中で行われます)。
==============================
12-May-2020
moto