CRC16校验总结

CRC16校验学习总结 1、CRC16校验使用说明 CRC校验原理在我的上篇博客CRC校验学习总结中有详细的讲解,可以参考了解,下面直接讲解常用的CRC16校验使用。 根据Modbus协议,常规485通讯的信息发送形式如下:   地址 功能码 数据信息 校验码   1byte 1byte nbyte 2byte   CRC校验是前面几段数据内容的校验值,为一个16位数据,发送时,低8位... 阅读详情

    CRC32太大了,CRC8觉得强度不够,折中选择CRC16校验.

    线性编码理论。在发送端传送的K位二进制数据,以一定规则产生一个校验监督码(或者叫监督矩阵)r位,并负载信息后,构成一个新的二进制码序列共(K+R)位。最后发送出去。在接收端根据信息吗和CRC码禁言,是否出错。

  CRC16监督式(美国标准):G(X)=X^16+X^15+X2+1

 CRC16监督式(欧洲标准):G(X)=X16+X12+X5+1

一般多数采用CCITT推荐的欧标格式:10001000000100001 

16位的CRC码产生的规则是先把要发送的信息元左移16位(乘以2^16),再除以监督式,最后得到的是CRC码。再把CRC码附在信息元后面,一起发送出去。

    B(X).2^16/G(X)=Q(X)+R(X)/G(X)

  Q(X)是商,R(X)是余数。模2加减法就是不带进位借位的加减法相当异或,乘除法和普通数学乘除法一致。例如:

   信息码:1011,监督元:G(X)X^8+X^5+X^4+1   CRC8校验  下面是除法运算:

 1011 0000 0000

1001 1000 1

    10 1000 1000

    10 0110 001

         11101010

所以CRC 8 监督元:11101010

发送的K+r位码:1011 11101010

接收端接收到的信息码除以监督元,如果R(X)为0,说明传输无误。

 假设接收到跟发送一致。验证

 1011 1110 1010

1001 1000 1

    10 0110 0010

    10 0110 001

                      0

所以接收正确无误

实际通信中发送数据是多字节,比如发送地址、控制、信息、校验。所以必须按多字节去计算CRC码。

B(X)=Bn(X)*2^8n+Bn-1(X)*2^8(n-1)+....+B1(X)*2^8+B0(X)

CRC16时候,上式两端还要乘以2^16,即左移16位。把繁琐的计算过程省略,其实只要记住本 字节的CRC码等于上一字节的余式的CRC码的低 8位左移8位后,再加上上一字节CRC右移8位(也就是取高8位)和本字节之和(异或)所求的的CRC码 。 但是我们不可能这样每部就去计算,单片机是承受 不了的,而且占据大量任务,给实时通信打折扣。所以一般我们会把8位二进制序列数从0~255的CRC全部计算出来,放在表里,扔到EEPROM或者 FLASH中固存。

unsigned int crc_table [256]={               /* CRC 余式表 */
    0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
    0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
    0x1231, 0x0210, 0x3273, 0x2252, 0x52b

C# CRC16校验 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace quiXmartComm {     ///     /// CRC校验     ///     public cl 阅读详情

相关推荐

CRC校验python实现--计算crc16校验数据的校验码

CRC在线计算: Sunshine’s Homepage - Online CRC Calculator Javascript http://www.sunshine2k.de/coding/javascript/crc/crc_js.html crcmod.predefined – CRC calculation using predefined algorithms — crcmod v1.7 documentation http://crcmod.sourceforge.net/crcmod.pre.

pikachu_beta的博客 6459

准确可靠的CRC校验计算程序,包含CRC16 CRC32等多种校验 By 清宇 xyz9981

准确可靠的CRC校验计算程序,包含CRC16 CRC32等多种校验 由wlyman根据别人的源程序整理制作 本人见过很多CRC计算工具,但都不准确,该程序是非常准确的一个 使用方法:放在C盘用户名目录下面,运行cmd,然后执行crc By 清宇 http://xyz9981.com(被墙了) http://xyz9981.info

16位的CRC循环校验

这是我用C#做的一个CRC循环冗余校验算法,16位的。

CRC计算工具项目一个基于C开发的小型程序专用于计算多种常见CRC算法的校验值支持CRC-8CRC-16CRC-32等标准算法提供CRC-CCITTCRC-XMOD.zip

CRC计算工具项目一个基于C开发的小型程序专用于计算多种常见CRC算法的校验值支持CRC-8CRC-16CRC-32等标准算法提供CRC-CCITTCRC-XMOD.zip

在没有实验数据的情况下,如何高效快速发表高影响因子论文

最新基于Citespace、vosviewer、R语言的文献计量学可视化分析技术及全流程文献可视化SCI论文高效写作方法

glldxh的博客 371

若依前后端分离版集成nacos

服务动态配置与服务注册发现根据公司要求,需要将项目集成到nacos中,当前项目是基于若依前后端分离版开发的,若依的版本为3.8.3,若依框架中整合的springBoot版本为2.5.14。Nacos核心提供两个功能:服务注册与发现,动态配置管理。

NDF923的专栏 4645

手把手教会你用yolov8从环境配置到检测任务实战

做本文章前,我浏览过很多网上资料,我发现他们总是写的含糊不清,而且实际操作起来就会有各种各样的问题,要么就是根本不适合一些小白,所以我在这里写一篇完全针对小白的yolo从入门到实战。看完本文章后大家都可以实现下图效果,数字识别是一种比较简单的检测任务,其他识别任务学完本例也能够一通百通,大家边做边学,更好的体会yolo的神奇之处。

KevenDuan的博客 2871

yolov26改进 | Neck篇 | 利用Gold-YOLO改进yolov26对小目标检测能力(全网独家首发)

本文介绍利用Gold-YOLO的Neck改进YOLOv26,通过信息聚集—分发机制GD,先全局汇聚不同层级特征,再将融合后的全局信息重新注入各尺度分支,增强浅层细节与深层语义之间的交互,减少传统Neck逐层传递造成的信息损失。该结构虽然融合路径更长,但能够在不过度增加延迟的前提下提升多尺度目标检测能力,尤其适合大小目标并存、尺度变化明显和复杂背景场景。本文将讲解GD机制、Neck替换、模块注册与配置方法,并提供完整代码、配置文件及Codex修改思路,方便直接复现、实验对比和二次创新。

Snu77的博客 293

[AI] 本地部署 Dify 遇到 Internal Error?一文彻底解决密码不一致引发的问题

摘要:Dify本地部署常见InternalError错误主要由配置残留或密码不一致导致,特别是修改.env文件后未同步清除数据库记录。彻底解决方案包括:1)清理Docker数据;2)删除旧配置和数据库;3)还原源代码;4)重建.env文件;5)重新初始化部署。关键提醒:记录部署路径、备份.env文件并妥善保存密码。该错误本质是配置冲突,最有效方法是完全重置而非调试,保持清晰的部署管理可避免多数InternalError问题。(149字)

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 435

1.5 RAG技术栈全景图:LangChain vs LlamaIndex深度对比,选错框架后悔3年,一文帮你选对

摘要:LangChain与LlamaIndex框架深度对比 本文全面对比了RAG领域两大主流框架LangChain和LlamaIndex。LangChain是通用AI应用框架,具有模块化设计和丰富生态;LlamaIndex专为RAG优化,提供开箱即用解决方案。功能对比显示,LangChain在文档加载和Agent支持方面更强,而LlamaIndex在检索策略、向量存储和多模态处理上表现更优。代码示例展示了二者实现RAG的不同方式:LangChain需要更多配置但灵活性高,LlamaIndex则提供更简洁的A

yonggeit的博客 3239

从 OPEN CURSOR 到 SELECT INTO TABLE:把 ABAP 数据读取的底层机制与性能差异讲透

ABAP数据库访问性能优化关键点 摘要:ABAP程序性能的核心在于数据读取方式的选择。本文分析了三种常见数据库访问方式的技术原理:显式游标(CURSOR)、SELECT-ENDSELECT循环和SELECT INTO TABLE。重点揭示了数据从数据库到应用服务器的传输机制,包括OPEN/REOPEN与FETCH操作、Array Fetch批量传输原理以及SAP游标缓存机制。通过VBAK表的性能测试数据对比,证明了不同场景下最优访问方式的选择依据:大数据量时显式游标性能优势明显,而SELECT INTO T

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 172

17、非线性动力学特征在情感语音与食管语音分析中的应用

本文探讨了非线性动力学特征在情感语音与食管语音分析中的应用。在情感语音识别中,选取Hurst指数、相关维数和Lempel-Ziv复杂度等混沌特征结合统计量,通过神经网络实现了中性、恐惧和愤怒情感的高效分类,全局成功率高达93.78%。在食管语音分析中,针对其缺乏明显周期性的问题,提出基于改进自相关方法的基频测量流程,包括包络计算、平滑与峰值细化,并对基频的物理意义提出思考。研究展示了两类语音在特征表现与技术方法上的差异,展望了其在客服、安全、医疗康复等领域的应用前景,并指出了未来在特征拓展、算法优化和发声机

sunny的博客 76

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: Wince文件关联
下一篇: 界面与后台工作线程分离的方案
dadahacker
博客等级 码龄20年 78粉丝 120原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值