實作基本思路
以CRC-16為例
CRC-16 碼由兩個位元組構成,在開始時 CRC 暫存器的每一位都預置為1,然后把CRC暫存器與 8bit 的資料進行異或,之后對CRC暫存器從高位到低位進行移位,在最高位的位置(MSB)補0,而最低位(LSB,移位后已經被移出CRC暫存器)如果為1,則把暫存器與預定義的多項式碼進行異或,若 LSB 為0,則無需進行異或,重復上述的由高至低的移位 8 次,第一個 8bit 資料處理完畢,用此時 CRC 暫存器的值與下一個 8bit 資料異或并進行如前一個資料似的8次移位,所有字符處理完成后CRC 暫存器內的值即為最終的 CRC 值
- 設定CRC暫存器,并給其賦值FFFFH
- 將資料的第一個 8bit 字符與16位 CRC 暫存器的低8位進行異或,并把結果存入 CRC 暫存器,
- CRC 暫存器向右移移位,MSB補0,移出并檢查 LSB,
- 如果LSB為0,重復第三步;若LSB為1,CRC暫存器與多項式碼相異或,注意:該步檢查LSB應該是右移前的LSB,即第3步前的LSB,
- 重復第3與第4步直到8次移位全部完成,此時一個 8bit 資料處理完畢,
- 重復2至5步直到所有資料全部處理完畢,
- 最終 CRC 暫存器的內容即為 CRC 值,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/207783.html
標籤:其他
上一篇:MAX30102 血氧除錯筆記
