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
在一些 CRC 算法中,输入或输出数据均进行反射处理。在这些情况下,字节按相同的顺序输入,但通过反转每个字节的位顺序反射了这些位。这种反射有时用于提高计算效率或降低移位寄存器硬件实现的成本。在此示例中,CRC-8-OneWire 算法被修改为反射输入和输出数据。
从使用 CRC-8-One-Wire 创建的前一个示例开始,创建了一个用于反射数据的 reflect() 函数。图 2-13 中的函数接受定义宽度的值(本例中为一个字节)并反射数据。
reflect() 函数的结果以 0h 开始,并按照输入数据的反转顺序逐步设置位。从输入字节开始,输出结果是对字节的位反射。
新的 crc8OneWireZeroesInOutReflect() 函数具有相同的 CRC 多项式 (x8 + x5 + x4 + 1),如上一节所示,但使用不同的初始值 (0x00)。唯一的其他更改是 reflect() 函数的两个加法,用于计算带有输入和输出反射的 CRC。带有输入和输出反射的 CRC 代码如图 2-14 所示。
调用每个字节时,输入字节反射在函数的第四行中。在 crc8OneWireZeroesInOutReflect() 的末尾,产生的 CRC 也会进行反射处理。您可能不需要输入反射。可以删除第四行字节反射。如果不需要进行输出反射,则会在末尾返回 CRC,而不是反转的 CRC。
带 00h 初始值以及输入和输出反射的 CRC-8-One-Wire 算法的详细信息在表 2-6 中列出。
| 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 计算结果。
图 2-15 0xABC123 的 CRC 结果,CRC-8-OneWire,初始值 0x00,反射的输入和输出数据