在工業環境中運行的電子系統必須經常承受極端溫度、電氣噪聲環境或其他惡劣條件,然而,它們正常工作至關重要。例如,如果發送到控制機械臂位置的DAC的數據被破壞,則該臂可能會向意想不到的方向移動。這不僅危險而且代價高昂:想象一下,在生產線上,手臂撞到一輛新車的側面,或者更糟糕的是,撞到生產工人。
有幾種方法可用于確保在采取行動之前收到正確的數據。最簡單的方法是讓控制器讀回發送的數據。如果接收到的數據與發送的數據不匹配,則其中一個已損壞,必須發送和驗證新數據。這種方法是可靠的,但它也有很大的開銷:每條數據都必須經過驗證,使傳輸的數據量翻倍。
另一種方法是循環冗余校驗 (CRC),即為每個數據包發送校驗和。接收設備將指示是否出現問題,因此控制器不需要驗證接收。校驗和通常是通過對數據應用多項式方程來生成的。CRC-8 在應用于 24 位字時產生 8 位校驗和。將校驗和與數據相結合,將所有32位傳輸到可以分析組合的設備,并指示發生的錯誤(盡管不是一個完全完美的解決方案),比寫入和讀取方法更有效。
許多ADI公司的DAC以數據包錯誤檢查(PEC)的形式實現CRC。當不需要 PEC 功能時,將寫入 24 位數據。為了添加 PEC 函數,24 位數據通過相應的 8 位校驗和進行擴充。如果收到的校驗和與數據不一致,則輸出引腳調低以指示錯誤。控制器清除錯誤,返回引腳高電平,然后重新發送數據。圖 1 顯示了如何使用 SPI 接口應用數據的示例。表1列出了可以使用數據包錯誤檢查的ADI器件示例。
圖1.SPI 寫入時帶或不帶數據包錯誤檢查。
表 1.使用數據包錯誤檢查的ADI器件示例
部件號 | 描述 |
AD5360/AD5361 | 16 通道、16/14 位、±10V DAC |
AD5362/AD5363 | 8 通道、16/14 位、±10V DAC |
AD5748 | 工業電流/電壓輸出驅動器 |
AD5749 | 工業電流輸出驅動器 |
AD5750/AD5750-1 |
具有可編程范圍的工業電流/電壓輸出驅動器 |
AD5751 |
工業電流/電壓輸出驅動器 |
AD5755/AD5735 | 4通道、16位、4mA至20mA電流和電壓輸出DAC |
AD5757/AD5737 | 4通道、16位、4mA至20mA電流輸出DAC |
ADT7470 | 溫度傳感器集線器和風扇控制器 |
生成數據包錯誤校驗和
CRC-8 算法使用多項式 C(x) = x8+ x2+ x1 +1. 對于 x = 2,這相當于二進制值100000111。為了生成校驗和,將 24 位數據左移 8 位,以創建一個以 8 個邏輯 0 結尾的 32 位數字。CRC 多項式對齊,使其 MSB 與 32 位數據最左側的邏輯 1 相鄰。對數據應用獨占或 (XOR) 函數以生成新的(較短的)數字。(匹配的數字給出邏輯 0,不匹配的數字給出邏輯 1。CRC多項式再次對齊,使其MSB與第一個結果的最左側邏輯1相鄰,并重復該過程。最終,原始數據將減少到小于CRC多項式的值。這是 8 位校驗和。圖 2 演示了如何開發校驗和。
圖2.生成 24 位數字 (0x654321) 的校驗和。
結論
圖 2 中所示的示例使用 0x654321 的 (十六進制) 值作為示例 24 位數據字。將 CRC-8 多項式應用于數據會生成 0x86 的校驗和。當數據和校驗和發送到兼容的ADI產品時,只有在兩條數據都正確到達時,才會接受數據。此方法提高了數據傳輸的可靠性,并確保幾乎永遠不會接受損壞的數據。
審核編輯:郭婷
-
控制器
+關注
關注
112文章
16332瀏覽量
177813 -
dac
+關注
關注
43文章
2291瀏覽量
190980
發布評論請先 登錄
相關推薦
評論