Freigeben über


Fehlerbehandlung für HID über SPI

In diesem Artikel werden Fehlererkennungs- und Behandlungsverfahren für HID über SPI behandelt. Fehler auf dem SPI-Bus werden in die folgenden Kategorien unterteilt:

  • Protokollfehler
  • Timeoutfehler

Protokollfehler

Protokollfehler werden in den folgenden Klassifizierungen weiter beschrieben:

  • Fehler bei kurzen Paketen
  • Fehler auf Bitebene

Fehler bei kurzen Paketen

Kurze Paketfehler treten auf, wenn der Host oder das Gerät nicht die Anzahl der Bits zurückgibt, die in der Anforderung und Länge des HID-SPI-Protokolls angegeben sind. Es wird erwartet, dass der Host in der angegebenen Anzahl von Bits taktet. Der Host hat keine Möglichkeit, zu wissen, ob das Gerät das Senden von Daten beendet hat, da der Host liest, was sich auf dem Bus befindet. Es wird erwartet, dass der Host Synchronisierungsfelder und andere Felder überprüft, um festzustellen, ob die Daten angemessen sind. Das Hostverhalten für unerwartete oder ungültige Daten besteht darin, eine Gerätezurücksetzung zu initiieren.

Fehler auf Bitebene

Fehler auf Bitebene können auf dem SPI-Bus auftreten. Diese Fehler sind in der Regel das Ergebnis von Geräuschen im Bus oder Störungen durch andere Busse im System. Diese Spezifikation unterstützt keinen CRC oder anderen Erkennungsmechanismus für Fehler auf Bitebene in der SPI-Datenleitung.

Der Hostparser kann einen fehlerhaften Bericht identifizieren und verwerfen. Es liegt in der Verantwortung des Host-HID-Treiberstapels, sich vor einem fehlerhaften Bericht zu schützen, der nicht dem Berichtsdeskriptor entspricht. Das Hostverhalten für unerwartete Daten besteht darin, eine Gerätezurücksetzung zu initiieren.

Timeoutfehler

Das HID-über-SPI-Protokoll ist sequenziell mit der Erwartung, dass das Gerät zeitnah auf Hostanforderungen reagieren muss. In den meisten Fällen werden die Antworten vom Gerät zum Host innerhalb von Millisekunden abgeschlossen. Für den Fall, dass das Gerät hängen bleibt und sich nicht selbst rückgängig machen kann, tritt eine erzwungene Timeoutverzögerung auf, nach der der Host das Gerät zurücksetzt und Neustartvorgänge zurücksetzt.

TIMEOUT_HostInitiatedReset = 1 second

Hosts können es proprietären Methoden ermöglichen, den Wert dieses Timeouts für ihre spezifischen Geräte anzupassen, es ist jedoch obligatorisch, dass der Host einen Timeoutwert unterstützt.

Vom Host initiiertes Zurücksetzen

Der Host kann das Gerät zurücksetzen, um die Kommunikation mit dem Gerät wieder herzustellen, wenn ein Fehler erkannt wird. Dieser Mechanismus ist für die Fehlerwiederherstellung vorgesehen und sollte als Reaktion auf ein außergewöhnliches Ereignis erfolgen, z. B. die Wiederherstellung der Kommunikation mit einem Gerät, das einer ESD-Entladung ausgesetzt war.