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.

[参考译文] DAC8760:SPI 通信 CRC 验证技术支持

Guru**** 2506455 points
Other Parts Discussed in Thread: DAC8760

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1003646/dac8760-spi-communication-crc-verification-technical-support

主题中讨论的其他器件:DAC8760

大家好、

我们正在调试 DAC8760的功能、这是正常的、现在由于抗干扰的要求、我们希望在 SPI 通信中添加 CRC 校验。

我们使用了以下 CRC8算法、多项式为 x8+x2+x+1。 但是、它不起作用。  我们正在寻求您的支持。 是否有带 CRC 验证的演示 C 程序供我们参考? 谢谢!

unsigned char crc_high_first (unsigned char * ptr、unsigned char len)

  unsigned char i;  

  unsigned char crc=0x00;

 

  while (len-)

  {

    CRC ^=* PTR++;  

    for (i=8;i>0;--i)   

    {  

      IF (CRC 和0x80)

        CRC =(CRC << 1)^ 0x07;

      其他

        CRC =(CRC << 1);

    }

  }

 

  返回(CRC);  

 

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

    您好!


    很抱歉、我们没有用于 CRC 实现的任何示例代码。 但是、这是一个标准 CRC、您可以在线找到大量代码示例。 我确实找到了一篇 E2E 帖子、其中包含指向某些示例代码的链接以及一个计算器:

    https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/748586/dac8760-crc-8-atm-calculation-algorithm

    如果您需要一个示例、这里是对寄存器的写操作、然后是对发送到器件的寄存器的回读:

    写入:
    0x01 0xBB 0x80 0x3A


    阅读:
    0x01 0x00 0x00 0xD6

    在每种情况下、最后一个字节是 CRC 结果。 我使用计算器来验证该值。


    吴约瑟

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

    按照您的示例操作:

    写入:
    0x01 0xBB 0x80 0x3A、DAC 不会相应地设置输出。

    但我还在没有 CRC_Enable 的情况下执行测试、  

    写入:
    0x01 0xBB 0x80、DAC 工作正常。

    我不知道它有什么问题吗?

    我发现与下面相同的问题。 我不知道如何解决它?

    https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/748586/dac8760-crc-8-atm-calculation-algorithm

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

    最小值、

    我今天和明天都不在办公室、因此可能会延迟回复。

    您能否使用示波器并绘制与器件的通信图、以显示与器件的几个事务? 显示了 SCLK、DIN 和 LATCH。

    我希望看到写入设置 CRC、然后写入 0x01 0xBB 0x80 0x3A、只是为了检查。 确保有足够的详细信息、以便我们可以读取位流与 SCLK。 第二个序列可能很难放入一个屏幕、因此您可能需要将其分解为多个快照。

    吴约瑟

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

    如果未打开 CRC、dac8760输出正常!  但在一些嘈杂的场合、会发生数据错误。  因此、我们希望启用 CRC。

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

    当 CRC 打开时、dac8760的输出保持4mA 不变! 报警针脚低电平。

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

    您好、Min、

    感谢您的示波器截图。 约瑟夫明天回到办公室时将查看他们的情况。

    最棒的

    Katlynne Jones

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

    最小值、


    我没有看到设置有任何问题、但可能缺少命令、或者可能有其他问题。 我决定自己试一下、看看是否有任何问题、但我还是让它正常工作。 我只会尝试复制我的序列。 首先、这些是我发送的命令(按顺序、不使用其他命令)。 这些是我使用的四个命令。

    0x57 0x00 0x08 -启用 CRC
    0x55 0x00 0x05 0xFF -将范围设置为4-20mA 输出
    0x55 0x10 0x05 0xA8 -使能输出
    0x01 0x10 0x00 0x3C -将 DAC 设置为1000

    第三条命令后、我的输出变为1.2V、因此我知道我的输出正在获得电流。 我在输出上有一个300Ω Ω 负载。 在执行第四条命令后、我看到输出变为1.5V。

    这里是我的数据线的范围截图。 黄色为/CS (或 LATCH)、蓝色为 DIN、粉色为 SCLK、绿色为 ALARM。

    1。  

    2.  

    3.  

    4.  

    可能有点难看到、但照片是正确的、您应该能够读取发送到器件的数据。 在我的测试中、这四条命令是发送到器件的唯一命令。 我会再次尝试复制序列、以确保其正常工作。


    吴约瑟