• UART中的奇偶校验和粘性奇偶校验(stick parity)


    1.UART传输

    在这里插入图片描述
    UART传输分为起始位,数据位,奇偶校验位,停止位,我们这里详细介绍一下奇偶校验位。

    2.奇偶校验位

    奇偶校验是一种常见的校验位方法,用于检测数据传输中的错误。
    奇校验:数据位的1的个数加上附加位的1的个数为奇数
    偶校验:数据位的1的个数加上附加位的1的个数为偶数

    举个例子,假设我们有一个UART串口通信系统,每个数据帧包含8位数据和1位奇偶校验位。我们选择奇校验。
    数据帧1:数据为01010101
    数据帧2:数据为11101100
    数据帧3:数据为11001110
    在奇校验模式下,奇偶校验位被设置为使整个数据帧中1的个数(包括校验位)为奇数。如果数据帧中1的个数为偶数,校验位被设置为1,使得整个数据帧中1的个数为奇数;如果数据帧中1的个数为奇数,校验位被设置为0,使得整个数据帧中1的个数仍然为奇数。
    在上面的例子中,我们可以计算每个数据帧中1的个数:
    数据帧1:包含4个1,奇校验位被设置为1
    数据帧2:包含5个1,奇校验位被设置为0
    数据帧3:包含5个1,奇校验位被设置为0
    这样,我们可以通过观察数据帧的奇偶校验位来检测传输中是否存在错误。如果数据传输中的某个数据帧的奇偶校验位与实际数据帧中1的个数不一致,那么就说明数据传输中出现了错误。
    奇偶校验可以帮助我们在串行通信中快速检测错误,提高数据传输的可靠性。

    3.粘性奇偶校验

    Stick parity(粘性奇偶校验位),UART寄存器中的Stick parity位是用来控制是否启用粘性奇偶校验的。当Stick parity位被设置为1时,表示启用粘性奇偶校验;当Stick parity位被设置为0时,表示禁用粘性奇偶校验。

    粘性奇偶校验是一种特殊的奇偶校验模式。在粘性奇偶校验模式下,每个数据帧的奇偶校验位都会自动设置为与前一个数据帧的奇偶校验位相同的值。这样可以确保连续传输的数据帧具有相同的奇偶校验位,从而提高数据传输的可靠性。

    下面是一个例子来说明粘性奇偶校验的工作原理:
    假设我们有一个UART串口通信系统,每个数据帧包含8位数据和1位奇偶校验位。设置Stick parity位为1后,我们发送以下数据序列:
    数据帧1:数据为0b01010101,奇偶校验位为0
    数据帧2:数据为0b11001100,奇偶校验位为0
    数据帧3:数据为0b10101010,奇偶校验位为0
    在粘性奇偶校验模式下,每个数据帧的奇偶校验位自动设置为与前一个数据帧的奇偶校验位相同的值。
    在本例中,我们可以看到数据帧1的奇偶校验位为0。因此,数据帧2的奇偶校验位也被设置为0。同样,数据帧3的奇偶校验位也被设置为0。
    这样,我们可以通过观察数据帧的奇偶校验位来检测传输中是否存在错误。如果数据传输中的某个数据帧的奇偶校验位与前一个数据帧的奇偶校验位不一致,那么就说明数据传输中出现了错误。
    总的来说,粘性奇偶校验位可以确保连续传输的数据帧具有相同的奇偶校验位,从而提高数据传输的可靠性。

  • 相关阅读:
    idea必装的插件 Spring Boot Helper 插件(创建 Spring Boot 项目)
    Python基于Excel数据加以反距离加权空间插值并掩膜图层
    [递归]有理数树
    CentOS 7.9 安装 MySQL 8 配置模板
    SpringCloud—初识微服务
    使用旭日X3派做跟随车(一)——开箱篇
    mojo语言 入门体验 环境安装
    # 如何使用 GitHub Copilot 发送 Tweet(译)
    Burp Suite--Get acquainted for the first time
    c++迷宫小游戏
  • 原文地址:https://blog.csdn.net/qq_44943193/article/details/133763350