全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 物联网 >

利用CRC模块加速校验码的计算

时间:2022-09-22 17:25

人气:

作者:admin

标签: CRC算法  信道编码  GD32 

导读:在嵌入式领域,针对一些不严苛的情况下,可以用来校验待升级固件或接收到数据的完整性,根据宽度的不同,常用的有CRC4/CRC8/CRC16/CRC32等。...

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模组刚到货,目前遇到几个问题还在调试中,等问题解决了再跟大家分享。



审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信