循環冗余校驗確保正確的數據通信
在工業環境中,電子系統通常工作在極端的溫度條件下,或處于電子噪聲環境,或是其它惡劣條件,而系統在這種條件下能否正常工作至關重要。舉例來說,如果發送給控制機器臂位置的DAC 的數據遭到破壞,機器臂就會按非預期的方向移動,這不僅危險,而且代價巨大。試想一下,機器臂如果砸到生產線上的新車,或者更糟,砸到生產工人,后果會怎樣?
本文引用地址:http://www.104case.com/article/156227.htm有幾種方法可以確保收到正確數據后才執行動作。最簡單的方式就是控制器回讀所發送的數據。如果接收的數據與發送的數據不匹配,則說明其中一者已受到破壞,必須發送新數據并進行驗證。這種方法的確可靠,但產生的開銷也很大,每段數據都必須經過驗證,傳輸的數據量要翻一倍。
另一種替代方法是循環冗余校驗(CRC),即隨每個數據包發送一個校驗和(CHECKSUM),接收器就會指示是否存在問題,所以控制器無需驗證接收。校驗和一般通過向數據應用一個多項式方程式來生成。應用于一個24 位字時,CRC-8 可產生一個8 位校驗和。將校驗和與數據組合在一起,全部32 位都發送到能夠分析該組合的器件,并指示是否出錯——這種方法雖然不是無可挑剔解決方案,但卻比讀寫方法更加高效。
ADI 公司的眾多DAC 都采用了分組差錯校驗(PEC)的形式來實現CRC。不需要PEC 功能時,則寫入24 位數據。要添加 PEC 功能,24 位數據需增加相應的8 位校驗和。如果接收的校驗和與數據不一致,輸出引腳被拉低,指示存在錯誤。控制器清除錯誤,使引腳返回高電平,并重新發送數據。圖1 所示為如何用SPI 接口應用數據的示例。表1 列出了能夠采用分組差錯校驗的ADI 器件示例。
圖1. 采用和不采用分組差錯校驗的SPI 寫入
評論