次の方法で共有


HID over SPI のエラー処理

この記事では、HID over SPI のエラー検出と処理手順について説明します。 SPI バスのエラーは、次のカテゴリに分類されます。

  • プロトコル エラー
  • タイムアウト エラー

プロトコル エラー

プロトコル エラーは、さらに特徴付けることで、次のように分類されます。

  • 短いパケット エラー
  • ビット レベル エラー

短いパケット エラー

短いパケット エラーは、ホストまたはデバイスが HID SPI プロトコル要求と長さのフィールドで識別されたビット数を返さない場合に発生します。 ホストは、指定されたビット数で記録することが期待されます。 ホストはバス上にあるものをすべて読み取るため、デバイスがデータの送信を停止したかどうかを知る方法がありません。 ホストは、同期フィールドとその他のフィールドをチェックして、データが妥当かどうかを確認することが期待されます。 予期しないデータまたは無効なデータに対するホストの動作は、デバイスのリセットを開始することです。

ビット レベル エラー

SPI バスでビット レベル エラーが発生する可能性があります。 これらのエラーは、通常、バス上のノイズやシステム内の他のバスからの干渉の結果として発生します。 この仕様では、SPI データ行のビット レベル エラーに対する CRC やその他の検出メカニズムはサポートされていません。

ホスト パーサーは、形式に誤りがあるレポートを特定して破棄することができます。 レポート記述子に準拠していない、形式に誤りがあるレポートを防ぐのは、ホスト HID ドライバー スタックの役割です。 予期しないデータに対するホストの動作は、デバイスのリセットを開始することです。

タイムアウト エラー

HID over SPI プロトコルは、デバイスが適切なタイミングでホスト要求に応答する必要があることを想定してシーケンシャルになっています。 ほとんどの場合、デバイスからホストへの応答はミリ秒単位で完了します。 デバイスがスタックし、自動的に復帰できない場合は、強制的なタイムアウト遅延が発生し、その後ホストがデバイスをリセットして操作を再開することがあります。

TIMEOUT_HostInitiatedReset = 1 second

ホストでは、独自の方法で特定のデバイスに対してこのタイムアウトの値を調整できますが、ホストがタイムアウト値をサポートすることは必須です。

ホストが開始したリセット

ホストは、エラーが検出されたときにデバイスとの通信を再確立するためにデバイスをリセットする場合があります。 このメカニズムはエラー復旧を目的としており、ESD 放電に曝されたデバイスとの通信を再確立するなど、例外的なイベントに反応する必要があります。