透過 SPI 的 HID 錯誤處理
本文涵蓋透過 SPI 的 HID 錯誤偵測和處理程式。 SPI 總線上的錯誤分成下列類別:
- 通訊協議錯誤
- 逾時錯誤
通訊協議錯誤
通訊協定錯誤會進一步描述為下列分類:
- 簡短封包錯誤
- 位層級錯誤
簡短封包錯誤
當主機或裝置未傳回 HID SPI 通訊協定要求和長度欄位中所識別的位數時,就會發生簡短封包錯誤。 主機預期會在指定的位數目中時鐘。 主機無法得知裝置是否已停止傳送數據,因為主機會讀取總線上發生的任何狀況。 主機預期會檢查同步欄位和其他欄位,以查看資料是否合理。 非預期數據或無效數據的主機行為是起始裝置重設。
位層級錯誤
SPI 總線上可能會發生位層級錯誤。 這些錯誤通常是因為總線上的雜訊,或來自系統中其他公交車的干擾。 此規格不支援 SPI 資料行上位層級錯誤的 CRC 或其他偵測機制。
主機剖析器可以識別格式不正確的報表並加以捨棄。 主機 HID 驅動程式堆疊的責任,可防範不符合報表描述元的格式不正確的報表。 非預期數據的主機行為是起始裝置重設。
逾時錯誤
HID over SPI 通訊協定是循序的,預期裝置必須及時回應主機要求。 在大部分情況下,從裝置到主機的回應會以毫秒為單位完成。 如果裝置停滯且無法自行還原,主機可能會重設裝置並重新啟動作業之後,會有強制逾時延遲。
TIMEOUT_HostInitiatedReset = 1 second
主機可能會允許專屬方法來調整其特定裝置的這個逾時值,但主機必須支援逾時值。
主機起始重設
當偵測到錯誤時,主機可能會重設裝置以重新建立與裝置的通訊。 此機制適用於錯誤復原,且應回應例外狀況事件,例如重新建立與公開給ESD釋放裝置的通訊。