碼crc校驗 CRC16校驗計算流程

2021-10-16 02:51:17 字數 1891 閱讀 8816

首先再次確認計算步驟:

1)、預置1個16位的暫存器為十六進製制ffff(即全為1111 1111 1111 1111),稱此暫存器為crc暫存器;

2)、把第乙個位轉換成8位二進位制資料(既通訊資訊幀的第乙個位元組)與16位的crc暫存器的低8位相異或,把結果放於crc暫存器,高八位資料不變;

3)、把crc暫存器的內容右移一位(朝低位)用0填補最高位,並檢查右移後的移出位;

4)、如果移出位為0:重複第3步(再次右移一位);

如果移出位為1,crc暫存器與多項式進行異或(a001:1010 0000 0000 0001);

5)、重複步驟3和4,直到右移8次,這樣第乙個字的整個8位資料全部進行了處理

7)、將該通訊資訊幀所有位元組按上述步驟計算完成後,得到的16位crc暫存器的高、低位元組進行交換;

8)、最後得到的crc暫存器內容即為:crc碼。

例項:傳送資料 2d 00 03 07計算出校驗碼

第一步確認crc校驗的模型為 crc-16/modbus多項式為x16+x15+x2+1

第二步由標準crc生成多項式錶可查出多項式的簡寫為8005。

8005轉換成4位八進位制為 1000 0000 0000 0101 

高低位位元組顛倒生成多項式1010  0000 0000 0001

開始計算:

1)把第乙個位元組2d轉找成8位二進位制0010 1101  與crc暫存器ffff低8位進行異或。

2)異或的結果放的crc暫存器中

3)crc暫存器內容右移

4)右移為0,再移   右移為1與多項式1010  0000 0000 0001異或

5)直到第乙個位元組的8位全部處理完

6)用第乙個字異或的結果低8位與第二個位元組進行異或。

7)直到5個位元組全部處理完,得到的crc碼

8)把得到的crc碼 進行高低位元組交接,就是最後的校驗碼

計算過程見手寫圖:

計算得到的結果為 1100  0100 0011 1001轉換為十六進製制為 c4 39 進行高低位元組交換得到校驗碼為 39 c4

與軟體計算的結果對比一至 如圖

傳送資料 2d 00 03 07‍‍

‍加上校驗碼傳送的資料2d  00  03 07 39 c4

CRC 16校驗原理

1 迴圈校驗碼 crc碼 是資料通訊領域中最常用的一種差錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。2 生成crc 碼的基本原理 任意乙個由二進位制位串組成的 都可以和乙個係數僅為 0 和 1 取值的多項式一一對應。例如 1010111 對應的多項式為x6 x4 x2 x 1 而多項式為...

CRC16校驗的學習

一般一些工業上儀器儀表都會選擇crc16校驗,而寫程式對幀資料的校驗也需要選擇crc16校驗看看對不對。所以選擇crc16校驗還是很有必要的。當然crc是2位元組的,具體儲存方式大端儲存還是小端儲存,不同機器不一樣。crc的初值也可能不一樣有的是0x0000,而有的又卻是0xffff具體怎麼選還有根...

CRC16迴圈冗餘校驗

原理 crc 16校驗碼計算方法 常用查表法和計算法。計算方法一般都是 1 預置1個16位的暫存器為十六進製制ffff 即全為1 稱此暫存器為crc暫存器 2 把第乙個8位二進位制資料 既通訊資訊幀的第乙個位元組 與16位的crc暫存器的低 8位相異或,把結果放於crc暫存器,高八位資料不變 3 把...