还未设置个性签名
成为VIP会员 享9项特权: 开通会员

完善资料让更多小伙伴认识你,还能领取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

    文章

    10

    浏览量

    8375
  • 信道编码
    +关注

    关注

    2

    文章

    16

    浏览量

    8702
  • GD32
    +关注

    关注

    6

    文章

    175

    浏览量

    21479
收藏 人收藏

    评论

    相关推荐

    基于GD32F310开发板的AD多通道交流采样计算

    1、基于GD32F310开发板的AD多通道交流采样计算   很幸运能够有机会试用兆易公司的GD32F310开发板。本次使用中,我将使...
    发表于 09-30 14:29 5329次 阅读

    怎样去设计一种基于OLED屏+温湿度传感器的温湿度计

    1、概述 GD310开发板使用了GD32F310K8T6的芯片,芯片上的资源很多,而且板上还带了GD-LINK,很方便下载程序。KE...
    发表于 09-30 11:42 2391次 阅读

    分享在IAR环境下GD32的flash下载算法的一些理解

    IAR支持GD32的插件安装 由于原生安装的IAR开发环境并不支持GD32 MCU的信息,主要是设备描述信息,icf内存映射文件...
    发表于 09-30 11:05 2653次 阅读

    基于GD32F310开发板完成超频及ADC极限采样率实验

    1、ADC极限采样率实验   项目为用单片机采集VGA图像的应用,当前所用的单片机为GD32F330,用于降成本的替代方案原本...
    发表于 09-29 15:35 3947次 阅读

    基于GD32F310开发板实现一种MAC开发&调试环境搭建

    1、MAC开发&调试环境搭建   开发板:GD32F310G-START 2022-1 V1.0   桌面操作系统: macOS Monterey ...
    发表于 09-29 15:25 3903次 阅读

    基于GD32F310开发板实现USART发送与串口重定向的设计

    USART 简介及特点 最多两个 USART,工作频率高达 4.5 MB/s 支持异步和时钟同步串行通信模式 IrDA SIR 编...
    发表于 09-28 10:49 2748次 阅读

    请问有在gd32f107成功打开网络的大佬吗

    我再menuconfig打开了device drivers网络驱动和lwip 但生成的drv文件没有网络驱动的程序 请问有在gd32f107成功打开网络的大佬吗...
    发表于 09-26 14:23 1033次 阅读

    GD32F310定时器采样MP6050并在彩色LCD上显示波形

    GD32存在一个问题,用队列缓冲陀螺仪数据时,运行数秒后死机。
    的头像 冬至配饺子 发表于 09-23 17:45 922次 阅读

    用Rust开发Cortex-M4初探寄存器访问与设备初始化

    1、用Rust开发Cortex-M4初探寄存器访问与设备初始化   点过灯的板子也不少了。 插电, 开机, 观看出场固件(曾有块板子的...
    发表于 09-22 15:51 3241次 阅读

    GD32F310开发板使用和最简单移植常用库之cjson移植

    1、拿到开发板直接去官网下载 官方提供中文手册。好评 下载keil 的pack包和开发板例程序 2、打开官方例程序 可能存在...
    发表于 09-22 15:44 2681次 阅读

    GD32F310开发板串口的一些特殊功能介绍

    串口主要用于通信和调试信息输出,今天仔细观察GDF310的数据手册发现一些特殊功能:1、自动波特率检测;2、数据发送/接受,高...
    发表于 09-22 15:40 2752次 阅读

    兆易创新发布GD32A503系列首款车规级MCU

    兆易创新今日宣布,发布首款基于Cortex®-M33内核的GD32A503系列车规级微控制器,正式进....
    的头像 皇华ameya 发表于 09-20 14:35 480次 阅读
    兆易创新发布GD32A503系列首款车规级MCU

    介绍Xilinx的Polar Encoder IP核使用方法

    前向纠错(FEC)码(例如Polar码)提供了一种方法去检测核识别纠正不可靠或嘈杂通信信道上的数据传....
    发表于 08-05 17:35 315次 阅读
    介绍Xilinx的Polar Encoder IP核使用方法

    一文解析STM32、GD32、ESP32差异

    GD32 是国产单片机,据说开发人员来自ST公司,GD32 也是以 STM32 作为模板做出来的。所....
    发表于 07-29 14:19 3161次 阅读

    使用MCU GD32替代STM32的体会

    GD32作为国产MCU里的佼佼者,产品线也比较丰富,是替代STM32的一个很好的选择。前段时间有个项....
    发表于 07-29 08:53 1714次 阅读

    兆易创新亮相第20届德国纽伦堡嵌入式系统展

    近日,第20届德国纽伦堡嵌入式系统展(Embedded World)在时隔2年后正式回归,国际专家齐....
    的头像 兆易创新GigaDevice 发表于 07-04 18:58 678次 阅读

    Ashling为兆易创新GD32 RISC-V MCU提供高效RiscFree™ C/C++工具链

    兆易创新与Ashling联合宣布,兆易创新GD32V系列RISC-V内核通用MCU已与Ashling....
    发表于 06-24 17:06 678次 阅读

    GD32 RISC-V系列 BSP框架制作与移植

      手把手教你使用RT-Thread制作GD32 RISC-V系列BSP 熟悉RT-Thread的朋....
    的头像 嵌入式大杂烩 发表于 06-22 19:44 2795次 阅读
    GD32 RISC-V系列 BSP框架制作与移植

    GD32407V-START开发板的BSP框架制作与移植

    熟悉RT-Thread的朋友都知道,RT-Thread提供了许多BSP,但不是所有的板子都能找到相应....
    的头像 嵌入式大杂烩 发表于 06-22 08:54 2041次 阅读
    GD32407V-START开发板的BSP框架制作与移植

    GD32选型手册

    GD32选型手册
    发表于 06-17 14:49 217次 阅读

    兆易创新以累计10亿颗GD32出货量领跑中国MCU市场

    数据显示,2021年兆易创新MCU产品出货量近4亿颗,相比2020年近2亿颗的出货量,连续2年持续翻....
    的头像 电子发烧友网 发表于 04-24 10:32 1074次 阅读

    GD32单片机和STM32单片机的区别

    GD32是国内开发的一款单片机,据说开发的人员是来自ST公司的,GD32也是以STM32作为模板做出....
    的头像 硬件攻城狮 发表于 04-19 15:07 4974次 阅读

    stm32f103移植到GD32修改内容及注意事项

    在国内芯片紧张的情况下,目前如果项目没有成型可以安装官方提供的GD32的pack,选择相关的pack....
    发表于 03-02 09:14 7646次 阅读
    stm32f103移植到GD32修改内容及注意事项

    GD32F303课程【4】串口开发

    目录如下,持续更新~~【1】星空派GD32F303开发板介绍 与 文章目录1. 串口基础概念USAR....
    发表于 01-17 12:58 172次 阅读
    GD32F303课程【4】串口开发

    FreeRTOS —— 10.低功耗支持

    待定。 本章将在最终出版之前撰写。
    发表于 12-31 19:06 113次 阅读
    FreeRTOS —— 10.低功耗支持

    FreeRTOS —— 0.前言

    MCU当遇到比较复杂的开发时,往往都会采用RTOS,而FreeRTOS是最为广泛使用的实时操作系统之....
    发表于 12-29 19:27 229次 阅读
    FreeRTOS —— 0.前言

    GD32学习笔记3----MDK软件仿真

    可以使用keil5/MDK对GD32进行软件仿真,无需硬件支持1.打开GD32F103工程,点击编译....
    发表于 12-29 18:50 1398次 阅读
    GD32学习笔记3----MDK软件仿真

    使用STM32固件库开发GD32 汇总

    文章目录GD32与STM32异同1. 相同点2. 外围硬件区别3. 内部结构差别4. 功耗区别(以1....
    发表于 12-27 18:38 336次 阅读
    使用STM32固件库开发GD32 汇总

    STM32和GD32有什么区别?

    一、前言什么GD32?GD32是国内开发的一款单片机,据说开发的人员是来自ST公司的,GD32也是以....
    发表于 12-24 19:09 904次 阅读
    STM32和GD32有什么区别?

    GD32F130 使用ST库开发项目

    GD32F130 使用ST库开发项目文章目录前言一、选开发库二、使用步骤1.安装pack包和配置2.....
    发表于 12-22 19:50 331次 阅读
    GD32F130 使用ST库开发项目

    E22-400T22S1C lora测试说明

    E22-400T22S1C测试说明E22-400T22S1C内部集成MCU,开放串口通信,实现全双工....
    发表于 12-20 19:44 206次 阅读
    E22-400T22S1C lora测试说明

    国产单片机(GD32E103)与MSP485通讯问题

    问题描述:在一次项目调试中使用主控GD32E103,通讯芯片是SP3485。在发送一帧数据,串口调试....
    发表于 12-16 16:54 260次 阅读
    国产单片机(GD32E103)与MSP485通讯问题

    单片机通过模拟SPI驱动LD3320模块

    单片机通过模拟SPI驱动LD3320模块仅完成识别部分!仅完成识别部分!仅完成识别部分!根据手册推荐....
    发表于 12-16 16:52 243次 阅读
    单片机通过模拟SPI驱动LD3320模块

    GD替代ST选型手册

    GD MCU大全GD101系列 规格书 开发板GD型号 脚位 ST型号GD32F10....
    发表于 12-09 16:51 382次 阅读
    GD替代ST选型手册

    32F103xx系列单片机/PA13|PA14|PB15|PB3|PB4作为普通GPIO口/JTAG|SWD调试仿真接口作为GPIO使用/GPIO_SWJ_SWDPENABLE_REMAP

    相信大家在对单片机编程时都遇到过端口复用的问题,特别是在引脚数量有限的MCU当中;今天会给大家讲解下....
    发表于 12-08 10:51 230次 阅读
    32F103xx系列单片机/PA13|PA14|PB15|PB3|PB4作为普通GPIO口/JTAG|SWD调试仿真接口作为GPIO使用/GPIO_SWJ_SWDPENABLE_REMAP

    RT-Thread移植到GD32F150系列MCU

    RT-Thread移植到GD32F150系列MCU
    发表于 12-07 19:36 258次 阅读
    RT-Thread移植到GD32F150系列MCU

    关于stm32或GD32定时器自动重装载值加一减一的问题

    今天在配置完定时器以后,为了查看实际多久进一次中断,在keil中设置断点来查看了下,结果发现与配置的....
    发表于 12-02 16:36 288次 阅读
    关于stm32或GD32定时器自动重装载值加一减一的问题

    关于GD32F330单片机定时器中断初始化后立即进入中断问题

    现象:通过插入硬件输出片段观察到定时器更新后10us左右进入了定时器中断,而该定时器设置中断时间为1....
    发表于 12-02 16:06 558次 阅读
    关于GD32F330单片机定时器中断初始化后立即进入中断问题

    stm32f103&gd32的usb虚拟串口,打印类printer组合设备

    stm32f103&gd32的usb虚拟串口+打印类printer组合设备@TOCstm32....
    发表于 12-02 16:06 741次 阅读
    stm32f103&gd32的usb虚拟串口,打印类printer组合设备

    GD32 之低功耗下的唤醒问题(一)

    GD32 省电模式有三种如下之前用过的EFM32 有4中低功耗模式(对比下来就知道EFM32在功耗方....
    发表于 12-02 15:51 503次 阅读
    GD32 之低功耗下的唤醒问题(一)

    用GD32替换正点原子STM32F103ZET6

    你是个成熟的工程师了,要学会偷偷用GD32换室友的STM32芯片
    发表于 12-02 15:06 342次 阅读
    用GD32替换正点原子STM32F103ZET6

    不得不谈的GD32xxxxRxTx【LQFP-64】评估板之适用于GD32F103/GD32F303/GD32F330

    背景介绍:2005年成立于北京, 目前在全球超1100名员工,2016年上海证券交易所成功上市 (S....
    发表于 12-02 14:36 224次 阅读
    不得不谈的GD32xxxxRxTx【LQFP-64】评估板之适用于GD32F103/GD32F303/GD32F330

    STM32/GD32/MM32配置接近替换型号列表

    灵动微是国内专注于MCU微控制器产品与应用方案的可靠供应商,目前已经完成数百余MCU微控制器产品的设....
    发表于 11-26 16:51 154次 阅读
    STM32/GD32/MM32配置接近替换型号列表

    GD32和STM32的区别

    一、前言GD32是国内开发的一款单片机,据说开发的人员是来自ST公司的,GD32也是以STM32作为....
    发表于 11-18 20:51 594次 阅读
    GD32和STM32的区别

    关于国产Cortex-M内核MCU替换国外厂家时需要注意的几点事项

    国产MCU的方案机会,最近几年随着国内大批MCU厂商的不断崛起,ARM Cortex-M市场已经不在....
    发表于 11-05 19:50 366次 阅读
    关于国产Cortex-M内核MCU替换国外厂家时需要注意的几点事项

    从零开始创建GD32F4系列单片机工程模板&移植涂鸦MCU-SDK

    从零开始创建GD32F4系列单片机工程模板&移植涂鸦MCU-SDK 兆易创新的GD32单片机在中国M....
    发表于 10-29 10:21 247次 阅读
    从零开始创建GD32F4系列单片机工程模板&移植涂鸦MCU-SDK

    RISCV-MCU启航篇之开发环境配置

    本文在RT-Thread版本裸板RV-MCU和FT2232调试器的硬件基础之上,针对SEGGER E....
    发表于 10-28 18:06 152次 阅读
    RISCV-MCU启航篇之开发环境配置

    关于Cortex-M内核MCU的国产方案及厂家说明

    背景:2020年疫情开始到现在2021年疫情得到有效防控,新冠疫情及其政治等多种因素的叠加效应,导致....
    发表于 10-28 10:50 208次 阅读
    关于Cortex-M内核MCU的国产方案及厂家说明

    国民技术32位MCU产品信息,PIN TO PIN ST GD

    tel:14706656775 微信同号 QQ:3182068817 邮箱:zw.liao@thx....
    发表于 10-26 13:51 148次 阅读
    国民技术32位MCU产品信息,PIN TO PIN ST GD

    信道编码发展历程及信道编码技术解析

    通信系统是为了将信源信息高效、可靠地传送到接收端。有扰通信信道的噪声会对传输信息产生干扰,从而可能降....
    的头像 电子设计 发表于 03-19 11:00 10961次 阅读
    信道编码发展历程及信道编码技术解析

    GD32竟也开始假货泛滥了?

    国产替代本来是一个好事,不过最近来看,国产也开始有假货。 网友imdx发帖表示,某宝买的“全新原....
    发表于 03-11 14:12 4231次 阅读

    基于GD32 MCU的电机驱动方案详解

    兆易创新 GD32 MCU 在电机驱动应用上,经过多年技术沉淀,在无刷电机和步进电机的应用中,形成自....
    发表于 07-03 16:43 5043次 阅读

    GD32大容量产品软件的移植注意事项

    本文档的主要内容详细介绍的是GD32大容量产品软件的移植注意事项。
    发表于 11-14 16:14 704次 阅读
    GD32大容量产品软件的移植注意事项

    零基础学习GD32 红外遥控器原理

    遥控器是一种无线发射装置,通过现代的数字编码技术,将按键信息进行编码,通过红外线二极管发射光波,光波....
    的头像 兆易创新科技 发表于 10-25 09:58 3338次 阅读

    GD32V系列RISC-V内核32位通用MCU怎么样?

    GD32VF103系列MCU采用了全新的基于开源指令集架构RISC-V的Bumblebee处理器内核....
    的头像 丫丫119 发表于 09-24 08:02 10690次 阅读

    GD32 创新解决方案加速即时配送行业的智能化变革

    以GD32 MCU的强劲动力加速城市骑行和即时配送行业的智能化发展步伐。
    发表于 05-13 16:16 1014次 阅读

    兆易创新GD32 MCU再获2019年“中国IC设计成就奖”多项殊荣!

    兆易创新GD32E230系列Cortex®-M23内核MCU荣获“年度最佳MCU”奖项,GD32 M....
    发表于 04-02 10:18 1833次 阅读

    聊一聊CRC算法的硬件电路实现:串行电路和并行电路

    一位串行输入的CRC电路实现方法很简单,每周期的组合逻辑链路简单延时短。它的缺点是输入位宽只有一位,....
    的头像 跟IC君一起学习集成电路 发表于 03-26 10:56 15503次 阅读
    聊一聊CRC算法的硬件电路实现:串行电路和并行电路

    兆易创新发布GD32E231系列MCU新品 推动后续工业化部署与全面普及

    GD32E231系列MCU采用LQFP48(7x7mm封装),提供了3个产品型号选择。并保持了与现有....
    的头像 西西 发表于 03-04 13:41 5987次 阅读

    带你了解什么是信道编码

    信道编码,也被叫做错控制编码,是目前现代通信当中的基础、地基。在这几十年当中,信道编码技术不断逼近香....
    发表于 11-15 10:03 10782次 阅读