那曲檬骨新材料有限公司

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

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

3天內不再提示

利用CRC模塊加速校驗碼的計算

冬至配餃子 ? 來源:兆易創新GD32 MCU ? 作者:寒冰1988 ? 2022-09-22 17:25 ? 次閱讀

CRC的基礎概念

CRC(Cyclic Redundancy Check, 循環冗余校驗)是一種根據網絡數據包或計算機文件等數據產生簡短固定位數校驗碼的一種信道編碼技術,主要用來檢測或校驗數據傳輸或者保存后可能出現的錯誤。它是利用除法及余數的原理來作錯誤偵測的。

嵌入式領域,針對一些不嚴苛的情況下,可以用來校驗待升級固件或接收到數據的完整性,根據寬度的不同,常用的有CRC4/CRC8/CRC16/CRC32等。當打包固件或者發送數據時,可按照如下結構進行,接收方收到數據以后針對DATA區重新計算CRC,然后與數據包自帶的CRC對比,從而判斷數據是否正確。

poYBAGMsIYGAOXmzAABM1EVdJ6o675.png

GD32F310G硬件CRC介紹

GD32F310G自帶硬件CRC模塊,相對軟件CRC的計算,利用SOC自帶的CRC模塊可以減少代碼的體積,同時提高計算的效率。GD32F310G的CRC模塊的主要特性如下:

poYBAGMsIZqASpjHAACpmE1ExBI235.png

該模塊在使用方式上與友商的類似,本文基于官方DEMO的基礎上通過增添代碼實現CRC32的計算,展現一下GD32F310G自帶CRC硬件模塊的使用。

開發環境

硬件平臺

GD32F310G-START開發板

軟件平臺

Windows10

Keil-MDK 5.34

GD32F3x0_Firmware_Library_V2.2.0

參考資料

GD32F310xx-數據手冊-Rev1.1

GD32F3x0-用戶手冊-Rev2.5

GD32F3x0-固件庫使用指南-Rev1.2

軟件實現

int main(void)
{
    uint32_t crc32;
    uint32_t single_data = 0x12345678;
    uint32_t multiple_data[8] = {
        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
    };

    systick_config();
    
    rcu_periph_clock_enable(RCU_CRC);
    crc_deinit();
    crc_data_register_reset();
    
    crc32 = crc_single_data_calculate(single_data, INPUT_FORMAT_WORD);
    crc_data_register_reset();
    
    crc32 = crc_block_data_calculate(multiple_data, 8, INPUT_FORMAT_WORD);
    crc_data_register_reset();

    while(1) {
        /* insert 500 ms delay */
        delay_1ms(500);
    }
}

結果展示

如下圖為GD32F310執行的截圖,實例代碼SingleWord的CRC32=0xDF8A8A2B。

pYYBAGMsIbSAVqb0AACoHs2GrS0977.png

CRC的工具有很多種,此處利用CRC_calc在線工具作為校驗GD32的結果是否正確。根據GD32F310G提供CRC相關信息,按照下圖配置計算:

poYBAGMsIcuAD4-lAADXYcwThDI514.png

通過對比可知兩者一致。

后記

CRC模塊是GD32F310G中的一個特色模塊,通過該模塊相關功能的實現,熟悉了GD32的開發流程和開發環境。因為疫情的原因,訂購的PCM5102模組剛到貨,目前遇到幾個問題還在調試中,等問題解決了再跟大家分享。



審核編輯:劉清

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

    關注

    0

    文章

    15

    瀏覽量

    8887
  • 信道編碼
    +關注

    關注

    2

    文章

    34

    瀏覽量

    9600
  • GD32
    +關注

    關注

    7

    文章

    413

    瀏覽量

    24469
收藏 人收藏

    評論

    相關推薦

    如何在IAR Embedded Workbench中配置生成對應代碼區域的CRC校驗碼

    在運行過程中使用MCU內嵌的CRC硬件模塊計算對應代碼區域的CRC校驗碼,并和之前存儲的CRC
    的頭像 發表于 10-27 11:49 ?1772次閱讀
    如何在IAR Embedded Workbench中配置生成對應代碼區域的<b class='flag-5'>CRC</b><b class='flag-5'>校驗碼</b>

    實用資料——CRC校驗碼生成算法

    按上述步驟計算完成后,最后得到的CRC寄存器的內容即為CRC校驗碼,將其附著在原通訊信息幀后進行傳輸即可。如果用于Modbus協議設備則還需交換高低8位,非Modbus協議設備可以不必
    發表于 01-11 21:10

    CRC校驗碼算法的研究與實現

    CRC校驗碼算法的研究與實現
    發表于 08-06 11:09

    CRC16的計算校驗碼的方式有哪幾種?

    CRC16的計算校驗碼的方式有哪幾種?如何使用Delphi編寫Modbus RTU CRC16的校驗碼
    發表于 11-03 07:20

    循環冗余校驗碼---CRC

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

    奇偶校驗碼,奇偶校驗碼原理是什么?

    奇偶校驗碼,奇偶校驗碼原理是什么? 奇偶校驗碼是奇校驗碼和偶校驗碼的統稱,是一種最基本的檢錯碼。它是由n-1位信息元和1位
    發表于 03-17 17:39 ?6.3w次閱讀

    CRC校驗碼算法的研究與實現

    為了提高實際通信中檢查信號傳輸錯誤的能力,提高和推廣CRC校驗技術,本論文用邏輯代數知識、按模運算、代數知識和C語言編程工具設計了幾種具體實用的CRC校驗碼
    發表于 05-28 15:41 ?0次下載

    CRC-16校驗碼生成

    C#編寫的CRC校驗碼生成小程序,簡潔明了,如果有需要的話,大家可以下載了。
    發表于 05-06 15:06 ?8次下載

    crc循環冗余校驗碼算法

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

    薦讀:基于FPGA 的CRC校驗碼生成器

    大家好,又到了每日學習的時間了,今天我們來聊一聊基于FPGA 的CRC校驗碼生成器。下面咱們就來具體看看,歡迎大家一起交流學習。 1.概述 CRC即Cyclic Redundancy Check
    的頭像 發表于 06-13 11:18 ?6558次閱讀
    薦讀:基于FPGA 的<b class='flag-5'>CRC</b><b class='flag-5'>校驗碼</b>生成器

    CRC計算工具CRC校驗碼計算器應用程序免費下載

    本文檔的主要內容詳細介紹的是CRC計算工具CRC校驗碼計算器應用程序免費下載。
    發表于 07-01 08:00 ?135次下載
    <b class='flag-5'>CRC</b><b class='flag-5'>計算</b>工具<b class='flag-5'>CRC</b><b class='flag-5'>校驗碼</b><b class='flag-5'>計算</b>器應用程序免費下載

    CRC校驗碼的C語言程序免費下載

    本文檔的主要內容詳細介紹的是CRC校驗碼的C語言程序免費下載。
    發表于 04-22 08:00 ?28次下載
    <b class='flag-5'>CRC</b><b class='flag-5'>校驗碼</b>的C語言程序免費下載

    CRC校驗碼并行計算的FPGA實現

    用軟件實現 CRC 校驗碼計算很難滿足高速數據通信的要求 ,基于硬件的實現方法中 ,有串行經典算法 LFSR 電路 以及由軟件算法推導出來的其它各種并行計算方法。以經典的LFSR 電路
    發表于 03-28 09:34 ?30次下載
    <b class='flag-5'>CRC</b><b class='flag-5'>校驗碼</b>并行<b class='flag-5'>計算</b>的FPGA實現

    工控常用LRC XOR累加和CRC校驗工具校驗碼自動生成軟件多計算方式

    CRC校驗工具 校驗碼自動生成軟件支持十幾種CRC計算方式,包括MODBUS協議的CRC-16
    的頭像 發表于 11-25 14:27 ?3577次閱讀
    工控常用LRC XOR累加和<b class='flag-5'>CRC</b><b class='flag-5'>校驗</b>工具<b class='flag-5'>校驗碼</b>自動生成軟件多<b class='flag-5'>計算</b>方式

    CRC校驗碼的多種Verilog實現方式

    CRC循環冗余校驗碼(Cyclic Redundancy Check),檢錯碼。
    的頭像 發表于 06-21 15:03 ?3475次閱讀
    <b class='flag-5'>CRC</b><b class='flag-5'>校驗碼</b>的多種Verilog實現方式
    全讯网bbin888.com| 威尼斯人娱乐城正规吗| 大发888官方游戏平台| 汝阳县| 百家乐官网评级网站| 百家乐赌博平台| 大发888娱乐场 34| 百家乐官网2万| 免费百家乐官网平预测软件| 蓝盾百家乐具体玩法技巧| 乐天堂百家乐娱乐城| 忻城县| 澳门百家乐官网论| 百家乐不锈钢| 百家乐官网的关键技巧| 必博百家乐游戏| 大发888官网吧| 百家乐官网赌博策略论坛| 百家乐波音平台导航网| 通化大嘴棋牌官方下载| 百家乐官网破解软件真的有用吗| 百家乐赌博游戏平台| 沙龙国际娱乐| 百家乐官网那个平好| 大发888破解| 百家乐官网平的概率| 伟易博百家乐娱乐城 | 德州扑克教学| 百家乐官网双龙出海注码法| 永利百家乐娱乐场| 家居| 百家乐六手变化混合赢家打法| 乐博娱乐城| 做生意属虎的朝向| 永利赌场| 天博百家乐官网的玩法技巧和规则| 韩国百家乐官网的玩法技巧和规则| 威尼斯人娱乐网网址| 新2百家乐官网现金网百家乐官网现金网| 百家乐赌博策略论坛| 乐宝百家乐官网娱乐城|