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修订历史记录

校验和代码示例

以下代码示例可用于具有校验和数据完整性功能的器件,例如 ADS1259 和 ADS1262。可以通过发送指向数据的指针以及要考虑的数据包的长度来计算校验和。数据字节与常量一起相加以创建校验和字节。然后将计算出的校验和字节与随数据传输的校验和进行比较。字节值应匹配,否则会出错。

/**
 * 计算一系列数据字节的校验和。
 *
 * \详细信息:计算指定长度的
 * 数据数组指向的一系列字节。还加上常数 0x9B。
 *
 * \参数 uint8_t *data 是指向数据数组的指针。
 * \参数 uint32_t length 是数据数组的长度。
 *
 * \返回 uint8_t result。
 */
uint8_t calcChecksum(uint8_t* data, uint32_t length)
{
        uint32_t result = 0;
        uint32_t i;
        for(i = 0; i < length; i++)
            result += data[i];  // 将转换数据字节相加
        result += 0x9B;         // 加上常数
        return (uint8_t) result;
}