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

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

3天内不再提示

串口通信校验方式:奇偶校验、累加和校验

FPGA设计论坛 来源:FPGA设计论坛 作者:FPGA设计论坛 2022-04-12 10:09 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

串口通信校验方式:奇偶校验、累加和校验

利用串口传输数据时,近距离传输还好,远距离传输由于线路长度影响,可能会使信号在传输过程中出现不可预知的错误,为了达到通信的稳定性,在远距离通信时一般要引入一种校验方式来去除干扰。

这里主要介绍几种常见的校验方式,也是我们串口通讯板子上需要添加的几种校验方式。

即奇校验ODD,偶校验EVEN,累加和校验,CRC循环码冗余码校验

方便简单的奇偶校验

奇偶校验需要一位校验位,即使用串口通信的方式2或方式3(8位数据位+1位校验位)。

奇校验(odd parity):让传输的数据(包含校验位)中1的个数为奇数。

即:如果传输字节中1的个数是偶数,则校验位为“1”,奇数相反。

以发送字符:10101010为例

f82feeb6-b9c6-11ec-aa7f-dac502259ad0.jpg

偶校验(even parity):让传输的数据(包含校验位)中1的个数为偶数。

即:如果传输字节中1的个数是偶数,则校验位为“0”,奇数相反。

还是以发送字符:10101010为例

f843e2e0-b9c6-11ec-aa7f-dac502259ad0.jpg

数据和校验位发送给接受方后,接收方再次对数据中1的个数进行计算,如果为奇数则校验通过,表示此次传输过程未发生错误。如果不是奇数,则表示有错误发生,此时接收方可以向发送方发送请求,要求重新发送一遍数据。

优缺点:

奇偶校验的检错率只有50%,因为只有奇数个数据位发生变化能检测到,如果偶数个数据位发生变化则无能为力了╮(╯﹏╰)╭

奇偶校验每传输一个字节都需要加一位校验位,对传输效率影响很大。

奇偶校验只能发现错误,但不能纠正错误,也就是说它只能告诉你出错了,但不能告诉你怎么出错了,一旦发现错误,只好重发。

虽然奇偶校验有很多缺点,但因为其使用起来十分简单,故目前仍被广泛使用。

应用:

如何用编程确定一个字节中“1”个数的奇偶性?我们可以利用二进制数相加的特点:

0+0=0、1+0=1、1+1=0

可以看出,如果我们将一个字节的所有位相加

有奇数个“1”的字节的和为1

有偶数个“1”的字节的和为0

由此即可通过编程完成判断。实际应用中,实现方法很多,但这是相对简单的一种,这里不再赘述。

累加和校验

所谓的累加和校验有很多种,最常见的一种是在每次通信数据包最后都加一个字节的校验数据,这个校验字节里的数据是通信数据包里所有数据的不进位累加和。例如:

f85f7bea-b9c6-11ec-aa7f-dac502259ad0.jpg

接收方接收到数据后同样对一个数据包的数据进行不进位累加和计算,如果累加出的结果与校验位相同的话就认为传输的数据没有错误。

优缺点:

实现起来方便简单,被广泛运用。

检错率一般,例如一个字节多1,一个字节少1,则会出现误判。

和奇偶校验一样,只能发现错误,但不能纠正错误。

另外,累加和校验的数据传输格式可以表示为:通讯数据+校验数据。这与我们之后要说的CRC循环冗余码校验是相同的。

审核编辑 :李倩

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

    关注

    34

    文章

    1657

    浏览量

    57617
  • 串口传输
    +关注

    关注

    0

    文章

    33

    浏览量

    2087

原文标题:FPGA学习-串口通信校验方式:奇偶校验、累加和校验

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    串口通信奇偶校验问题

    求助!请问串口通信模式三带奇偶校验的程序,在串口调试助手上选择奇校验为什么单片机接收不到?多谢各位大神指导!/*模式3 接收*/uchar
    发表于 01-19 17:19

    奇偶校验

    奇偶校验码   奇偶校验码是一种开销最小,能发现数据代码中一位出错情况的编码,常用于存储器读写检查,或ASCII字符、其它类
    发表于 10-13 16:42 5652次阅读

    奇偶校验器,奇偶校验器是什么意思

    奇偶校验器,奇偶校验器是什么意思 奇偶校验器定义 为了系统的可靠性,对于位数
    发表于 03-08 17:32 2530次阅读

    奇偶校验码,奇偶校验码原理是什么?

    奇偶校验码,奇偶校验码原理是什么? 奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的检错码。它是由n-1位信息元和1位
    发表于 03-17 17:39 6.3w次阅读

    奇偶校验器_奇偶校验设计程序

    本内容提供了奇偶校验器_奇偶校验设计的程序代码,希望对大家有帮助
    发表于 11-11 10:04 5994次阅读

    循环冗余校验奇偶校验累加和校验等知识分享

    CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式。在嵌入式软件开发中,经常要用到CRC
    的头像 发表于 11-08 09:31 9330次阅读
    循环冗余<b class='flag-5'>校验</b><b class='flag-5'>奇偶校验</b><b class='flag-5'>累加</b><b class='flag-5'>和校验</b>等知识分享

    stm32串口奇偶校验

    STM32串口通信使用奇偶校验的时候应该设置数据位长度9bit,奇偶校验是硬件完成的,并且stm32用校验位时,数据位要选9位,8位会出现故
    的头像 发表于 07-23 09:26 1.2w次阅读

    stm32 usart奇偶校验如何配置

    stm32 usart奇偶校验如何配置?或许你在stm32 usart奇偶校验过程中会遇到如下一些坑,stm32 usart偶校验错误标志位以及出现偶校验错误,
    的头像 发表于 07-23 09:55 8461次阅读
    stm32 usart<b class='flag-5'>奇偶校验</b>如何配置

    奇偶校验的优缺点及奇偶校验代码实现

    奇偶校验需要一位校验位,即使用串口通信方式2或方式3(8位数据位+1位
    的头像 发表于 06-18 18:14 1.7w次阅读
    <b class='flag-5'>奇偶校验</b>的优缺点及<b class='flag-5'>奇偶校验</b>代码实现

    增强FIFO模式下的奇偶校验

    自昊芯推出专题讲解SCI串口通讯奇偶校验,分为两期讲解,上期主要讲解标准SCI模式下的奇偶校验,本期主要讲解增强FIFO模式下的奇偶校验
    的头像 发表于 11-02 09:30 1655次阅读

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

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

    什么是奇偶校验 奇偶校验的基本原理 奇偶校验电路什么意思

    什么是奇偶校验 奇偶校验的基本原理 奇偶校验电路什么意思  奇偶校验是一种用于检测二进制数据中错误的方法。它的基本原理是在二进制数据的末尾添加一个额外的位,使得数据中二进制 1 的数量
    的头像 发表于 10-17 16:16 5460次阅读

    什么是奇偶校验电路?奇偶校验器是时序逻辑电路吗?

    什么是奇偶校验电路?奇偶校验器是时序逻辑电路吗? 奇偶校验电路是一种数字电路,在数据传输过程中用于检测数据是否发生错误。在每个数据字节(通常是8位)的最高位添加一位(偶校验)或两位(奇
    的头像 发表于 10-17 16:16 4672次阅读

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

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

    奇偶校验和crc校验的区别 CRC校验奇偶校验之间有什么关系?

    奇偶校验和crc校验的区别 CRC校验奇偶校验之间有什么关系? 奇偶校验和 CRC(Cyclic Redundancy Check)
    的头像 发表于 10-17 16:28 4625次阅读