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

字节反射示例

以下代码示例是一种反转或反射一个字节内的位顺序的方法。顺序 b7、b6、b5、b4、b3、b2、b1、b0 被反射为返回位顺序 b0、b1、b2、b3、b4、b5、b6、b7

/**
 * 反转字节的位顺序。
 *
 * \详细信息:以提交的字节的相反顺序重新排列位,
 * 并将字节作为无符号字节返回。必须执行该操作,因为在比较 TX 和 RX 数据时,
 * 总是按照 lsb 优先的顺序从 UART 向外传输数据。
 *
 * \参数 uint8_t u8Byte 是要进行反转的数据字节。
 *
 * \返回 uint8_t u8RevByte。
 */
uint8_t revByte(uint8_t u8Byte)
{
    uint8_t u8i, u8RevByte = 0;        // 从位 0 开始对于字节中的每个位
    for (u8i = 0; u8i < 8; u8i++)
    {
        u8RevByte |= (u8Byte & 0x01);  // 取输入字节的一位并将其存储
                                       //    在新字节中
        u8Byte >>= 1;                  // 获取下一位
        if (u8i < 7) u8RevByte <<= 1;  // 不要移动新字节的最后一位
    }
    return u8RevByte;
}