查看完整版本: CRC計算
頁: [1]

hinet115 發表於 2010-10-4 09:11 PM

CRC計算

本帖最後由 hinet115 於 2010-10-4 09:12 PM 編輯

各位大大,小弟最近添購了一個新東西,結果收到的時候,看到裡面的通訊協定,需要計算CRC,可小弟我這幾天算了半天,就是沒結果,想請教各位大大正確的算法及步驟,感謝!

資料傳送端所發出的訊號格式:
Request:Slave address + Function + Address + Word + CRC
1. Slave address — 01﹙hex﹚,1 byte
2. Function — 03﹙hex﹚,1 byte
3. Address — 0000 ~ FFFF﹙hex﹚,2 byte
4. Word — ﹙hex﹚,2 byte,Read count

CRC相關計算步驟如下:
1. 預置16 位元暫存器為十六進位FFFF(即全為1)。稱此為CRC 之暫存器。
2. 把第一個8 位元組與16 位CRC 暫存器之較低位元組做互斥或運算,把結果置於CRC 暫存器內。
3. 把CRC 暫存器的內容右移一位元(朝低位),用0 填補最高位元,再檢查最低位元。
4. 如果最低位元為0:重複第3 步驟 (再次位移)
    如果最低位元為1:CRC 暫存器與多項式A001 (1010 0000 0000 0001) 做互斥或運算。
5. 重複步驟3 和4,直到右移8 次為止,將全部8 位數位元組全部進行處理。
6. 重複步驟2 到步驟5,進行下一個8 位數位元組的處理。
7. 最後得到的CRC 暫存器即為CRC 碼。

目前小弟僅從資料中看到測試的字串:FF0301000010(5024)→5024應該是CRC吧?

廠商說,出場時前兩位就是FF了。

想請大大們教小弟如何正確地算出CRC

P.S. 因為我用資料中的資傳丟出去,結果設備就是沒東西傳回來。

感謝~~...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>
頁: [1]