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循环冗余码校验是相同的。

审核编辑 :李倩

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

    关注

    32

    文章

    1470

    浏览量

    54470
  • 串口传输
    +关注

    关注

    0

    文章

    28

    浏览量

    1640
收藏 人收藏

    评论

    相关推荐

    串口通信奇偶校验问题

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

    STM32串口通信如何使用奇偶校验

    串口通信如何使用奇偶校验
    发表于 12-10 07:36

    单片机双工通信校验方式

    通信时用到的校验方式 奇偶校验原理:通过计算数据中1的个数是奇数还是偶数来判断数据的正确性。在被校验的数据后加一位校验位或校验字符用作校验码实现校验校验位的生成方法 奇校验:确保整个被传输的数据中1的个数是
    发表于 02-22 15:55 72次下载

    单片机串口分析起始位停止位奇偶校验

    串口解析串口配置1.波特率2.停止位3.数据位4.奇偶校验位比特率:通讯的频率停止位:可以选择1/1.5/2三个选择数据位:可以选择5/6/7/8四个选择奇偶校验位:可以选择奇校验/偶校验/无
    发表于 11-20 10:36 16次下载
    单片机<b>串口</b>分析起始位停止位<b>奇偶校验</b>位

    STM32的UART奇偶校验注意

    奇偶校验注意STM32的UART在初始化时,我们通常用到最多的就是无校验位,1停止位。但是我在项目中也遇到某些芯片通信用的需要奇校验或者偶校验,这里需要特别注意的是STM32中
    发表于 12-28 19:10 14次下载
    STM32的UART<b>奇偶校验</b>注意

    奇偶校验

    奇偶校验码   
    发表于 10-13 16:42 3930次阅读

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

    奇偶校验器,奇偶校验器是什么意思
    发表于 03-08 17:32 1872次阅读

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

    奇偶校验码,奇偶校验码原理是什么?
    发表于 03-17 17:39 6w次阅读

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

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

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

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

    stm32串口奇偶校验

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

    stm32 usart奇偶校验如何配置

    奇偶校验如何配置?或许你在stm32 usart奇偶校验过程中会遇到如下一些坑,stm32 usart偶校验错误标志位以及出现偶校验错误,奇偶校验位包含在数据位中等等这些可能是你将错误的数据放到DR寄存器中导致的。
    的头像 发表于 07-23 09:55 6200次阅读
    stm32 usart<b>奇偶校验</b>如何配置

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

    奇偶校验需要一位校验位,即使用串口通信方式2或方式3(8位数据位+1位校验位)。 奇校验(odd parity) :让传输的数据(包含校验位)中1的个数为奇数。 即:如果传输字节中1的个数是偶数
    的头像 发表于 06-18 18:14 8203次阅读
    <b>奇偶校验</b>的优缺点及<b>奇偶校验</b>代码实现

    增强FIFO模式下的奇偶校验

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

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

    校验。其中一种常用的校验方式奇偶校验(Parity Check)。本文将介绍奇偶校验的基本原理及实现方法,并给出FPGA实现的代码示例。
    的头像 发表于 05-14 14:59 1002次阅读
    FPGA<b>奇偶校验</b>的基本原理及实现方法