亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

您現在的位置是:首頁 > 技術閱讀 >  CRC校驗碼簡介及CRC16的計算方法

CRC校驗碼簡介及CRC16的計算方法

時間:2024-02-09

點擊上方“嵌入式從0到1”,選擇“置頂/星標公眾號

干貨福利,第一時間送達!

什么是CRC校驗?

CRC即循環冗余校驗碼(Cyclic Redundancy Check):是數據通信領域中最常用的一種查錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。奇偶校驗雖然簡單,但是漏檢率太高,而CRC則要低的多,所以大多數都是使用CRC來校驗。CRC也稱為多項式碼。

循環冗余檢查(CRC)是一種數據傳輸檢錯功能,對數據進行多項式計算,并將得到的結果附在幀的后面,接收設備也執行類似的算法,進而可以保證在軟件層次上數據傳輸的正確性和完整性。

CRC-16校驗碼的應用

根據Modbus協議,常規485通訊的信息發送形式如下:

地址功能碼數據信息校驗碼
1byte1byteN byte2byte

其中2 Byte的校驗碼一般就是采用CRC16。

我們之前的網文《485型風速和風向變送器數據包解析》中介紹的通訊協議就是16位CRC碼。

CRC-16校驗碼計算方法

1. 計算法

此方法缺點是計算量大,有時不方便使用在單片機中。

unsigned int calccrc(unsigned char crcbuf, unsigned int crc)
{
       unsigned char i;

       crc = crc ^ crcbuf;

       for (i = 0; i < 8; i++)
       {
              unsigned char chk;

              chk = crc & 1;

              crc = crc >> 1;

              crc = crc & 0x7fff;

              if (chk == 1)

                     crc = crc ^ 0xa001;

              crc = crc & 0xffff;
       }

       return crc;
}

unsigned int chkcrc(unsigned char *buf, unsigned char len)
{
       unsigned char hi, lo;

       unsigned int i;

       unsigned int crc;

       crc = 0xFFFF;

       for (i = 0; i < len; i++)
       {
              crc = calccrc(*buf, crc);

              buf++;
       }

       hi = crc % 256;

       lo = crc / 256;

       crc = (hi << 8) | lo;

       return crc;

}

2. 查表法

速度快,語句少,但表格占用一定的程序空間。

// 逆序CRC表

unsigned char aucCRCHi[]{

       0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,

       0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

       0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,

       0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

       0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,

       0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

       0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

       0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

       0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,

       0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

       0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,

       0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

       0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,

       0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

       0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

       0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

       0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,

       0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

       0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,

       0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

       0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,

       0x00, 0xC1, 0x81, 0x40

};

unsigned char aucCRCLo[]{

       0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7,

       0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E,

       0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9,

       0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC,

       0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,

       0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32,

       0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D,

       0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38,

       0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF,

       0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,

       0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1,

       0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4,

       0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB,

       0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA,

       0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,

       0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0,

       0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97,

       0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E,

       0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89,

       0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,

       0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83,

       0x41, 0x81, 0x80, 0x40
};

unsigned short GetQuickCRC16(unsigned char * pBuffer, int Length) 
{

       unsigned char CRCHi = 0xFF;

       unsigned char CRCLo = 0xFF;

       unsigned char iIndex = 0;

       for (int i = 0; i < Length; i++)
       {
              iIndex = CRCHi ^ pBuffer[i];

              CRCHi = CRCLo ^ aucCRCHi[iIndex];

              CRCLo = aucCRCLo[iIndex];
       }

       return (unsigned int)( CRCHi << 8 | CRCLo);// CRC校驗返回值 
}

函數調用

int main()
{
       unsigned char checkBitLow, checkBitHig;

       unsigned char pCharData[6] = { 0x01 ,0x03,0x00,0x00,0x00,0x02 };

       unsigned int crc = chkcrc(pCharData, 6);

       checkBitLow = (unsigned char)(crc & 0xff); //校驗位低8位

       checkBitHig = (unsigned char)((crc >> 8) & 0xff); //校驗位高8位

       printf ("chkcrc checkBitLow:%02X checkBitHig:%02X \n", checkBitHig, 
checkBitLow);

       crc = GetQuickCRC16(pCharData, 6);

       checkBitLow = (unsigned char)(crc & 0xff);

       checkBitHig = (unsigned char)((crc >> 8) & 0xff);

       printf("GetQuickCRC16 checkBitLow:%02X checkBitHig:%02X \n", checkBitHig, checkBitLow);
}

測試結果:


在線CRC校驗網址

01 03 00 00 00 02 代入下面網址驗證:

  1. CRC在線校驗地址
    https://www.lammertbies.nl/comm/info/crc-calculation.html

  1. 專門的在線校驗計算器:16進制(CRC16)(MODBUS RTU通訊)校驗碼在線計算器
    https://www.23bei.com/tool-59.html

  1. CRC校驗工具
    http://www.metools.info/code/c15.html



分享、點贊、在看三連
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人精品一区二区| 国产精品成人一区二区三区夜夜夜| 日韩一级精品视频在线观看| 久久免费视频观看| 一区视频在线看| 久久九九精品99国产精品| 国产精品拍天天在线| 亚洲欧美成人精品| 国产欧美精品一区aⅴ影院| 午夜伦欧美伦电影理论片| 欧美成人在线网站| 日韩图片一区| 欧美v亚洲v综合ⅴ国产v| 国产日韩欧美一区| 久久久97精品| 韩国一区电影| 久久久久久欧美| 狠狠色狠狠色综合日日91app| 中文一区二区| 国产精品美女999| 午夜欧美不卡精品aaaaa| 欧美14一18处毛片| 一本色道久久综合精品竹菊 | 激情文学一区| 亚洲精品日韩一| 国产精品五区| 欧美视频在线不卡| 欧美日韩成人在线播放| 免费看精品久久片| 欧美精品激情在线观看| 国产乱码精品一区二区三区五月婷 | 欧美亚洲免费在线| 国内精品久久久久伊人av| 亚洲九九精品| 欧美精品久久久久久久久老牛影院 | 亚洲一区精品在线| 国产一区二区三区成人欧美日韩在线观看| 欧美1区视频| 亚洲一区二区三区四区中文 | 亚洲国产综合91精品麻豆| 欧美成人日韩| 香蕉久久夜色精品国产| 欧美日韩国产综合网| 亚洲免费电影在线观看| 免费观看不卡av| 巨乳诱惑日韩免费av| 巨乳诱惑日韩免费av| 今天的高清视频免费播放成人| 欧美成人第一页| 久久精品成人欧美大片古装| 亚洲午夜精品久久| 在线视频中文亚洲| 日韩一级欧洲| 狠狠色丁香婷婷综合| 欧美日韩一区精品| 欧美激情一级片一区二区| 久久国产一区二区三区| 亚洲午夜在线观看| 国产欧美韩国高清| 欧美日韩美女一区二区| 欧美日韩国产免费| 欧美国产综合| 亚洲一区二区三区中文字幕在线 | 一区福利视频| 亚洲国产精品美女| 国内视频一区| 亚洲免费一级电影| 一本久久a久久精品亚洲| 亚洲动漫精品| 亚洲区第一页| 最新日韩中文字幕| 亚洲美女在线一区| 亚洲精品乱码久久久久久久久| 性欧美1819sex性高清| 99国产麻豆精品| 欧美a级大片| 欧美精品v日韩精品v韩国精品v | 正在播放亚洲一区| 影音先锋在线一区| 国产亚洲欧美一区在线观看| 欧美日韩亚洲91| 国产精品日韩欧美一区二区| 欧美三级午夜理伦三级中视频| 欧美三级在线播放| 国产精品v欧美精品v日本精品动漫 | 麻豆精品网站| 欧美电影在线播放| 免费在线看成人av| 欧美性猛交xxxx免费看久久久| 欧美日韩视频一区二区三区| 国产精品久久久久久久久免费| 欧美午夜精品| 国产乱码精品一区二区三| 国产精品女主播| 国产欧美日韩视频| 国产亚洲欧美aaaa| 欧美 日韩 国产 一区| 欧美大片免费久久精品三p | 一本色道久久综合亚洲91| 日韩亚洲一区在线播放| 欧美一区中文字幕| 亚洲永久免费观看| 国产亚洲精品v| 久久久久久久久久久久久9999| 一区二区三区中文在线观看| 亚洲精品乱码久久久久| 欧美一区二区高清| 国产精品国产a级| 亚洲精品免费在线| 欧美精品一区三区在线观看| 国内一区二区三区| 亚洲综合日韩在线| 久久综合色88| 久久激情中文| 欧美顶级艳妇交换群宴| 国产精品区一区二区三区| 极品少妇一区二区| 亚洲欧美在线一区二区| 欧美色图一区二区三区| 国产亚洲综合精品| 99精品免费| 国产精品亚洲欧美| 久久se精品一区精品二区| 欧美日韩免费一区二区三区视频| 一区二区免费在线观看| 欧美婷婷久久| 久久久噜噜噜久久久| 国产婷婷色综合av蜜臀av| 欧美在线黄色| 日韩午夜黄色| 国产欧美一区二区精品婷婷| 一区二区三区久久精品| 国产一区二区中文| 欧美伦理91i| 欧美大片在线观看一区| 米奇777在线欧美播放| 久久久噜噜噜久久中文字幕色伊伊| 欧美自拍偷拍| 欧美三级韩国三级日本三斤| 亚洲国产成人午夜在线一区| 亚洲午夜伦理| 国产精品v亚洲精品v日韩精品| 欧美午夜a级限制福利片| 国产精品sm| 欧美日韩久久精品| 国产精品资源| 亚洲香蕉网站| 伊大人香蕉综合8在线视| 欧美激情1区| 免费观看成人www动漫视频| 国产精品成av人在线视午夜片| 亚洲欧美中文日韩在线| 久久久久一区| 国产日韩欧美三区| 久久精品麻豆| 国产一区二区三区日韩欧美| 欧美专区日韩专区| 国产欧美一区二区色老头| 久久久欧美精品| 国产精品久久久久久久9999| 欧美片在线播放| 亚洲清纯自拍| 一区二区精品国产| 亚洲激情视频在线| 欧美黑人在线观看| 亚洲日本欧美| 国产精品豆花视频| 亚洲永久在线观看| 狠狠色综合色区| 麻豆av一区二区三区久久| 亚洲精品久久| 亚洲永久在线观看| 国内自拍亚洲| 欧美粗暴jizz性欧美20| 亚洲乱码国产乱码精品精98午夜| 欧美韩日高清| 欧美插天视频在线播放| 国内精品福利| 欧美日韩国产综合网 | 欧美成人69av| 亚洲图片欧洲图片日韩av| 欧美午夜a级限制福利片| 欧美专区日韩专区| 亚洲欧洲在线播放| 美乳少妇欧美精品| 一区二区国产精品| 日韩午夜在线观看视频| 欧美日韩精品一区二区三区四区| 久久国产精品电影| 欧美日韩视频一区二区| 亚洲电影免费观看高清| 欧美sm重口味系列视频在线观看| 亚洲人成在线播放网站岛国| 国产精品视频yy9299一区| 久久色在线播放| 亚洲视频一二三| 国产一区二区在线观看免费| 欧美成人一区二区在线| 亚洲天堂免费观看| 伊人夜夜躁av伊人久久|