基于 SPI 的 HID 的错误处理

本文介绍 HID over SPI 的错误检测和处理过程。 SPI 总线上的错误分为以下类别:

  • 协议错误
  • 超时错误

协议错误

协议错误进一步分为以下分类:

  • 短数据包错误
  • 位级别错误

短数据包错误

当主机或设备未返回 HID SPI 协议请求和长度字段中标识的位数时,会发生短数据包错误。 主机应以指定位数进行时钟。 主机无法知道设备是否已停止发送数据,因为主机将读取总线上发生的任何情况。 主机应检查同步字段和其他字段,以查看数据是否合理。 意外数据或无效数据的主机行为是启动设备重置。

位级错误

SPI 总线上可能会出现位级错误。 这些错误通常是总线上的噪音或系统中其他总线的干扰造成的。 此规范不支持针对 SPI 数据行上的位级错误的 CRC 或其他检测机制。

主机分析程序可以识别格式不正确的报表并丢弃它。 主机 HID 驱动程序堆栈负责防范不符合报表描述符的格式不正确的报表。 意外数据的主机行为是启动设备重置。

超时错误

HID over SPI 协议是连续的,预期设备必须及时响应主机请求。 在大多数情况下,设备到主机的响应在几毫秒内完成。 如果设备卡住并且无法自行还原,则会出现强制超时延迟,在此延迟之后,主机可能会重置设备并重启操作。

TIMEOUT_HostInitiatedReset = 1 second

主机可能允许专有方法调整其特定设备的此超时值,但主机必须支持超时值。

主机发起的重置

检测到错误时,主机可能会重置设备以重新建立与设备的通信。 此机制旨在用于错误恢复,并且应响应异常事件,例如与暴露在 ESD 排放中的设备重新建立通信。