0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

累加和校验算法的实现

Q4MP_gh_c472c21 来源:嵌入式ARM 作者:嵌入式ARM 2021-03-04 15:57 次阅读

前言

因为外界总会对电路存在或多或少的干扰,对于数字信号,很可能导致传输的数据出现千差万别。

对于很多需要传输数据的场合,尤其是一些数据可能会影响一些硬件的动作(诸如嵌入式的一些设备、机器人等),错误的数据可能会带来一些隐性风险,想想都可怕。

由于本人是嵌入式相关领域的,平时玩的都是单片机,当然单片机的性能千差万别,不过很多的性能都只能说是勉强够用,毕竟成本考虑。

所以今天的校验算法,比较简单,但是有效,尤其是一些性能一般的硬件。

说道今日主角:累加和校验算法,又名CheckSum算法。至于出处,这里就不考究了。

累加和校验算法的实现

发送方:

对要数据累加,得到一个数据和,对和求反,即得到我们的校验值。然后把要发的数据和这个校验值一起发送给接收方。

接收方:

对接收的数据(包括校验和)进行累加,然后加1,如果得到0,那么说明数据没有出现传输错误。

注意,此处发送方和接收方用于保存累加结果的类型一定要一致,否则加1就无法实现溢出从而无法得到0,校验就会无效。

还是举个例子:

发送方:要发送0xA8,0x50,我们使用unsigned char(8位)来保存累加和,即为0xF8(0b11111000),取反得到校验和为0x07(0b00000111)。然后将这三个数据发送出去。

接收方:如果接收正确,这三个数据的累加和就是(0b11111111),此时加1,则得到的结果为0(实际得到的应该是0b100000000,但是由于是使用unsigned char(8位)来保存累加和,所以高位被截取掉,只剩下了低八位的8个0).

由上面的例子,我们可以知道算法的目的是:使累加和和校验值相加得到一个二进制下每一位都是1的结果,这个结果很明显很好处理,这种算法实现起来也很简单,下面给出C语言的代码示例。

发送方:以下是如何得到校验值的代码,结果就是我们想要的校验值。

接收方:输入已包含发送发发来的校验值,如果函数返回的值如果是0,说明数据正确。

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4983

    文章

    18291

    浏览量

    288538
  • 累加
    +关注

    关注

    0

    文章

    6

    浏览量

    6776
  • 校验算法
    +关注

    关注

    0

    文章

    5

    浏览量

    6593

原文标题:累加和校验算法在嵌入式中的应用~

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    浅析MCU通信、存储常用的简单校验算法

    UART有一个奇偶校验,CAN通信有CRC校验。Modbus、MAVlink、USB等通信协议也有校验信息。
    的头像 发表于 03-07 10:56 205次阅读
    浅析MCU通信、存储常用的简单<b class='flag-5'>校验算法</b>

    虹科技术|保障数据传输稳定性:BabyLIN产品的CRC算法实现

    文章将以CRC8校验为例,介绍在BabyLIN产品中如何使用CRC校验算法。 CRC校验原理 在CAN报文中,增加Checksum校验,能够用来检测
    的头像 发表于 01-02 10:45 200次阅读
    虹科技术|保障数据传输稳定性:BabyLIN产品的CRC<b class='flag-5'>算法</b><b class='flag-5'>实现</b>

    简述循环冗余码crc校验方法的工作原理

    的补位 首先,需要将需要进行CRC校验的数据进行补位操作。CRC校验算法通常以二进制的形式工作,因此需要将原始数据转换为二进制。同时,生成多项式也需要进行补位操作,使其与数据的位数相对应。 例如,如果数据为11101,生成多项式为1101,则
    的头像 发表于 12-20 11:27 457次阅读

    CRC校验原理及其软件实现

    电子发烧友网站提供《CRC校验原理及其软件实现.pdf》资料免费下载
    发表于 11-16 10:11 0次下载
    CRC<b class='flag-5'>校验</b>原理及其软件<b class='flag-5'>实现</b>

    常用的校验算法有哪些?

    常用的校验算法有哪些,是不是和通信规约有关。比如MODBUS一般都用CRC16(不确定是不是叫这个)。这些校验算法是之前积累下来的吗。自己也可以定义一个校验算法吧,只要发送端和接收端用同一个
    发表于 11-03 06:50

    什么是奇校验和偶校验?常见的奇偶校验方式有哪些?

    什么是奇校验和偶校验?常见的奇偶校验方式有哪些? 1. 奇偶校验是指在数字通信中采用一种技术对传输的数据进行校验。由于数字信号传输容易受到干
    的头像 发表于 10-17 16:28 7882次阅读

    TSMaster中如何自定义CRC校验算法

    在通讯过程中,用户需要利用CheckSum信号对传输数据用自己规定的算法逻辑进行校验,来看数据在传输过程中是否被更改或传输错误。本文主要介绍TSMaster如何设置自己的CRC算法信号。CRC相关
    的头像 发表于 09-09 08:23 1006次阅读
    TSMaster中如何自定义CRC<b class='flag-5'>校验算法</b>

    如何实现一种基于FPGA的奇偶校验器设计?

    奇偶校验是一种简单、实现代价小的检错方式,常用在数据传输过程中。对于一组并行传输的数据(通常为8比特),可以计算岀它们的奇偶校验位并与其一起传输。
    发表于 09-05 10:38 476次阅读
    如何<b class='flag-5'>实现</b>一种基于FPGA的奇偶<b class='flag-5'>校验</b>器设计?

    串行通信中的波特率、数据位和校验位设置

    当进行串行通信时,波特率、数据位和校验位是必须要设置的参数,以确保发送端和接收端之间的数据传输能够正确进行。
    的头像 发表于 06-29 18:14 4444次阅读

    求一种FPGA实现图像去雾的实现设计方案

    本文详细描述了FPGA实现图像去雾的实现设计方案,采用暗通道先验算法实现,并利用verilog并行执行的特点对算法进行了加速;
    发表于 06-05 17:01 902次阅读
    求一种FPGA<b class='flag-5'>实现</b>图像去雾的<b class='flag-5'>实现</b>设计方案

    单片机中几种常见的校验算法介绍

    CRC是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输
    发表于 06-05 14:25 988次阅读
    单片机中几种常见的<b class='flag-5'>校验算法</b>介绍

    数字设计笔试Verilog手撕代码—累加

    实现累加器的加法器例化的个数。按照原文大佬的设计方法,因为数据连续且加法器的延迟周期是2,使用使用一个实现累加,会有一半的数据丢失。
    的头像 发表于 06-02 16:35 1801次阅读
    数字设计笔试Verilog手撕代码—<b class='flag-5'>累加</b>器

    FPGA奇偶校验的基本原理及实现方法

    在数字电路中,数据的正确性非常重要。为了保证数据的正确性,在传输数据时需要添加一些冗余信息,以便在接收端进行校验。其中一种常用的校验方式是奇偶校验(Parity Check)。本文将介绍奇偶
    的头像 发表于 05-14 14:59 2030次阅读
    FPGA奇偶<b class='flag-5'>校验</b>的基本原理及<b class='flag-5'>实现</b>方法

    虚拟示波器---匿名上位机

    文章目录波形显示效果 协议 帧格式 波形数据的帧格式(灵活帧格式) 根据协议实现发送函数 应用举例波形显示效果 协议 帧格式 和校验计算方法 :从帧头 0xAA 字节开始,一直到 DATA 区结束
    发表于 05-10 11:30 0次下载
    虚拟示波器---匿名上位机

    如何实现AES128-CMAC的算法

    我在 S32K118 硬件上启用了 Csec 模块。上位机需要执行软件AES128-CMAC算法,然后将CMAC值发送给ECU进行校验。但是我不知道如何实现AES128-CMAC,你能给我一些建议吗?
    发表于 05-04 08:06