当前位置:网站首页>CRC_8 计算方法及代码实现
CRC_8 计算方法及代码实现
2022-08-05 21:12:00 【qq_755682240】
1、引言
(1). CRC寄存器初始值为 0x00。
(2). CRC-8 的模型为:X8+X2+X1+1,由于8进制数只能0~7位,所以舍去X8位,最后得出多项式:0x07H( 0000 0111 B)。
2、 计算步骤
(1). 预置 8 位寄存器为十六进制 0x00(即全为 0) ,称此寄存器为 CRC 寄存器;
(2). 把第一个 8 位数据与 8 位 CRC 寄存器的相异或,把结果放于 CRC 寄存器;
(3). 检测相异或后的CRC寄存器的最高位(第7位),若最高位为1,CRC寄存器先左移1位,再与多项式0x07H进行异或;若为0,则CRC寄存器左移1位,无需与多项式进行异或。
(4). 重复步骤 3 ,直到右移 8 次,这样整个 8 位数据全部进行了处理;
(5). 重复步骤 2 到步骤 4,进行下一个 8 位数据的处理;
(6). 最后得到的 CRC 寄存器即为 CRC 校验码。
附参考:
数据(16进制):01 03 61 00 00 02 CRC校验:C2
3、代码的实现(计算法)
/* * 函数名 :CRC8 * 描述 : 计算CRC8 * 输入 : puchMsg---数据地址,usDataLen---数据长度 * 输出 : 校验值 */
uint8_t CRC_8(uint8_t *puchMsg, uint8_t usDataLen){
uint8_t uCRC = 0x00;//CRC寄存器
for(uint8_t num=0;num<usDataLen;num++){
uCRC = (*puchMsg++)^uCRC;//把数据与8位的CRC寄存器的8位相异或,结果存放于CRC寄存器。
for(uint8_t x=0;x<8;x++){
//循环8次
if(uCRC&0x80){
//判断最低位为:“1”
uCRC = uCRC<<1; //先左移
uCRC = uCRC^0x07; //再与多项式0x07异或
}else{
//判断最低位为:“0”
uCRC = uCRC<<1; //右移
}
}
}
return uCRC;//返回CRC校验值
}
int main(void) {
uint8_t x[]={
0x01 ,0x03 ,0x61 ,0x00 ,0x00 ,0x02};
while(1){
uint8_t wCRC_8 = CRC_8(x,sizeof(x)); //获取CRC8校验值
//输出校验值wCRC_8 即可
}
}
4、在线CRC校验网址
网址: http://www.ip33.com/crc.html.
附参考:
数据(16进制):01 03 61 00 00 02 ===> CRC校验值:C2
边栏推荐
- 在linux下(CentOS7中)配置MySQL5.7数据库,且实现远程访问
- 使用Compose实现基于MVI架构、retrofit2、支持 glance 小部件的TODO应用
- dart learning record - Updating
- Information System Project Manager---Chapter 11 Project Risk Management
- ctfshow 反序列化篇(下)
- PHP基础笔记-NO.3
- uni-app - 在纯 JS 文件中调用自定义弹框组件 / 封装全局 API 调用弹框组件(解决小程序、APP 无法使用 document.body.appendChild 插入组件节点)适配全端
- 什么是MySQL表分区?
- 【FreeBSD】【panabit】ip日常
- Chery Arrizo 8 will be officially launched on September 26, and the product lineup will be expanded
猜你喜欢
随机推荐
项目踩坑—跨域问题
C语言 const详解
3D游戏建模必备技巧一人物模型贴图布线!(99%小白收藏)
Technology Insider | StarRocks Community Champion and Alibaba Cloud technical experts interpret the implementation of Optimizer
【apt time reached】error while loading shared libraries:libxxxx.so.xx.xx,共享库文件找不到,解决办法
String concatenation
【opencv图像处理】--4. 低、高通滤波,卷积和各种算子
arm设备上的嵌入式开发编译环境搭建
[Advertising E-commerce] Which are the top ten advertising companies in the world?
PHP基础笔记-NO.3
Openstack 虚拟机云盘扩容
电脑电源灯一闪一闪开不了机怎么办
PID 控制理论
电脑系统安装Word图标变成白色怎么恢复?
Chery Arrizo 8 will be officially launched on September 26, and the product lineup will be expanded
Shell(5)数组
The language of CGO
File/data synchronization record between new and old computers
使用compose实现康威生命游戏之二:我是如何将计算速度缩减将近十倍的
phpstyle安装管理mysql









