ZHDA070 March   2026 ADS112C04 , ADS112U04 , ADS114S06 , ADS114S08 , ADS122C04 , ADS122U04 , ADS124S06 , ADS124S08 , ADS125H01 , ADS125H02 , ADS1260 , ADS1261 , ADS1262 , ADS1263 , ADS127L01 , ADS127L11 , ADS127L14 , ADS127L18 , ADS127L21 , ADS131A02 , ADS131A04 , ADS131M02 , ADS131M02-Q1 , ADS131M03 , ADS131M03-Q1 , ADS131M04 , ADS131M04-Q1 , ADS131M06 , ADS131M06-Q1 , ADS131M08 , ADS131M08-Q1 , ADS7028 , ADS7038 , ADS7066 , ADS7067 , ADS7128 , ADS7138 , AFE78101 , AFE781H1 , AFE78201 , AFE782H1 , AFE88101 , AFE881H1 , AFE88201 , AFE882H1 , DAC60504 , DAC60508 , DAC61401 , DAC61402 , DAC61404 , DAC61408 , DAC61416 , DAC70504 , DAC70508 , DAC71408 , DAC71416 , DAC7750 , DAC7760 , DAC80504 , DAC80508 , DAC81401 , DAC81402 , DAC81404 , DAC81408 , DAC81416 , DAC8741H , DAC8742H , DAC8750 , DAC8760 , DAC8771 , DAC8775 , HDC3020 , HDC3020-Q1 , HDC3021 , HDC3021-Q1 , HDC3022 , HDC3022-Q1 , LMP90077 , LMP90078 , LMP90079 , LMP90080 , LMP90097 , LMP90098 , LMP90099 , LMP90100 , TMAG5173-Q1 , TMP114 , TMP126 , TMP126-Q1 , TMP1826 , TMP1827

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2基于浏览器的 CRC 计算器示例
    1. 2.1 CRC-8-CCITT,0x00 初始值
    2. 2.2 CRC-8-CCITT,0xFF 初始值
    3. 2.3 CRC-8-One-Wire、0xFF 初始值
    4. 2.4 CRC-16-CCITT,0xFFFF 初始值
    5. 2.5 输入和输出数据反射
  6. 3总结
  7. 4参考资料

输入和输出数据反射

在一些 CRC 算法中,输入或输出数据均进行反射处理。在这些情况下,字节按相同的顺序输入,但通过反转每个字节的位顺序反射了这些位。这种反射有时用于提高计算效率或降低移位寄存器硬件实现的成本。在此示例中,CRC-8-OneWire 算法被修改为反射输入和输出数据。

从使用 CRC-8-One-Wire 创建的前一个示例开始,创建了一个用于反射数据的 reflect() 函数。图 2-13 中的函数接受定义宽度的值(本例中为一个字节)并反射数据。

 数据反射函数图 2-13 数据反射函数

reflect() 函数的结果以 0h 开始,并按照输入数据的反转顺序逐步设置位。从输入字节开始,输出结果是对字节的位反射。

新的 crc8OneWireZeroesInOutReflect() 函数具有相同的 CRC 多项式 (x8 + x5 + x4 + 1),如上一节所示,但使用不同的初始值 (0x00)。唯一的其他更改是 reflect() 函数的两个加法,用于计算带有输入和输出反射的 CRC。带有输入和输出反射的 CRC 代码如图 2-14 所示。

 CRC-8-OneWire、初始值 0x00、输入及输出数据反转计算函数图 2-14 CRC-8-OneWire、初始值 0x00、输入及输出数据反转计算函数

调用每个字节时,输入字节反射在函数的第四行中。在 crc8OneWireZeroesInOutReflect() 的末尾,产生的 CRC 也会进行反射处理。您可能不需要输入反射。可以删除第四行字节反射。如果不需要进行输出反射,则会在末尾返回 CRC,而不是反转的 CRC。

带 00h 初始值以及输入和输出反射的 CRC-8-One-Wire 算法的详细信息在表 2-6 中列出。

表 2-6 CRC-8-One-Wire,初始值 0x00,输入和输出均进行反射处理
CRC 多项式 初始值 器件 0xABC123 的 CRC
CRC-8-One-Wire
输入反射,

输出反射

x8 + x5 + x4 + 1 (0x31) 0x00 TMP1826、TMP1827 0x86

与前面的示例一样,如果用户正在更改 JavaScript,则还会更改描述 CRC 函数的正文(包括输入和输出反射)。然后更改 calculateCRC() 函数以调用新的 crc8OneWireZeroesInOutReflect()。

图 2-15 中显示了生成的带有输入和输出反射的 CRC-8-One-Wire 计算结果。

 0xABC123 的 CRC 结果,CRC-8-OneWire,初始值 0x00,反射的输入和输出数据图 2-15 0xABC123 的 CRC 结果,CRC-8-OneWire,初始值 0x00,反射的输入和输出数据