串口通信中数据的奇偶校验位算法

奇偶校验(附代码实现) 定义 奇偶校验(Parity Check)是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。 简单来说就是: 奇校验:使完整编码(有效位和校验位)中的"1"的个数为奇数个; 偶校验:使完整编码(有效位和校验位)中的"1"的个数为偶 阅读详情
串口通信中数据的奇偶校验位算法
奇偶校验位是一个表示给定位数的二进制数中 1 的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检测码。奇偶校验位有两种类型:偶校验位与奇校验位。如果一组给定数据位中 1 的个数是奇数,那么偶校验位就置为 1,从而使得总的 1 的个数是偶数。如果给定一组数据位中 1 的个数是偶数,那么奇校验位就置为 1,使得总的 1 的个数是奇数。偶校验实际上是循环冗余校验的一个特例,通过多项式 x + 1 得到 1 位 CRC
对数据传输正确性的一种校验方法。在数据传输前附加一位奇校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,为奇数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。例如,需要传输"11001110",数据中含5个"1",所以其奇校验位为"0",同时把"110011100"传输给接收方,接收方收到数据后再一次计算奇偶性,"110011100"中仍然含有5个"1",所以接收方计算出的奇校验位还是"0",与发送方一致,表示在此次传输过程中未发生错误。
大家一定会问,如何计算奇偶性呢,在计算机内有一种特殊的运算它遵守下面的规则:
1+1=0; 1+0=1; 0+1=1; 0+0=0;我们把传送过来的1100111000逐位相加就会得到一个1,应该注意的的,如果在传送中1100111000变成为0000111000,通过上面的运算也将得到1,接收方就会认为传送的数据是正确的,这个判断正确与否的过程称为校验。而使用上面方法进行的校验称为奇校验,奇校验只能判断传送数据中奇数个数据从0变为1或从1变为0的情况,对于传送中偶数个数据发生错误,它就无能为力了。

Odd Parity(奇校验),校核数据完整性的一种方法,一个字节的8个数据位与校验位(parity bit )加起来之和有奇数个1。校验线路在收到数后,通过发生器在校验位填上0或1,以保证和是奇数个1。因此,校验位是0时,数据位中应该有奇数个1;而校验位是1时,数据位应该有偶数个1。如果读取数据时发现与此规则不符,CPU会下令重新传输数据。 奇/偶校验(ECC)是数据传送时采用的一种校正数据错误的一种方式,分为奇校验和偶校验两种。 如果是采用奇校验,在传送每一个字节的时候另外附加一位作为校验位,当实际数据中“1”的个数为偶数的时候,这个校验位就是“1”,否则这个校验位就是“0”,这样就可以保证传送数据满足奇校验的要求。在接收方收到数据时,将按照奇校验的要求检测数据中“1”的个数,如果是奇数,表示传送正确,否则表示传送错误。 同理偶校验的过程和奇校验的过程一样,只是检测数据中“1”的个数为偶数。


====

http://ycjn21c0.blog.163.com/blog/static/136259956201182935253429/

UART中的奇偶校验和粘性奇偶校验(stick parity) 如果数据帧中1的个数为奇数,校验位被设置为0,使得整个数据帧中1的个数仍然为奇数。在粘性奇偶校验模式下,每个数据帧的奇偶校验位都会自动设置为与前一个数据帧的奇偶校验位相同的值。如果数据传输中的某个数据帧的奇偶校验位与前一个数据帧的奇偶校验位不一致,那么就说明数据传输中出现了错误。因此,数据帧2的奇偶校验位也被设置为0。总的来说,粘性奇偶校验位可以确保连续传输的数据帧具有相同的奇偶校验位,从而提高数据传输的可靠性。在粘性奇偶校验模式下,每个数据帧的奇偶校验位自动设置为与前一个数据帧的奇偶校验位相同的值。 阅读详情

相关推荐

校验码——奇偶校验/CRC/海明校验

校验码,是在计算机进行数据传输的过程中,为了提高数据的可靠性设计的,一般是在信息位以外增加校验位来实现,分为多种编码形式。

在路上的左一 4450

奇偶校验通俗易懂

简介:            奇偶校验是奇校验和偶校验的统称,就是在最低位或最高位添加一个校验位,应用于主存储器信息的校验及字节传输的出错校验。 原理:         奇校验: 连同校验位使得所有位上的1相加为奇数         偶校验:连同校验位使得所有位上的1相加为偶数  实例:           原数                奇校验                 

caizhong_946400的博客 1万+

串口通信协议数据接收处理的深度探索与实践

在电子通信领域,串口通信作为一种基础且广泛应用的通信方式,承载着设备间数据交互的重要使命。然而,在实际的串口通信过程中,接收和处理协议数据会面临诸多复杂情况,如断包、脏数据(尤其是首尾脏数据)、多包传输以及多协议并存等问题。有效解决这些问题对于确保串口通信的稳定性、准确性和可靠性至关重要。本文将深入探讨这些问题,并结合 C 语言示例代码给出相应的解决策略。

Jiuri的博客 1684

什么是奇偶校验原理?奇校验、偶校验、校验位(单比特奇偶校验、两维奇偶校验(矩阵校验或交叉奇偶校验))

奇偶校验是一种简单且易于实现的错误检测技术。虽然它不能解决所有的错误情况,但其低成本和实用性使它成为许多通信和存储系统的首选错误检测方法。随着技术的发展,更复杂的错误检测和纠正算法被开发出来,但奇偶校验仍然是计算机科学教育和初级通信系统中的重要组成部分。

Dontla的博客 10万+

Stm32 基于蓝牙的串口通信 详细篇

stm 32 串口通信 蓝牙篇 1. HC-05蓝牙 1.1蓝牙模块使用介绍 蓝牙HC05是主从一体的蓝牙串口模块,简单的说,当蓝牙设备与蓝牙设备配对连接成功后,我们可以忽视蓝牙内部的通信协议,直接将将蓝牙当做串口用。当建立连接,两设备共同使用一通道也就是同一个串口,一个设备发送数据到通道中,另外一个设备便可以接收通道中的数据。 1.2蓝牙模块使用注意 hc-05支持从4800bps~1382...

stm32小白的博客 13万+

Qt6上位机串口通信详解

在Windows系统使用串口

hywing's blog 1902

串口通信的奇偶校验

串口通信中数据的奇偶校验位算法 转载 奇偶校验位是一个表示给定位数的二进制数中 1 的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检测码。奇偶校验位有两种类型:偶校验位与奇校验位。如果一组给定数据位中 1 的个数是奇数,那么偶校验位就置为 1,从而使得总的 1 的个数是偶数。如果给定一组数据位中 1 的个数是偶数,那么奇校验位就置为 1,使得总的 1 的个数是奇数。...

weixin_34273479的博客 3496

C51硬件奇偶校验位高效实现方案

奇偶校验位是串行通信中常用的基础错误检测机制,通过统计数据位中1的个数来判断传输正确性。在8051架构中,硬件寄存器PSW的P标志位能自动生成奇偶校验信息,相比软件算法可大幅提升执行效率。嵌入式开发者通过访问特殊功能寄存器(SFR)可直接获取校验结果,典型应用包括串口通信校验、数据包完整性验证等场景。本文以Keil C51开发环境为例,详细解析如何利用ACC累加器和P标志位实现高性能校验方案,并对比分析硬件寄存器访问与软件计算法的性能差异。

weixin_30808693的博客 350

实现串口通信数据帧打包与解析,串口通信可靠传输,屡试不爽的数据封包与状态机数据解析程序

串口通信数据链路层驱动编写,实现串口通信数据帧封包与状态机数据解析,实现可靠传输。

xhl9434826546的博客 3万+

串口通信基础(二)——传输方式(方向)、错误校验、传输速率与传输距离

一、串口通信简介 串口通信,顾名思义也就是利用串行接口进行通信。串行接口指串口按位(bit)发送和接收字节。尽管比按字节(byte)传输的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。 串口通信中比较重要的参数包括波特率、数据位、停止位及校验位,通讯双方需要约定一致的数据格式才能正常收发数据。串行通讯可以进一步分为单工、半双工和全双工三种。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。它们的主要区别在于其各自的电平范围不相同。 二、串行和并行通信 刚说到串口通

sym_robot的博客 1万+

使用 C# 实现串口通信:上位机与嵌入式设备的数据交互

串口通信是一种通过串行端口(如 RS232、RS485、TTL 等)进行数据传输的方式。数据通过单一的信号线按位顺序传输,通常用于计算机和外部设备之间的远程通信。在嵌入式系统中,串口通信常用于设备之间的数据交换,或通过上位机监控嵌入式设备的状态。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 992

串口通信全解(二):

串口通信全解(二): 前面我介绍了串口通信的基本概念,这次简单描述一下整个串口通信收发数据的过程。 一、串口通信参数 **(1)波特率:**每秒钟传送的bit的个数,越高传输速度越快。 **(2)起始位:**是一个指示位,为数据输入从高电平变为低电平的第一个位,后面发送的是数据位。 **(3)数据位:**通信时需要传输的数据,串口通信一般先传低位。 **(4)奇偶校验位:**粗略验证传送数据是否完整的位。 **(5)停止位:**当一帧数据包括校验位传送完后,电平置高,表示传输完成,路线空闲。 二、器件串口通

Dawn_Meteor的博客 757

LabVIEW串口通信实战教程:上位机与下位机数据交互

本文还有配套的精品资源,点击获取 简介:LabVIEW作为一种图形化编程工具,非常适合开发用于测试、测量和控制的应用程序。本文介绍了一个LabVIEW串口通信实例——“串口助手.vi”,通过它可以作为上位机接收下位机通过串口发送的数据。文章详细解释了LabVIEW中串口通信的关键技术点,包括串口配置、打开和关闭串口、数据读取与写入、错误处理、数据解析、用户界面设计、事件结构...

weixin_42433737的博客 8530

RC522读卡器串口通信调试实践指南

RC522是一种常见的射频识别(RFID)读卡器模块,广泛应用于门禁系统、身份验证和数据采集等领域。它采用MIFARE协议,支持多种卡片,如常见的MIFARE 1K卡、MIFARE 4K卡和MIFARE Ultralight卡等。RC522通过SPI接口与微控制器通信,用户可以通过编程实现对卡片的读写操作。串口通信是一种计算机与外部设备或计算机之间,通过串行数据传输方式交换数据的通信技术。"串行"意味着数据的传输是一比特一比特顺序进行的,相对于并行通信,它只需要一条数据线,就可以实现数据的发送和接收。

weixin_30533301的博客 1536

串口通信:8字节数据接收与发送策略

在早期的计算机系统中,由于硬件接口和传输介质的限制,串行通信因其简单、成本低廉而被广泛采用。它通过一条线路依次传输数据位,实现数据交换。串口通信的方式是异步的,也就是说,数据的发送和接收不需要严格的时间同步。

weixin_35835030的博客 1171

VS2010中实现简单USART串口通信程序

Visual Studio 2010是微软推出的一款全功能的集成开发环境(IDE),支持多种编程语言和平台。它广泛用于Windows、Web和云应用的开发。VS2010提供了丰富的工具集,可以帮助开发者从简单的控制台应用程序到复杂的软件系统进行开发。它的IDE界面包含代码编辑器、设计器、调试器等工具,极大地提高了开发效率。

weixin_36001279的博客 816
上一篇: grep用法详解:grep与正则表达式
下一篇: LPC11C14(Cortex-m0-->ARM7)启动代码分析
Alan0521
博客等级 码龄19年 77粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值