女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

CRC為什么是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯校驗碼?

GReq_mcu168 ? 來源:玩轉(zhuǎn)單片機 ? 作者:玩轉(zhuǎn)單片機 ? 2020-07-01 17:10 ? 次閱讀

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

在自定義數(shù)據(jù)存儲時,有經(jīng)驗的工程師都會添加一定校驗信息。

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

一、校驗和

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

實現(xiàn)的方式方法很多,不同的編程語言,不同的應(yīng)用有所不同,下面以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;}

二、異或校驗

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

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;}

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

當然,以上代碼僅供學(xué)習(xí)參考,實際應(yīng)用需結(jié)合項目情況修改代碼。

三、CRC校驗

CRC:Cyclic Redundancy Check,即循環(huán)冗余校驗。

CRC是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。循環(huán)冗余檢查(CRC)是一種數(shù)據(jù)傳輸檢錯功能,對數(shù)據(jù)進行多項式計算,并將得到的結(jié)果附在幀的后面,接收設(shè)備也執(zhí)行類似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。(來自網(wǎng)絡(luò))

CRC校驗屬于冗余校驗中的一種,大學(xué)學(xué)計算機相關(guān)專業(yè)的同學(xué)都應(yīng)該學(xué)過CRC校驗(學(xué)習(xí)時可能沒幾個同學(xué)搞明白了)

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

常見CRC參數(shù)模型:

CRC為什么是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯校驗碼?

比如一種在單片機上實現(xiàn)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校驗不同場景實現(xiàn)方式不同,網(wǎng)上也有很多公開的庫和源碼,比如:

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

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

四、MD5算法

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

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

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

CRC為什么是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯校驗碼?

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

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

五、其他算法

隨著變成技術(shù)越來越發(fā)達,校驗算法也越來越多,有通用的算法,也有特殊領(lǐng)域特定的算法。

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    2003

    瀏覽量

    65675
  • crc
    crc
    +關(guān)注

    關(guān)注

    0

    文章

    204

    瀏覽量

    29971
  • 數(shù)據(jù)通信
    +關(guān)注

    關(guān)注

    2

    文章

    464

    瀏覽量

    34289
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    芯知識|廣州唯創(chuàng)電子語音芯片UART通信協(xié)議解析:發(fā)碼長度與校驗碼計算

    、UART通信協(xié)議概述UART(通用異步收發(fā)器)是一種廣泛應(yīng)用于嵌入式系統(tǒng)的串行通信協(xié)議,其核心特點為無需時鐘同步,通過起始位、數(shù)據(jù)位、
    的頭像 發(fā)表于 05-27 08:48 ?66次閱讀
    芯知識|廣州唯創(chuàng)電子語音芯片UART<b class='flag-5'>通信</b>協(xié)議解析:發(fā)碼長度與<b class='flag-5'>校驗碼</b>計算

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

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

    2025華為河南商業(yè)市場數(shù)據(jù)通信新品推介會成功舉行

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

    AD7768與STM32F407進行數(shù)據(jù)通信,SPI1讀取到的數(shù)據(jù)不完整,整體數(shù)據(jù)在字節(jié)上出現(xiàn)偏移,怎么解決?

    進行數(shù)據(jù)通信,我們采用所有數(shù)據(jù)都在DOUT0上輸出的模式。 然后使用DRDY信息來進行數(shù)據(jù)中斷觸發(fā)。 但是目前存在問題:SPI1讀取到的數(shù)據(jù)不完整,整體
    發(fā)表于 04-24 06:40

    華為DatacomStar數(shù)據(jù)通信實訓(xùn)系統(tǒng)正式發(fā)布

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

    基于Verilog語言實現(xiàn)CRC校驗

    CRC即循環(huán)冗余校驗碼:是數(shù)據(jù)通信領(lǐng)域中最常用一種查錯校驗
    的頭像 發(fā)表于 03-24 10:36 ?1145次閱讀
    基于Verilog語言實現(xiàn)<b class='flag-5'>CRC</b><b class='flag-5'>校驗</b>

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

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

    使用DAC7760的幀錯誤檢查功能,試過幾次,直不成功是哪里出了問題?

    想使用DAC7760的幀錯誤檢查功能,試過幾次,直不成功,有沒有好心的網(wǎng)友能提供下DAC7760的CRC校驗碼生成的算法,或者給出幾個普通的發(fā)送信息和它對應(yīng)的
    發(fā)表于 01-15 07:20

    利用ADS1293與ARM進行SPI數(shù)據(jù)通信的程序設(shè)計該注意什么?

    請教大家,利用ADS1293與ARM 進行SPI 數(shù)據(jù)通信的程序設(shè)計該注意什么?比如比特率的設(shè)置該設(shè)置什么?有沒有相關(guān)的例程可以參考?3通道24位數(shù)據(jù)是按通道的次序每個通道24位這樣發(fā)送嗎?這個24位是不是只是指ECG的信號?謝謝!
    發(fā)表于 01-06 06:44

    ADS9110使用絲線SPI進行ADS數(shù)據(jù)通信,但是在調(diào)試頁面讀取不到數(shù)據(jù),示波器上也未顯示傳輸數(shù)據(jù)波形,怎么解決?

    ADS9110使用絲線SPI進行ADS數(shù)據(jù)通信,但是在調(diào)試頁面讀取不到數(shù)據(jù),示波器上也未顯示傳輸數(shù)據(jù)波形,供電電壓正常
    發(fā)表于 11-29 06:38

    意法半導(dǎo)體推出新款增強版移動數(shù)據(jù)通信模塊

    意法半導(dǎo)體新推出款增強版移動數(shù)據(jù)通信模塊,可簡化大規(guī)模物聯(lián)網(wǎng)設(shè)備的連接和管理,加快可持續(xù)智能電網(wǎng)和智能產(chǎn)業(yè)的應(yīng)用。
    的頭像 發(fā)表于 11-27 13:45 ?549次閱讀

    OSI七層模型與數(shù)據(jù)通信的關(guān)系

    在現(xiàn)代信息技術(shù)中,數(shù)據(jù)通信是信息交換的基石。隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展,不同設(shè)備和系統(tǒng)之間的數(shù)據(jù)交換變得越來越頻繁。為了確保這些交換能夠順利進行,需要個統(tǒng)的框架來指導(dǎo)
    的頭像 發(fā)表于 11-24 10:50 ?823次閱讀

    ADS131B04-Q1 SPI通信時,為什么無法得到正常的CRC校驗

    你好,我使用 ADS131B04 進行產(chǎn)品開發(fā),使用中遇到如下問題還請幫忙解答。謝謝。 1 . SPI 通信CRC 不清楚怎么使用,按如下方法使用時無法得到正常的CRC 校驗
    發(fā)表于 11-22 06:40

    TAS5805內(nèi)部的硬件CRC8對應(yīng)標準的哪種? CRC校驗數(shù)據(jù)是offset和value值嗎?

    TAS5805 內(nèi)部的硬件 CRC8 對應(yīng)標準的哪種? CRC 校驗數(shù)據(jù)是 offset 和 value 值嗎?用 PPC 加載文件計算出來的值和在線
    發(fā)表于 10-12 06:19

    說明白了,Modbus RTU通信協(xié)議解析-成都電路板單片機開發(fā)

    Modbus協(xié)議在工業(yè)控制、電氣、電子領(lǐng)域是個很常見的一種通信協(xié)議,很多遇見的傳感器、控制器、變頻器、驅(qū)動器之類的基本都支持該協(xié)議,常見到什么程度呢,就是你看到的個設(shè)備如果支持串口
    發(fā)表于 06-30 22:28