国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CRC為什么是數據通信領域中最常用的一種查錯校驗碼?

GReq_mcu168 ? 來源:玩轉單片機 ? 作者:玩轉單片機 ? 2020-07-01 17:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

UART有一個奇偶校驗,CAN通信有CRC校驗。Modbus、MAVlink、USB等通信協議也有校驗信息。

在自定義數據存儲時,有經驗的工程師都會添加一定校驗信息。

你平時通信,或者數據存儲時,你有用到校驗信息嗎?下面就介紹幾種常見的校驗算法

一、校驗和

校驗和是最基本,也是嵌入式工程師最常用的一種校驗算法,其實現方法很簡單,簡單到只有幾行代碼。

實現的方式方法很多,不同的編程語言,不同的應用有所不同,下面以C語言8位校驗和為例:

uint8_t CheckSum(uint8_t *Buf, uint8_t Len){uint8_t i = 0;uint8_t sum = 0;uint8_t checksum = 0;

for(i=0; i《Len; i++) { sum += *Buf++; }

checksum = sum & 0xff;

return checksum;}

二、異或校驗

【異或校驗】與【校驗和】類似,對數據進行“異或”,最終得到一個“異或值”。

uint8_t CheckXOR(uint8_t *Buf, uint8_t Len){uint8_t i = 0;uint8_t x = 0;

for(i=0; i《Len; i++) { x = x^(*(Buf+i)); }

return x;}

校驗和、異或校驗的方式有很多種,比如有的還會傳入一個參數作為異或校驗的值。

當然,以上代碼僅供學習參考,實際應用需結合項目情況修改代碼。

三、CRC校驗

CRC:Cyclic Redundancy Check,即循環冗余校驗。

CRC是數據通信領域中最常用的一種查錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。循環冗余檢查(CRC)是一種數據傳輸檢錯功能,對數據進行多項式計算,并將得到的結果附在幀的后面,接收設備也執行類似的算法,以保證數據傳輸的正確性和完整性。(來自網絡)

CRC校驗屬于冗余校驗中的一種,大學學計算機相關專業的同學都應該學過CRC校驗(學習時可能沒幾個同學搞明白了)

CRC有多種變體,比如:CRC-1、 CRC-5-USB、 CRC-8、 CRC-16、 CRC-32、 CRC-64等。其中,在嵌入式領域,CRC-16用的比較多。

常見CRC參數模型:

CRC為什么是數據通信領域中最常用的一種查錯校驗碼?

比如一種在單片機上實現CRC16的源碼:

uint8_t CRCTAB_H[256] = {/*表省略*/};uint8_t CRCTAB_L[256] = {/*表省略*/};void CRC16(uint8_t *pData, uint8_t Len, uint8_t *CRC_H, uint8_t *CRC_L){uint8_t i;uint8_t index;uint8_t crc_h = 0xFF;uint8_t crc_l = 0xFF;

for(i=0; i《Len; i++) { index = crc_h^*(pData + i); crc_h = crc_l^CRCTAB_H[index]; crc_l = CRCTAB_L[index]; }

*CRC_H = crc_h; *CRC_L = crc_l;}

CRC校驗不同場景實現方式不同,網上也有很多公開的庫和源碼,比如:

LibCRC – C語言中的開源CRC庫:

網上還有在線計算CRC校驗值以及代碼生成工具,感興趣的讀者可以自行了解。

四、MD5算法

MD5:Message-Digest Algorithm 5,即“信息-摘要算法。

從名字來看就知道它是從MD3、MD4發展而來的一種加密算法,其主要通過采集文件的信息摘要,以此進行計算并加密。

通過MD5算法進行加密,文件就可以獲得一個唯一的MD5值,這個值是獨一無二的,就像我們的指紋一樣,因此我們就可以通過文件的MD5值來確定文件是否正確,密碼進行加密后也會生成MD5值,論壇就是通過MD5值來驗證用戶的密碼是否正確的。

CRC為什么是數據通信領域中最常用的一種查錯校驗碼?

MD5是輸入不定長度信息,輸出固定長度128-bits的算法。經過程序流程,生成四個32位數據,最后聯合起來成為一個128-bits散列。基本方式為,求余、取余、調整長度、與鏈接變量進行循環運算。得出結果。

MD5的源碼在網上都能找到現成的,而且有不同編程語言(C、 C++JAVA)版本。

五、其他算法

隨著變成技術越來越發達,校驗算法也越來越多,有通用的算法,也有特殊領域特定的算法。

比如我之前做過密碼相關的開發,使用了由密碼管理局發布的SM3密碼雜湊算法。

還有從MD4算法改進而來的SHA-1算法(Secure Hash Algorithm 1即安全散列算法1)。
責任編輯:pj

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據傳輸
    +關注

    關注

    9

    文章

    2201

    瀏覽量

    67586
  • crc
    crc
    +關注

    關注

    0

    文章

    205

    瀏覽量

    30841
  • 數據通信
    +關注

    關注

    2

    文章

    526

    瀏覽量

    35099
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    智能顯示模塊通信時有CRC數據校驗功能嗎?串口通信能不能加上數據檢驗?

    智能顯示模塊通信時有CRC數據校驗功能嗎?串口通信能不能加上數據檢驗?
    發表于 02-28 16:13

    文解讀CRC校驗

    1、CRC是用來干嘛的? 般都知道是用來校驗的,檢測數據傳輸過程中是否出現錯誤(某些位,或某幾位,或者某塊區域位錯誤),旦檢測。 2、
    發表于 01-26 07:20

    芯源循環冗余校驗CRC)功能

    1 概述 循環冗余校驗(CRC) 主要應用于核實數據傳輸或數據存儲的正確性和完整性。CW32R030 內部集成CRC 計算單元, 支持采用多
    發表于 01-12 06:07

    MDB-RS232適配器數據通信格式解析

    MDB-RS232適配器數據通信格式解析
    的頭像 發表于 12-20 16:26 ?1639次閱讀
    MDB-RS232適配器<b class='flag-5'>數據通信</b>格式解析

    硬件循環冗余校驗CRC)模塊介紹

    CRC一種錯誤檢測,用于檢測數據傳輸或存儲中的意外更改。它通過對數據應用特定的算法生成個固
    發表于 11-21 07:39

    CRC校驗的原理和應用

    原理: CRC校驗數據視為個二進制多項式,用個預先定義好的生成多項式(Generator Polynomial) 進行模2除法,得到的
    發表于 11-14 06:48

    CRC校驗的本質和物理意義

    工業控制系統中,Modbus RTU協議的CRC校驗如同通信網絡的\"免疫系統\",某石化廠DCS系統曾因CRC計算錯誤導致0.3%的數據
    發表于 11-13 07:58

    8常用CRC算法分享

    CRC 計算單元可按所選擇的算法和參數配置來生成數據流的 CRC 。有些應用中,可利用 CRC 技術來驗證
    發表于 11-13 07:25

    RVMCU課堂「19」: 手把手教你玩轉RVSTAR—CRC計算篇

    RV-STAR開發板 CRC(循環冗余校驗) 循環冗余校驗(Cyclic redundancy check,CRC)是一種根據網
    發表于 10-30 07:49

    工業數據通信網關是什么?有什么推薦?

    以及數據的高效傳輸與處理。 工業數據通信網關是一種能夠在不同網絡協議之間進行報文轉換的設備,可由單片機、嵌入式設備、板卡或獨立設備實現這功能,甚至
    的頭像 發表于 08-27 14:35 ?912次閱讀
    工業<b class='flag-5'>數據通信</b>網關是什么?有什么推薦?

    CYUSB3014采用5根地址線通信,但其中條地址線懸空,對數據通信有影響嗎?

    CYUSB3014采用5根地址線通信,但其中條地址線懸空,對數據通信有影響嗎??是否還能進行正常的多個端點通信,只要跳過那個地址線對應的socket即可?
    發表于 05-21 07:59

    2025華為河南商業市場數據通信新品推介會成功舉行

    近日,以“品智聯接耀中原,成就商業好生意”為主題的2025華為河南商業市場數據通信新品推介會在鄭州成功舉辦。來自數據通信領域的眾多精英以及業內知名企業代表齊聚堂,共同見證華為在
    的頭像 發表于 05-15 14:12 ?1128次閱讀

    華為DatacomStar數據通信實訓系統正式發布

    以“因聚而生 眾智有為”為主題的“華為中國合作伙伴大會2025”在深圳舉行。會議期間,由華為數據通信產品線和企業培訓與認證部聯合打造的“DatacomStar數據通信實訓系統”正式發布,定義人才培養新范式!
    的頭像 發表于 03-24 15:11 ?1654次閱讀

    基于Verilog語言實現CRC校驗

    CRC即循環冗余校驗碼:是數據通信領域中最常用一種查錯校驗
    的頭像 發表于 03-24 10:36 ?2557次閱讀
    基于Verilog語言實現<b class='flag-5'>CRC</b><b class='flag-5'>校驗</b>

    STM32 SPI從機用DMA方式實現全雙工,數據在傳輸過程中就會CRC校驗失敗,為什么?

    crc校驗碼,但是主機收到的數據總是不對,且crc校驗出錯。 我用DMA方式配置成DMA_N
    發表于 03-11 07:09