This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DS160PR810:配置 EEPROM—计算 CRC8校验和

Guru**** 2390935 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1019354/ds160pr810-configuration-eeprom-calculating-crc8-checksum

器件型号:DS160PR810

您好!

我正在通读 SNLA342、描述 CRC-8计算的方式有点令人困惑。 我假设使用的是多项式值0x07、因为文档未指定此值。

使用 SNLA342的表4给出的示例作为参考:

CRC-8输入= 0x10F1811220F2811A02
计算出的 CRC-8 = 0x9C

此校验和值似乎是每个单独 ASCII 字符值的校验和:
CRC8 (0x31 0x30 0x46 0x31 0x38 0x31 0x31 0x32 0x30  0x46 0x32 0x31  0x31 0x41 0x30 0x32)= 0x9C

与每个数据字节的校验和相反:
CRC8 (0x10 0xF1 0x81 0x12 0x20 0xF2 0x81 0x1A 0x02)= 0xC5

(这是否是预期行为?)

第5.2节中的 EEPROM 十六进制文件示例似乎不执行上述两种计算中的任何一种:

CRC-8输入= 0x102B811310278123
计算出的 CRC-8 (如文档中所示)= 0xA6

每个单独 ASCII 字符值的校验和:
CRC8 (0x31 0x30 0x32 0x42 0x38 0x31 0x31 0x33 0x31 0x30 0x32 0x37 0x38 0x31 0x32 0x33)= 0x58

每个数据字节的校验和:
CRC8 (0x10 0x2b 0x81 0x13 0x10 0x27 0x81 0x23)= 0x33

这两个计算值均与文档中写入的值不匹配。

如果有任何有关这方面的指示,将不胜感激。

此致、
km

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Km、

    我们使用 Intel hex 格式计算校验和。 有关更多详细信息、请参阅以下链接:

    https://en.wikipedia.org/wiki/Intel_HEX

    此致、、Nasser

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nasser、

    抱歉、我应该更加明确-我将讨论配置 EEPROM CRC-8校验和(即配置 EEPROM 基本标头的第二个字节)、而不是 Intel hex 2的补码校验和(附加到每个 Intel hex 记录的末尾)。

    此致、
    km

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Km、

    我们应该使用实际字节、而不是 ASCII 值。

    此外、请注意、我们使用 CRC-8、多项式为 X^8 + X^2 + X + 1 (1 0000 0111)。

    此致、、Nasser