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.

[参考译文] DAC8741H:CRC

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1075520/dac8741h-crc

部件号:DAC8741H

你(们)好

正在尝试确定 DAC8741H 的 CRC。 我知道多项式是多项式 x8 + x2 + x + 1。 我认为哪个掩码0x87是正确的?

计算中包括哪些数据字节? 它只是数据字还是包含地址+RW 位? 有人能给出 CRC 值的示例吗?对于一个看似如下的数据包,我应该看到什么:

0x820000

(读取控制寄存器的命令以检查 CRC_EN 位是否已设置)

谢谢

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

    你好,瑞安,

    掩码实际上是0x107。  下面是一个代码片段,您可以使用它来帮助计算 CRC。

    unsigned int calculateCRC(unsigned int addr, unsigned int regdata){
        unsigned int data[] = {addr,  ( (regdata & 0xff00) >> 8 ), regdata & 0xff};
        static unsigned int len = 3;
        unsigned int crc = 0x00;
        size_t i, j;
        for (i = 0; i < len; i++) {
            crc ^= data[i];
            for (j = 0; j < 8; j++) {
                if ((crc & 0x80) != 0)
                    crc = (unsigned int)((crc << 1) ^ 0x107);
                else
                    crc <<= 1;
            }
        }
        return crc & 0xff;
    

    我的计算器显示,您将在值后附加0xDD。

    0x820000DD。

    谢谢,

    保罗

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

    你好,保罗

    谢谢,您是否介意解释为什么面具是16位? 我很困惑,因为多项式的最大顺序是8。

    谢谢

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

    请考虑最大订单是 x^8,可以是256。  值256只能用9位数字表示。 因此多项式为'b 1 0000 0111。

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

    完美,有意义。 非常感谢您的帮助。