ZHCAAO5A June   2020  – August 2021 ADS112C04 , ADS112U04 , ADS114S06 , ADS114S08 , ADS122C04 , ADS122U04 , ADS1235 , ADS1235-Q1 , ADS124S06 , ADS124S08 , ADS1259 , ADS1259-Q1 , ADS125H01 , ADS125H02 , ADS1260 , ADS1260-Q1 , ADS1261 , ADS1262 , ADS1263 , ADS127L01 , ADS131A02 , ADS131A04 , ADS131M04 , ADS131M06 , ADS131M08

 

  1.   商标
  2. 1引言
  3. 2简单校验和
    1. 2.1 校验和代码示例
  4. 3CRC
    1. 3.1 CRC 通用计算
      1. 3.1.1 使用按位异或计算
      2. 3.1.2 使用查找表
        1. 3.1.2.1 表初始化
        2. 3.1.2.2 CRC 计算
      3. 3.1.3 ADS122U04 和 ADS122C04 之间的 CRC 计算差异
        1. 3.1.3.1 字节反射示例
        2. 3.1.3.2 使用字节反射重新组合数据以进行 CRC 计算
  5. 4汉明码
    1. 4.1 汉明码计算
      1. 4.1.1 汉明码计算示例
        1. 4.1.1.1 计算位数以进行奇偶校验和校验和计算
          1. 4.1.1.1.1 计算数据中置 1 的位的数量示例
          2. 4.1.1.1.2 使用查找表计算置 1 的位的数量示例
      2. 4.1.2 验证传输的数据
        1. 4.1.2.1 汉明验证
        2. 4.1.2.2 校验和验证
        3. 4.1.2.3 误差校正
  6. 5总结
  7. 6参考文献
  8. 7修订历史记录

汉明码计算

汉明位被视为与数据交错,但实际传输并未交错。不过,数据始终以相同的方式传输。如前所述,可使用简单的位掩码来评估和计算汉明位,而不是使用对数据进行移位和异或运算的方法。可以通过两种方法来对位进行计数。一种方法是遍历掩码数据并在每次出现“1”时计数一次。这种方法与 CRC 按位运算法类似,相当耗时。第二种方法使用表来直接评估数据,该方法能够以更快的速度确定掩码数据中“1”的数量。

在针对每个汉明位计算“1”的数量后,将所得值与传输数据的相应汉明位进行异或运算。正确的结果为零。如果结果不为零,则通过评估来确定哪个位出错。该过程的特别之处在于能够纠正单个位的错误。出错的位可能是汉明奇偶校验位,也可能是数据中的某个位。每个数据位都由多个汉明奇偶校验位覆盖,因此可以 针对单个位进行纠错。不过,存在一些可能导致多位错误的组合或者与数据相关的汉明位组合,其中数据可能看起来正确,但实际上并不正确。与单独分析汉明位相比,与汉明位一起使用校验和位是一种更全面的解决方案。

为了确定是否存在传输错误,会计算输入数据以确定预期的汉明位。然后使用异或运算将计算出的汉明位以及校验和与接收到的汉明字节进行比较。如果发现错误(计算返回的值大于零),则在发现错误后使用纠错表对位进行纠错。将对 ADS131A0x 器件使用Topic Link Label4.1.2.3 中显示的纠错表。该表适用于为数据位和汉明位传输的完整 SPI 字。不包括 3 个最低有效位(即校验和位和常量零)。在进行位纠错之后,通过计算恢复数据中包含的“1”位的数量来计算数据的校验和。根据计算出的校验和,通过异或运算将两个最低有效位与汉明字节中传输的校验和位进行比较。如果校验和失败,则说明数据中存在多位错误。