色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

CRC循環冗余校驗簡介

CHANBAEK ? 來源:硬件工程師技術干貨 ? 作者:硬件工程師技術干 ? 2023-04-24 13:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、CRC簡介

CRC 是Cyclic Redundancy Check的縮寫,循環冗余校驗,用于校驗數據傳輸的完整性。 一般情況下在數據發送前計算CRC校驗值,附在發送數據之后,數據接收方也按照同樣方法計算CRC,然后對比計算結果,如果一致說明數據數據傳輸無誤,否則數據傳輸出錯。

2、什么是模二運算

CRC計算采用二進制模二除法,來解釋一下模二運算,模二運算忽略進位和借位,下面一一解釋。

1)模二加法,類似異或運算

1+1=0 0+0=0

1+0=1 0+1=1

2)模二減法,類似異或運算

1-1=0 0-0=0

1-0=1 0-1=1

3)模二乘法

1×1=1 0×0=0

1×0=0 0×1=0

4)模二除法

模二除法和十進制除法類似,運用了模二乘法和模二減法,直接舉例說明。

3、常見CRC模型如下:

不同的多項式計算方法不同,下面以CRC-5/EPC舉例說明:

多項式公式 :x5 + x3 + 1

完整寫出來是x5 + 0x4 + x3 + 0x2 + 0*x + 1

多項式 :取以上多項式中的系數101001為多項式,一般最高位不寫出來,所以多項式是01001,即0x09

初始值 :運算的初始值,EPC要求是0x09

結果異或值 :所有數據計算完的結果與其異或,EPC這里是0

輸入反轉 :輸入數據每字節高低位是否翻轉,EPC不翻轉。

輸出反轉 :輸出結果高低位是否翻轉,EPC不翻轉。

4、手撕CRC

仍然以CRC-5/EPC舉例,計算字節0xAA的CRC值,這是一個5位的CRC,使用模二除法,最終計算出5位CRC校驗值。 被除數是0xAA,二進制10101010,除數是多項式,即101001。 計算過程如下圖所示,為了表明計算過程把商為0的計算過程也寫出來了。 這是5位CRC,只取最后5位,即10000。 輸出結果不需要異或也不需要反轉,所以10000就是計算結果。

兩個字節AA55的CRC計算過程,同樣為了表明計算過程把商為0的計算過程也寫出來了。 這是5位CRC,只取最后5位,即01000。 輸出結果不需要異或也不需要反轉,所以01000就是計算結果。

再舉一個例子,仍然計算0xAA的CRC。 這次采用模型CRC-5/USB,多項式:x5+x2+1,輸入輸出數據都反轉,多項式0x05,初始值為0x1F,輸出異或值為0x1F。 最終計算結果00111。

5、C語言實現

以下是CRC-5/EPC的C語言實現代碼:

/*
 * Name:    CRC-5/EPC   x5+x3+1
 * Poly:    0x09
 * Init:    0x09
 * Refin:   False
 * Refout:  False
 * Xorout:  0x00
 * Note:
*/
uint8_t crc5_epc(uint8_t *data, uint16_t length)
{
    uint8_t i;

    //初始值是0x09的低5位,要和輸入數據的高五位異或
    //所以0x09左移三位,00001001<<3 = 01001000 = 0x48
    uint8_t crc = 0x48;
    while(length--)
    {
        crc ^= *data++;        //異或第一個字節
        for ( i = 0; i < 8; i++ )
        {
            if ( crc & 0x80 )
            {
                //最高位是1,需要異或多項式,多項式是最高位為1的6bit
                //多項式異或后最高位為0,所以這里不異或最高位了,他肯定是0
                //直接把crc左移1位,去掉最高位,然后異或多項式的低5bit
                //多項式是0x09<<3 = 00001001<<3 = 01001000 = 0x48
                crc = (crc << 1) ^ 0x48;        // 0x48 = 0x09<<(8-5)
            }
            else
            {
                //最高位是0,所以商為0,可以省去運算,見上面圖表,因為和0異或值不變。
                crc <<= 1;
            }

        }
    }
    return crc >> 3;    //計算完成后結果在高5位,右移動3位。
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據傳輸
    +關注

    關注

    9

    文章

    2023

    瀏覽量

    66127
  • 二進制
    +關注

    關注

    2

    文章

    807

    瀏覽量

    42349
  • crc
    crc
    +關注

    關注

    0

    文章

    204

    瀏覽量

    30151
  • 運算
    +關注

    關注

    0

    文章

    132

    瀏覽量

    26222
  • 循環冗余校驗

    關注

    0

    文章

    8

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    labview DAQ----MODBUS CRC16循環冗余校驗

    說明:CRC循環冗余錯誤校驗計算方法 CRC—16(循環冗余
    發表于 11-07 10:46

    PSoC 4 循環冗余校驗 (CRC)

    循環冗余校驗 (CRC) 組件的默認用途是根據任意長度的串行比特流計算 CRC。在數據時鐘的上升沿上對輸入數據進行采樣。在啟動前,
    發表于 07-04 11:30

    CRC循環冗余校驗的算法

    想問下51單片機和所有嵌入式中一個很基本也很常見的問題,CRC循環冗余校驗的算法中生成多項式為什么要那樣取(有個生成多項式的表格),如果信息段中一位或多位傳輸錯誤,
    發表于 01-21 21:02

    循環冗余校驗CRC)算法入門引導

    循環冗余校驗CRC)算法入門引導
    發表于 08-17 12:40

    如何利用循環冗余校驗CRC)計算單元進行傳輸數據的校驗

    循環冗余校驗CRC)計算單元是什么?如何利用循環冗余校驗
    發表于 12-15 06:04

    循環冗余校驗碼的單片機及CPLD 實現

    循環冗余校驗(CRC)是一種可靠性很高的串行數據校驗方法。介紹循環
    發表于 04-16 14:19 ?16次下載

    循環冗余校驗碼---CRC

    循環冗余校驗碼---CRC碼   二進制信息位串沿一條信號線逐位在部件之間或計算機之間傳送稱為串行傳送。CRC(Cyclic Redund
    發表于 10-13 16:52 ?7311次閱讀
    <b class='flag-5'>循環</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗</b>碼---<b class='flag-5'>CRC</b>碼

    基于FPGA的循環冗余校驗實驗系統

    文章首先分析了循環冗余校驗碼的功能,在此基礎上提出了基于FPGA的實現方法,詳細闡述了CRC校驗編解碼的實現方法,并提出了基于現有的實驗箱設
    發表于 03-26 13:52 ?1913次閱讀
    基于FPGA的<b class='flag-5'>循環</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗</b>實驗系統

    STM32L4循環冗余校驗模塊(CRC)介紹

    STM32L4循環冗余校驗模塊(CRC)介紹 有興趣的可以參考下
    發表于 12-25 10:38 ?27次下載

    循環冗余校驗奇偶校驗累加和校驗等知識分享

    CRC校驗循環冗余校驗)是數據通訊中最常采用的校驗方式。在嵌入式軟件開發中,經常要用到
    的頭像 發表于 11-08 09:31 ?9094次閱讀
    <b class='flag-5'>循環</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗</b>奇偶<b class='flag-5'>校驗</b>累加和<b class='flag-5'>校驗</b>等知識分享

    crc循環冗余校驗碼算法

     循環冗余校驗(Cyclic Redundancy Check, CRC)是一種根據網絡數據包或電腦文件等數據產生簡短固定位數校驗碼的一種散
    發表于 12-04 10:11 ?2.4w次閱讀
    <b class='flag-5'>crc</b><b class='flag-5'>循環</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗</b>碼算法

    PIC24F系列參考手冊之可編程循環冗余校驗CRC

    本文主要介紹了PIC24F系列參考手冊之可編程循環冗余校驗CRC)。
    發表于 06-25 03:20 ?0次下載
    PIC24F系列參考手冊之可編程<b class='flag-5'>循環</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗</b>(<b class='flag-5'>CRC</b>)

    Verilog數字系統基礎設計中的循環冗余校驗

    CRC循環冗余校驗CRC介紹 臨時“插播”,后面有實例。 CRC(Cyclic Redun
    的頭像 發表于 08-17 17:08 ?7116次閱讀

    32位可編程循環冗余校驗(CRC)

    電子發燒友網站提供《32位可編程循環冗余校驗(CRC).pdf》資料免費下載
    發表于 09-25 11:22 ?0次下載
    32位可編程<b class='flag-5'>循環</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗</b>(<b class='flag-5'>CRC</b>)

    CRC循環冗余校驗)應用舉例

    CRC循環冗余校驗)應用舉例
    的頭像 發表于 05-16 16:12 ?1955次閱讀
    主站蜘蛛池模板: 恋老视频 国产国佬 | 国产成人h在线视频 | 国产欧美另类久久久精品免费 | 永久adc视频年龄确认 | 国产精品99久久免费黑人人妻 | 偷窥国产亚洲免费视频 | 真实国产熟睡乱子伦对白无套 | 久久午夜一区二区 | 日本黄 色大片全 | 洗濯屋H纯肉动漫在线观看 羲义嫁密着中出交尾gvg794 | 久久99热这里只频精品6 | 久久www免费人成_看片高清 | 国产精品一区二区四区 | 快播电影网站大全 | gayxxxxgay呻吟受日本 | 亚洲天堂久久久 | 亚洲精品免费在线 | 黄色网址在线播放 | 在线视频 日韩视频二区 | 丰满大屁俄罗斯肥女 | 国产精品无码人妻99999 | 最新无码国产在线视频 | 第一会所欧美无码原创 | 青年医生插曲 | 国产精品久久vr专区 | 亚洲高清免费在线观看 | 蜜桃臀无码内射一区二区三区 | 国内视频在线精品一区 | 国产日韩欧美有码在线视频 | 国产91无毒不卡在线观看 | 在线中文高清资源免费观看 | 午夜婷婷一夜七次郎 | 亚洲国产精品久久无套麻豆 | seyeye免费高清观看 | 穿白丝袜边走边尿白丝袜 | 亚洲1卡二卡3卡4卡新区在线 | CHINA中国东北GURMA | 0855午夜福利伦理电影 | 亚洲一卡二卡三卡四卡无卡麻豆 | 免费 高清 中文在线观看 | 国产片MV在线观看 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品