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校验码生成原理相关推荐

  1. CRC校验码生成逻辑的实现原理详解——结合C语言和Verilog语言代码分析

    文章目录 前言 一.CRC校验码的计算 1.CRC模型 2.CRC计算 步骤1:输入数据与初始值模2加并左移 步骤2:被除数与多项式模2除 二.CRC校验码生成逻辑的C语言实现 1.实现代码 2.代码 ...

  2. 计算机组成原理偶校验编码设计,计算机组成原理校验码生成电路的设计.doc

    计算机组成原理校验码生成电路的设计 编 号:学 号: 9 课 程 设 计 教 学 院计算机学院课程名称计算机组成原理课程设计题 目校验码生成电路的设计专 业计算机科学与技术班 级计科一班姓 名陈建辉同 ...

  3. can协议crc计算_基于CAN总线的CRC校验码的原理与实现

    基于CAN总线的CRC校验码的原理与实现 王鹏 [摘 要]CAN总线又称为控制器局域网技术,属于工业现场总线,应用范围很广.CAN系统中通常 采用反馈重发机制对通信过程进行差错控制.当接收端反馈给发送 ...

  4. php crc16校验算法,PHP串口通信中计算crc16校验码

    最近使用PHP开发串口通信业务,在发送485Modbus命令时,基本都要计算CRC16校验码.网上搜索了很多文章,很多都计算的不对.本文记录搜索到的正确的计算方法. 代码如下:/** * crc16计 ...

  5. PHP CRC16 校验码的算法怎么使用

    PHP CRC16 校验码的算法如何使用 最近用到CRC16, 我现在就是要把 010301180001 算出CRC16的校验码,通过其他工具,可以得到 校验码是 05F1 最后完整的代码就是 010 ...

  6. 聚合支付二维码生成原理

    聚合支付二维码生成原理 聚合支付平台提供平台支付URL,生成统一的支付二维码.当消费者根据二维码扫描时,聚合支付平台根据扫描者浏览器类型判断支付类型,并提交参数给聚合支付平台支付处理接口处理.平台支付 ...

  7. 十六进制数据的CRC16校验码自写软件

    关于十六进制数据的CRC16校验码自写软件安装包 十六进制数据的CRC16校验码(0XA001)自写软件 链接与图片 全部代码 十六进制数据的CRC16校验码(0XA001)自写软件 这里分享一个自己 ...

  8. QR码生成原理-QR Code(ISO 18004)编码方式

    QR码生成原理-QR Code(ISO 18004)编码方式 一.什么是QR码 QR码属于矩阵式二维码中的一个种类,由DENSO(日本电装)公司开发,由JIS和ISO将其标准化.QR码的样子其实在很多 ...

  9. python crc-16 crc-16校验码 crc-16校验算法 ppp(MAC)帧检验序列FCS

    python crc-16 crc-16校验码 crc-16校验算法 ppp(MAC)帧检验序列FCS 想弄明白这里要看多几遍,配合下面的例子能更快理解. 第一.CRC-16校验码计算方法: 常用查表 ...

最新文章

  1. 清华姚班校友陈丹琦斩获2022斯隆奖!「诺奖风向标」27位华人学者入选
  2. 扩展虚拟机Ubuntu磁盘容量空间
  3. 树莓派4烧录系统后黑屏_树莓派4B初次使用--系统安装|配置
  4. Eclipse4.8.0无法打开 Eclipse MarketPlace
  5. python ju_如何使用jupy设置python路径
  6. 作者:陈振冲(1959-),男,博士,香港理工大学学务长,电子计算学系教授...
  7. SQLSERVER压缩数据文件的用处有多大
  8. 参加管理课程所获的 之一
  9. python 安装matlab,python – Anaconda在Linux上安装Matlab Engine
  10. Simulink模型的仿真
  11. 20.SPDY_QUIC_HTTP2_HTTP3
  12. STC8单片机驱动ADS1256多路AD采集
  13. 加密的PDF文件如何解密?教你使用手机就能解密的方法
  14. Chui-Wen Chius Note: C++ 使用 JScript 和 VBScript
  15. STM32+HC-05蓝牙模块学习与使用
  16. ArcGIS PRO基础教程(二)
  17. teamview 解除限制使用时间方法(判断长时间使用 会限制使用时间)
  18. 利用ESP8266+OLED(I2C)打造智能时钟(网络校时+实时天气+天气预报)
  19. 在MarkDown中插入本地图片
  20. python股票数据分析实例_Python之简单股票数据分析

热门文章

  1. python不可以处理pdf文件_Python处理PDF文件-简译与总结
  2. MFC响应键盘方向键消息
  3. 线上使用雪花算法生成id重复问题
  4. Android Studio 添加下划线
  5. matlab编程常见错误
  6. opencv学习笔记之图像尺寸、翻转与仿射变换
  7. 计算机管理中其它设备问号,我的电脑设备管理器里有一其它设置上是问号怎么回事可以解决吗...
  8. 晚上佩戴8小时白天可暂时恢复清晰视力!OK镜是怎么做到的?
  9. word文档删除表格后的空白页
  10. 如何用3Dmax游戏角色建模?看完你就会了!