CRC16校验码生成原理
CRC16-Modbus
生成多项式为CRC-16 : X16 + X15 + X2 + 1 对应 0x8005
移位寄存器初始化值为0xFFFF
算法说明:
1) 设置CRC寄存器初始值0xFFFF
2) 将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器
3) 检查当前LSB数值,记录标志位FLAG
4) CRC寄存器右移一位,MSB补零
5) 若FLAG为1,CRC寄存器与多项式码相异或
6) 重复第3至第5步直到8次移位全部完成,一个8-bit数据处理完毕
7) 重复第2至第6步直到所有数据全部处理完成
8) 最终CRC寄存器的内容即为CRC值
举例说明:
十六进制0x00 => 40BF
初始:1111 1111 1111 1111
移位:0111 1111 1111 1111
异或:1010 0000 0000 0001 A001
1101 1111 1111 1110
移位:0110 1111 1111 1111
移位:0011 0111 1111 1111
异或:1010 0000 0000 0001
1001 0111 1111 1110
移位:0100 1011 1111 1111
移位:0010 0101 1111 1111
1010 0000 0000 0001
1000 0101 1111 1110
移位:0100 0010 1111 1111
移位:0010 0001 0111 1111
1010 0000 0000 0001
异或:1000 0001 0111 1110
移位:0100 0000 1011 1111
结果:40BF
十六进制 0x01 => 807E
初始:1111 1111 1111 1111
输入: 0000 0001
异或:1111 1111 1111 1110
移位:0111 1111 1111 1111
移位:0011 1111 1111 1111
1010 0000 0000 0001
异或:1001 1111 1111 1110
移位:0100 1111 1111 1111
移位:0010 0111 1111 1111
1010 0000 0000 0001
异或:1000 0111 1111 1110
移位:0100 0011 1111 1111
移位:0010 0001 1111 1111
1010 0000 0000 0001
异或:1000 0001 1111 1110
移位:0100 0000 1111 1111
移位:0010 0000 0111 1111
1010 0000 0000 0001
异或:1000 0000 0111 1110
结果:807E
CRC16校验码生成原理相关推荐
- CRC校验码生成逻辑的实现原理详解——结合C语言和Verilog语言代码分析
文章目录 前言 一.CRC校验码的计算 1.CRC模型 2.CRC计算 步骤1:输入数据与初始值模2加并左移 步骤2:被除数与多项式模2除 二.CRC校验码生成逻辑的C语言实现 1.实现代码 2.代码 ...
- 计算机组成原理偶校验编码设计,计算机组成原理校验码生成电路的设计.doc
计算机组成原理校验码生成电路的设计 编 号:学 号: 9 课 程 设 计 教 学 院计算机学院课程名称计算机组成原理课程设计题 目校验码生成电路的设计专 业计算机科学与技术班 级计科一班姓 名陈建辉同 ...
- can协议crc计算_基于CAN总线的CRC校验码的原理与实现
基于CAN总线的CRC校验码的原理与实现 王鹏 [摘 要]CAN总线又称为控制器局域网技术,属于工业现场总线,应用范围很广.CAN系统中通常 采用反馈重发机制对通信过程进行差错控制.当接收端反馈给发送 ...
- php crc16校验算法,PHP串口通信中计算crc16校验码
最近使用PHP开发串口通信业务,在发送485Modbus命令时,基本都要计算CRC16校验码.网上搜索了很多文章,很多都计算的不对.本文记录搜索到的正确的计算方法. 代码如下:/** * crc16计 ...
- PHP CRC16 校验码的算法怎么使用
PHP CRC16 校验码的算法如何使用 最近用到CRC16, 我现在就是要把 010301180001 算出CRC16的校验码,通过其他工具,可以得到 校验码是 05F1 最后完整的代码就是 010 ...
- 聚合支付二维码生成原理
聚合支付二维码生成原理 聚合支付平台提供平台支付URL,生成统一的支付二维码.当消费者根据二维码扫描时,聚合支付平台根据扫描者浏览器类型判断支付类型,并提交参数给聚合支付平台支付处理接口处理.平台支付 ...
- 十六进制数据的CRC16校验码自写软件
关于十六进制数据的CRC16校验码自写软件安装包 十六进制数据的CRC16校验码(0XA001)自写软件 链接与图片 全部代码 十六进制数据的CRC16校验码(0XA001)自写软件 这里分享一个自己 ...
- QR码生成原理-QR Code(ISO 18004)编码方式
QR码生成原理-QR Code(ISO 18004)编码方式 一.什么是QR码 QR码属于矩阵式二维码中的一个种类,由DENSO(日本电装)公司开发,由JIS和ISO将其标准化.QR码的样子其实在很多 ...
- python crc-16 crc-16校验码 crc-16校验算法 ppp(MAC)帧检验序列FCS
python crc-16 crc-16校验码 crc-16校验算法 ppp(MAC)帧检验序列FCS 想弄明白这里要看多几遍,配合下面的例子能更快理解. 第一.CRC-16校验码计算方法: 常用查表 ...
最新文章
- 清华姚班校友陈丹琦斩获2022斯隆奖!「诺奖风向标」27位华人学者入选
- 扩展虚拟机Ubuntu磁盘容量空间
- 树莓派4烧录系统后黑屏_树莓派4B初次使用--系统安装|配置
- Eclipse4.8.0无法打开 Eclipse MarketPlace
- python ju_如何使用jupy设置python路径
- 作者:陈振冲(1959-),男,博士,香港理工大学学务长,电子计算学系教授...
- SQLSERVER压缩数据文件的用处有多大
- 参加管理课程所获的 之一
- python 安装matlab,python – Anaconda在Linux上安装Matlab Engine
- Simulink模型的仿真
- 20.SPDY_QUIC_HTTP2_HTTP3
- STC8单片机驱动ADS1256多路AD采集
- 加密的PDF文件如何解密?教你使用手机就能解密的方法
- Chui-Wen Chius Note: C++ 使用 JScript 和 VBScript
- STM32+HC-05蓝牙模块学习与使用
- ArcGIS PRO基础教程(二)
- teamview 解除限制使用时间方法(判断长时间使用 会限制使用时间)
- 利用ESP8266+OLED(I2C)打造智能时钟(网络校时+实时天气+天气预报)
- 在MarkDown中插入本地图片
- python股票数据分析实例_Python之简单股票数据分析