GD32的CRC(循环冗余校验)计算单元使用一个固定的多项式发生器从一个 32 位的数据字中产生 CRC 码。
在众多的应用中,基于 CRC 的技术还常用来验证数据传输或存储的完整性。

CRC主要特性
1> 32位数据输入/输出寄存器。对于32位的输入数据,从数据输入到得出计算结果,需要4个AHB的时钟周期;
2> 配有与计算无关的独立8位寄存器,可以供其他任何外设使用;
3> 使用 CRC-32 (以太网)多项式: 0x4C11DB7
X^32 + X^26 + X^23 + X^22 + X^16 + X^12 + X^11 + X^10 +X^8 + X^7 + X^5 + X^4 + X^2+ X +1
该32位CRC多项式与以太网CRC计算多项式相同。

输入/输出数据的反转
GD32F1x0/GD32F2x0/GD32E23x支持输入数据和输出数据的反转(默认设置是不反转)。
1.对输入数据的位反转操作可以设置为按字节/半字/字为单元进行操作。
例如输入数据为 0x1A2B3C4D
每个字节内逐位反转,结果是 0x58D43CB2
每半字内逐位反转,结果是 0xD458B23C
每个字长内逐位反转,结果是 0xB23CD458
2.对输出数据的位反转
例如输出数据为 0x11223344,反转后为 0x22CC4488

CRC程序配置
1> 以GD32F10x为例,配置代码如下:

因GD32使用为CRC-32 (以太网)多项式,和标准的CRC-32运算过程不同。
标准的CRC-32运算采用以下运行方式:首先需要将每次CRC输入的数据反转,然后送给硬件CRC(GD32单片机完成该步骤),进行CRC32/MPEG-2运算,然后将最后运算的结果进行反转,最后再将反转后的数据和0xFFFFFFFF进行异或,才是标准CRC运算的结果。
在CRC在线计算网(http://www.ip33.com/crc.html)可选择CRC32/MPEG-2类型方式:输入数据不反转,进行CRC运算后数据也不反转,最后将数据和0x0000000进行异或可以得到运算结果。

2> 因网页工具不支持大量数据/Bin文件的CRC计算,则需要使用离线工具:CRC计算工具V3.3.0-64.exe,具体界面如下图所示。

需要注意:keil所生成的bin文件,一般按照小端模式存储(低字节在前,高字节在后),然而使用CRC工具计算其默认是大端模式,且更改面板上的高低字节在前无用,因此需要在keil里将数据转换为大端模式,再进行CRC校验。
下面以接收的8位数据的数组为例,具体配置代码如下:

GD32使用CRC的操作方法相关推荐

  1. 《嵌入式 – GD32开发实战指南》第18章 CRC

    开发环境: MDK:Keil 5.30 开发板:GD32F207I-EVAL MCU:GD32F207IK 18.1 CRC的校验原理 循环冗余校验(CRC)计算单元是根据固定的生成多项式得到任一32 ...

  2. linux扩容根目录空间_Linux系统扩容根目录磁盘空间的操作方法

    Linux系统扩容根目录磁盘空间的操作方法 一.使用背景 Linux根目录磁盘空间不够用了,当修改了虚拟机模版增加磁盘大小或者插入了一块新硬盘,但是发现系统里的大小还是没改变. 产生的原因是没有给磁盘 ...

  3. 《嵌入式 – GD32开发实战指南》第3章 GPIO流水灯的前世今生

    开发环境: MDK:Keil 5.30 MCU:GD32F207IK 上一章通过控制GPIO的高低电平实现了流水灯,但只是告诉了大家怎么做,如何实现流水灯,本文将深入剖析的GPIO流水灯的前生今世,深 ...

  4. GD32串口通信注意事项

    GD32串口通信 虽说GD32与stm32采用同样的ARM® Cortex®-M3内核,而且GD32很大程度上可兼容stm32的程序,但是也存在着一些差异:所以为了使用上减少出错,使用GD32时尽量采 ...

  5. 【IAP】STM32和GD32的IAP原理分析、教程、资料整理

    文章目录 前言 一.什么是IAP? 二.IAP执行原理(以STM32F10X为例) 2.1 STM32F10X的储存器映像 2.2 正常上电的运行流程 2.3 加入IAP后的Bootloader运行流 ...

  6. GD32 SPI0 REMAP设置

    参考文档 GD32 中使用PA15 PB3 PB4 PB5管脚做为SPI0 GD32使用SPI0都是Alternate管脚,但是管脚不够就要remap 最主要的是下面两行代码,先把默认JTAG功能关闭 ...

  7. GD32实战20__Boot综合实验

    知识点 设计并实现一个boot,需要用到如下知识点, 1. 体会boot的作用2. 新增闪存控制器学习3. 串口知识复习4. FLASH&SPI知识复习5. 状态机知识点复习6. 初识上位机软 ...

  8. FPGA之CRC校验

    CRC校验原理 求解CRC-8的编码电路和CRC校验的原理 G(X) = X8+H7*X7+H6*X6+H5*X5+H4*X4+H3*X3+H2*X2+H1*X1+X0 生成多项式 G(X)=9'b1 ...

  9. 《嵌入式 – GD32开发实战指南》第21章 I2C

    开发环境: MDK:Keil 5.30 开发板:GD32F207I-EVAL MCU:GD32F207IK 21.1 I2C工作原理 21.1.1 I2C串行总线概述 I2C总线是PHLIPS公司推出 ...

最新文章

  1. web前端干货:详细了解JS前端开发框架都有哪些
  2. 黄牛凭什么抢走我们的票?
  3. three.js 几何体-组合网格_3dmax利用优化和多边形倒角制作饰品组合1
  4. spark on yarn简单部署
  5. 笔记本电脑键盘切换_全球首款折叠屏笔记本电脑ThinkPad X1 Fold:5G高速互联拥抱PC场景融合时代...
  6. -webkit-gradient webkit内核浏览器的Linear Gradients (线性渐变) -Css3演示
  7. android 指针是什么意思,Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析(3)...
  8. dojo——AMD(二、AMD中class内部成员函数相互调用实现)
  9. CDH-CM资源下载
  10. RTl8188EUS设置ap模式
  11. 面试官:Glide 是如何加载 GIF 动图的?
  12. 《当程序员的那些狗日日子》六
  13. 计量检定与计量校准证书的区别
  14. 共享打印机服务器脱机状态,共享打印机脱机无法打印
  15. 010-flutter dart代码后台执行,没有界面的情况下
  16. 计算机专业硕士北欧,北欧哪个国家计算机专业比较好
  17. python 利用Scipy计算person 和spearman相关系数
  18. 蓝桥杯 算法提高 我们的征途是星辰大海
  19. 吴军长文讲解算力:全球算力竞争中我们要做的三件事
  20. 2021年低压电工模拟试题及低压电工作业考试题库

热门文章

  1. BTS测试实验室--远程文件包含和服务器端注入攻略
  2. 腾讯官方视频播放器 QQ影音 for Mac 1.0.4
  3. Python数据类型之字符串类型
  4. Kaggle竞赛Corporación Favorita Grocery Sales Forecasting方案总结
  5. 磁盘管理---RAID磁盘阵列(重点容错能力)软RAID的实现
  6. 05、HC-05蓝牙通讯模块
  7. 中科大研究生院科学岛分院计算机,中国科学技术大学研究生院科学岛分院是什么鬼,有人分析下吗...
  8. ROS2学习笔记(十)-- ROS2 launch启动文件
  9. XDOJ.70 C语言 Z字形扫描
  10. 雷火豊 (易經大意 韓長庚)