GD32使用CRC的操作方法
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的操作方法相关推荐
- 《嵌入式 – GD32开发实战指南》第18章 CRC
开发环境: MDK:Keil 5.30 开发板:GD32F207I-EVAL MCU:GD32F207IK 18.1 CRC的校验原理 循环冗余校验(CRC)计算单元是根据固定的生成多项式得到任一32 ...
- linux扩容根目录空间_Linux系统扩容根目录磁盘空间的操作方法
Linux系统扩容根目录磁盘空间的操作方法 一.使用背景 Linux根目录磁盘空间不够用了,当修改了虚拟机模版增加磁盘大小或者插入了一块新硬盘,但是发现系统里的大小还是没改变. 产生的原因是没有给磁盘 ...
- 《嵌入式 – GD32开发实战指南》第3章 GPIO流水灯的前世今生
开发环境: MDK:Keil 5.30 MCU:GD32F207IK 上一章通过控制GPIO的高低电平实现了流水灯,但只是告诉了大家怎么做,如何实现流水灯,本文将深入剖析的GPIO流水灯的前生今世,深 ...
- GD32串口通信注意事项
GD32串口通信 虽说GD32与stm32采用同样的ARM® Cortex®-M3内核,而且GD32很大程度上可兼容stm32的程序,但是也存在着一些差异:所以为了使用上减少出错,使用GD32时尽量采 ...
- 【IAP】STM32和GD32的IAP原理分析、教程、资料整理
文章目录 前言 一.什么是IAP? 二.IAP执行原理(以STM32F10X为例) 2.1 STM32F10X的储存器映像 2.2 正常上电的运行流程 2.3 加入IAP后的Bootloader运行流 ...
- GD32 SPI0 REMAP设置
参考文档 GD32 中使用PA15 PB3 PB4 PB5管脚做为SPI0 GD32使用SPI0都是Alternate管脚,但是管脚不够就要remap 最主要的是下面两行代码,先把默认JTAG功能关闭 ...
- GD32实战20__Boot综合实验
知识点 设计并实现一个boot,需要用到如下知识点, 1. 体会boot的作用2. 新增闪存控制器学习3. 串口知识复习4. FLASH&SPI知识复习5. 状态机知识点复习6. 初识上位机软 ...
- 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 ...
- 《嵌入式 – GD32开发实战指南》第21章 I2C
开发环境: MDK:Keil 5.30 开发板:GD32F207I-EVAL MCU:GD32F207IK 21.1 I2C工作原理 21.1.1 I2C串行总线概述 I2C总线是PHLIPS公司推出 ...
最新文章
- web前端干货:详细了解JS前端开发框架都有哪些
- 黄牛凭什么抢走我们的票?
- three.js 几何体-组合网格_3dmax利用优化和多边形倒角制作饰品组合1
- spark on yarn简单部署
- 笔记本电脑键盘切换_全球首款折叠屏笔记本电脑ThinkPad X1 Fold:5G高速互联拥抱PC场景融合时代...
- -webkit-gradient webkit内核浏览器的Linear Gradients (线性渐变) -Css3演示
- android 指针是什么意思,Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析(3)...
- dojo——AMD(二、AMD中class内部成员函数相互调用实现)
- CDH-CM资源下载
- RTl8188EUS设置ap模式
- 面试官:Glide 是如何加载 GIF 动图的?
- 《当程序员的那些狗日日子》六
- 计量检定与计量校准证书的区别
- 共享打印机服务器脱机状态,共享打印机脱机无法打印
- 010-flutter dart代码后台执行,没有界面的情况下
- 计算机专业硕士北欧,北欧哪个国家计算机专业比较好
- python 利用Scipy计算person 和spearman相关系数
- 蓝桥杯 算法提高 我们的征途是星辰大海
- 吴军长文讲解算力:全球算力竞争中我们要做的三件事
- 2021年低压电工模拟试题及低压电工作业考试题库
热门文章
- BTS测试实验室--远程文件包含和服务器端注入攻略
- 腾讯官方视频播放器 QQ影音 for Mac 1.0.4
- Python数据类型之字符串类型
- Kaggle竞赛Corporación Favorita Grocery Sales Forecasting方案总结
- 磁盘管理---RAID磁盘阵列(重点容错能力)软RAID的实现
- 05、HC-05蓝牙通讯模块
- 中科大研究生院科学岛分院计算机,中国科学技术大学研究生院科学岛分院是什么鬼,有人分析下吗...
- ROS2学习笔记(十)-- ROS2 launch启动文件
- XDOJ.70 C语言 Z字形扫描
- 雷火豊 (易經大意 韓長庚)